PDA

View Full Version : مبتدی: کار نکردن درست SESSION



navid3d_69
چهارشنبه 18 آبان 1390, 12:17 عصر
سلام من موقعه logout با این دستور

unset($_SESSION['SESS_MEMBER_ID']);

پاک می کنم ولی انگار پاک نمیشه روش بهتری کسی بلده برای اینکه پاک بشه؟

alismith
چهارشنبه 18 آبان 1390, 14:01 عصر
سلام

این تابع می توانه مشکل شما رو حل کنه دوست عزیز

http://php.net/manual/en/function.session-destroy.php




موفق باشید

رضا قربانی
چهارشنبه 18 آبان 1390, 18:26 عصر
با این دستور می تونی سیشن رو پاک کنید :

session_destroy();

blackmak
چهارشنبه 18 آبان 1390, 23:51 عصر
به نظر من session رو مساوی null بذار و از session_destroy استفاده نکن چون ممکنه تو یه پروژه فقط بخوای یه session خاصو پاک کنی . unset هم جواب میده البته

MMSHFE
پنج شنبه 19 آبان 1390, 08:10 صبح
سلام من موقعه logout با این دستور

unset($_SESSION['SESS_MEMBER_ID']);
پاک می کنم ولی انگار پاک نمیشه روش بهتری کسی بلده برای اینکه پاک بشه؟
با سلام، به نظر من اين مشكل ميتونه چند دليل داشته باشه كه يكيش، اجرا نكردن session_start قبل از unsetكردن متغير Session موردنظر توي صفحه خروج است. دليل ديگه هم ممكنه ذخيره نكردن فايل با كدگذاري UTF-8 without BOM باشه. موفق باشيد.

navid3d_69
جمعه 20 آبان 1390, 08:31 صبح
بازم کار نمی کنه یعنی یوجورایی پاک می کنه ولی نمی دونم بخاطره کش هست یا چیزه دیگه که کار نمی کنه

من بعد از unset کردن اینو گذاشتم ولی اصلا کار نمی کنه

یک چیزه جالب اینه که صفحه logout من وقتی که unset می کنه از توی هد بهش کد ریداکت دادم که بره به صفحه اصلی وقتی میره دوباره session هست ولی وقتی اون کد ریداکت رو بر میدارم خودم دستی بعد از logout میرم صفحه اصلی همه session ها پاک شده




if(!isset($_SESSION['SESS_FIRST_NAME']) || (trim($_SESSION['SESS_FIRST_NAME']) == '')) {

header("location: ../index.php");

}else {

unset($_SESSION['SESS_FIRST_NAME']);
header("location: ../index.php");
}

pejman_view
جمعه 20 آبان 1390, 15:33 عصر
سلام

لطفاً کد زیر را امتحان کنید و نتیجه اش را ببینید:



if(isset($_SESSION['SESS_FIRST_NAME'])) {
unset($_SESSION['SESS_FIRST_NAME']);
header("location: ../index.php");
exit;
}else{
header("location: ../index.php");
exit;
}

MMSHFE
جمعه 20 آبان 1390, 20:17 عصر
سلام

لطفاً کد زیر را امتحان کنید و نتیجه اش را ببینید:



if(isset($_SESSION['SESS_FIRST_NAME'])) {
unset($_SESSION['SESS_FIRST_NAME']);
header("location: ../index.php");
exit;
}else{
header("location: ../index.php");
exit;
}

البته ميشه كد فوق رو يكم خلاصه تر كرد:


if(isset($_SESSION['SESS_FIRST_NAME'])) {
unset($_SESSION['SESS_FIRST_NAME']);
}
header('location: ../index.php');
exit();

حقيقتش چون ديدم قسمتي كه از شرط آوردم بيرون درهرحال اجرا ميشه و فقط دستور unset مربوط به شرط هست، اينطوري خلاصه اش كردم. موفق باشيد.

navid3d_69
شنبه 21 آبان 1390, 14:47 عصر
البته ميشه كد فوق رو يكم خلاصه تر كرد:


if(isset($_SESSION['SESS_FIRST_NAME'])) {
unset($_SESSION['SESS_FIRST_NAME']);
}
header('location: ../index.php');
exit();

حقيقتش چون ديدم قسمتي كه از شرط آوردم بيرون درهرحال اجرا ميشه و فقط دستور unset مربوط به شرط هست، اينطوري خلاصه اش كردم. موفق باشيد.




نمیشه هر کاری که میکنم مقدار session پاک نمیشه از خیلی از راه ها استفاده کردم ولی نشد اگر امکانش هست من برای شما ایمیل کنم شما یه تست بکنید

pejman_view
شنبه 21 آبان 1390, 15:35 عصر
سلام دوست من،

نگاه کنید Session با unset کردن خود به خود نابود نمی شود فقط آرایه ایی که در Session هست نابود میشه.
به مثال من توجه کنید:


session_start();
$_SESSION['userid'] = 1;
$_SESSION['GMT'] = +330

من تو کد بالا یک session ایجاد کردم و داخل آرایه سشن دو متغیر userid و GMT ذخیره کردم، User_ID رو فرضاً برای چک کردن لاگین گذاشتم و GMT رو برای تنظیم ساعت نمایش داده شده در سایت.
حالا من می خوام کاربر وقتی از سایت خروج می کنه تا زمانی که سایت رو داره نگاه می کنه منطقه ساعتش تغییر نکنه.
من میام برای نابود کردن userid و خروج کاربر این کار رو می کنم:


unset($_SESSION['userid']);

پس GMT بقوت خود باقی خواهد ماند. اگر این کار رو انجام بدید 100% کدتون جواب می ده اما این کار رو کردید و کد جواب نداد ممکن چند دلیل داشته باشه که مهمترینش غلط املایی و عدم رعایت کوچک و بزرگی کاراکترها یعنی شما session ایجاد کردید فرضاً با نام userid حالا که می خواهید نابودش کنید user_id می نویسید.
اما رایج ترینش اینه :
session_start();
حتماً بایستی session رو استارت کنید و سپس نابودش کنید حتی در لاگ اوت پیج