مشکل در چک کردن session (پروژه note بخش 2)
سلام دوستان
در فایل done.php (از این فایل جهت تغییر وضعیت یادداشت به انجام شده یا انجام نشده استفاده می شود) برای اینکه مطمئن بشم که کاربر هنوز توی سیستمه از شرط زیر استفاده کردم :
if (!isset($_GET['id']) && !isset($_SESSION['user_id'])) {
exit;
} else {
$noteId = $_GET['id'];
$userId = $_SESSION['user_id'];
}
توی این شرط اگر SESSION['user_id']
و GET['id']
وجود نداشته باشه از فایل خارج میشه ،ولی در هنگام اجرا خطا میده!
متن خطا :
Query: UPDATE x_note SET done = NOT done WHERE note_id = 4 AND user_id = failed due to You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
ولی وقتی کد بالا رو به صورت زیر تغییر میدم مشکل حل میشه و هیچ خطایی چاپ نمیشه :
if (isset($_GET['id']) && isset($_SESSION['user_id'])) {
$noteId = $_GET['id'];
$userId = $_SESSION['user_id'];
} else {
exit;
}
در اصل این 2 تا تکه کد از لحاظ منطق یکسان اند، ولی در کد اولی ابتدا نبودن چک میشود ولی در کد دوم اول بودن چک میشود.
ممنون میشم یکی از دوستان و اساتید راهنمایی کنند.

تو کد اولی شما گفتین اگه id ست نشده بود و اگه user_id ست نشده بود بیاد exit کنه . در شرط هایی که از and یا && استفاده میشه اگه شرط اولی false (یعنی!isset($_GET['id']))بشه دیگه شرط بعدی رو چک نمیکنه و میره سراغ else و حالا شما تو else گفتین که مقدار noteId بشه id get و مقدار userId بشه مقدار user_id سشن . خب الان ما به اینجا میرسیم شاید کاربر مقدار get رو ست کرده بود ولی تو سایت لاگین نکرده بود و user_id تو سشن براش ست نشده بود پس شرط اول فالس میشه و میاد سراغ else مقدار noteId همونی که ست کرده بود هست ومقدار userId خالی میشه چون اصن کاربر لاگین نکرده و user_id سشن براش ست نشده پس مقدار خالی براش گذاشته میشه و ما خطای sql میبینیم
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .