فرض بر اینه که شما با لاراول کار میکنید!!!!
اینطوری میتونید لاگین بودن کاربر رو چک کنید:
Auth::check()
و اینطوری میتونید اطلاعات کاربر لاگین رو بگیرید:
Auth::user()
سلام ، اگر با php خام نوشتید و از فریم ورک استفاده نکردید ، بستگی به نوع کد زدتون داره من مثلا یک سشن یوزر ست میکنم و داخل جدول users اضافه میکنم و واسه اینکه چک کنم ببینم لاگینه یانه
دو شرط چک میشه اول اینک اصلا سشنی استارت شده منظورم سشن یوزر هست ؟ و اگر استارت شده آیا داخل جدولusers هست؟ اگر هست چون سشن یکتا هست و فقط منحصر به یک یوزره بله لاگین هست
سلام
من برای بررسی لاگین کاربر هام از سشن استفاده میکنم و وقتی وارد میشه چک میکنه آیا نام کاربری شخص در جدول کاربران هست یا نه اگه بود که هیچی اگه نبود لاگین نیستش و حالا هر کار دیگه ای که بخواین میتونید انجام بدین.
@eniack @kuroshparsi11228 @hesammousavi
با عرض سلام خدمت دوستان گرامی من خودم مدنظرم این هست که در همون جدولی که نام یوزر و پسوردش هست یه مقدار بولین بزارم و اگر لوگین کرد اون رو ترو کنم و مقدار دیفالت رو فالس بزارم منتها دوتا مشکل دارم
۱-چجوری این سشن رو زمان دار کنم ؟
۲- خب اینجا چجوری باید تشخیص بدم که کاربر همون کاربریه که لوگین کرده چون وقتی مقدارش ترو بشه بقیه هم که صفحه رو رفرش کنن براشون ترو هست فک کنم بشه با بررسی ای پی و مطابقت داشتن اون بشه این کار رو کرد اگر میشه یه راهنمایی در این زمینه کنین تشکر
این کار اشتباس ، سشن وقتی مرورگر بسته بشه از بین میره اگ توی کوکی سیو کنی لاگین میمونی ، از همین روش سشن استفاده کنید
ببینید سناریو اینه
شما موقع لاگین اگر پسورد و نام کاربری صحیح بود یک سشن با حروف تصادفی ست میکنی واسش و داخل دیتابیس ذخیره میکنی اینجوری
$token = hash("sha256", $name->username . "#" . $name->password . date("YmdHis") . "3pu4098eygriuio43y8");
$stmt = $pdo_panel->prepare("UPDATE users SET token = :token WHERE id = :id");
$stmt->bindParam(":token", $token);
$stmt->bindParam(":id", $name->id);
if ($stmt->execute()) {
if ($stmt->rowCount() == 1) {
$_SESSION["token"] = $token;
}
}
بعد واسه چک کردن اینک آیا کسی لاگینه میای چک میکنی که ایا سشنی با اسم token ست شده؟اگر ست شده آیا داخل دیتابیس هست؟
اگر هست نام کاربریشو بردار
$token = $_SESSION["token"]
if (isset($_SESSION["token"])) {
$stmt = $pdo_panel->prepare("SELECT * FROM users WHERE token = :token");
$stmt->bindParam(":token", $token);
if ($stmt->execute()) {
if ($stmt->rowCount() == 1) {
$user = $stmt->fetch(PDO::FETCH_OBJ);
$name = htmlspecialchars($user->username);
}
}
}
دوست عزیز این کار استاندارد نیست شما باید از کوکی یا سشن استفاده کنید که سشن وقتی مرورگر بسته بشه خودش حذف میشه ولی اگه میخواین از سمت سرور متوجه بشین که کدوم کاربر ها لاگین هستن میتونید یه گزینه به جدول کاربران اضافه کنید که میگه کاربر لاگین هست یا نیست که خب اگه با سشن انجام بدین و کاربر مرورگر رو ببنده دیگه نمیشه متوجه شد که لاگین نیست مگه اینکه سوکت نویسی استفاده کنید البته اگه گزینه خروج از حساب رو بذارید کاربر که خارج بشه سشن حذف میشه و اون گزینه توی جدول هم تغییر میکنه که برای این بهتره از کوکی استفاده کنید که خیلی بهتره .
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟