PDA

View Full Version : خالی شدن سشن بعد از تغییر صفحه



mohammad-gh
چهارشنبه 12 آذر 1393, 22:39 عصر
با سلام
در یک سایت با وجود اینکه سشن در کل کار درست کار می کند و لاگین یوزر با اون چک میشه
ولی وقتی می خوام ببینم یک کاربر از کجا اومده و سشنی برای اون تعریف کردم اصلا درست کا رنمیکند
و بمحض تغییر صفحه سشن خالی میشه
این هم کدی که برای این گذاشتم


ob_start();
session_start();
$refer_url= $_SERVER['HTTP_REFERER'];

$url2=parse_url($refer_url);
$url3=$url2['host'];
$url3=str_replace("www.","",$url3);
if(empty($_SESSION["moarefsite"])) $_SESSION['moarefsite']=$url3;



واقعا موندم مشکل کجاست که سشن در سایتی درست کار میکنه اما به این که میرسه در هر تغییر صفحه خالیش می کنه و نگه نمیداره
این کد رو تو هر لود صفحه فراخوانی کرده ام
لطفا راهنمایی کنید

desatir7316
چهارشنبه 12 آذر 1393, 23:10 عصر
session ها می تونن مسیری برای ذخیره شدن داشته باشن
مسیری ثابت به session بدید
تست کنید و نتیجه رو اینجا بذارید

***BiDaK***
چهارشنبه 12 آذر 1393, 23:19 عصر
اینو تست کن:

<?php
if (!isset($_SESSION))
{
session_start();
}


if (!empty($_SERVER['HTTP_REFERER']))
{
$refer_url = $_SERVER['HTTP_REFERER'];
$url2 = parse_url($refer_url);
$url3 = $url2['host'];
$url3 = str_replace("www.", "", $url3);
$_SESSION['moarefsite'] = $url3;
echo $_SESSION['moarefsite'];
}

mohammad-gh
پنج شنبه 13 آذر 1393, 17:36 عصر
مسیر رو جطوری به سشن بدم برای ذخیره شدن

desatir7316
پنج شنبه 13 آذر 1393, 18:05 عصر
کدی رو که نوشتم، گشتم توی آرشیو هام پیدا نشد که از گذاشتنش اطمینان داشته باشم
ولی توی نت یه سرچ بزنید و تست کنید سریع پیدا می کنید، چیز خاصی نیست

H:Shojaei
پنج شنبه 13 آذر 1393, 22:29 عصر
مسیر رو جطوری به سشن بدم برای ذخیره شدن
واسه چی لقمه رو دور سرتون میخواید بچرخونید اول ببینید مشکل چیه بعد دنبال راهکار بگردید حالا یا ذخیره تو یه جای ثابت باشه یا هر چیزی...
مشکل شما اینه که بدون اعتبار سنجی همون متقیر سرور HTTP_REFERER مقدارش رو داخل سشن میذارید...
وقتی یه نفر از یه جایی میاد این کار میکنه ولی وقتی پیج رفرش میشه کاربر از کجا اومده؟ اصلا از جایی نیومده از همون پیج فقط رفرش کرده پس مقداری تو این متغیر قرار نمیگیره...
کد دوستمون ***BiDaK*** جواب مشکل شماست...

mohammad-gh
پنج شنبه 13 آذر 1393, 23:33 عصر
مسیر ذخیره رو پرسیدم چون جواب BiDaK , جواب من نبود
من مشکلم رو دوباره میگم
وقتی از یک سایت دیگر کاربر به سایت میاد با $_SERVER['HTTP_REFERER'] به خوبی نشون داده میشه از کدوم سایت اومده و با $_SESSION['moarefsite']=$url3; بالاخره در سشن مربوط ثبت میشه
اما همینکه کاربر یکی از صفحات دیگر سایت رو میزنه چون سشن خالی میشه دوباره میاد سایتی که از اونجا اومده رو میگذاره تو سشن که اینبار اسم سایت خود سایت است (چون اط صفحه قبلی اومده)
پس می بینید که مشکل من HTTP_REFERER نیست که براش شرط بزارم
جون HTTP_REFERER در هر حالتی صفحه قبل خودش را کاربر از اونجا اومده رو نشون میده و مشکل تو خالی شدن سشن معرف است که چون خالی میشه شرط اینکه اگر خالی نباشد سشن ثبت شود اجرا می شود و سشن دوباره ثبت میشه
جالب این هست که من همسن کد رو تو چند تا سایت اجرا کرده ام و درست بود ولی تو این سایت درست در نماید

mohammad-gh
شنبه 15 آذر 1393, 06:12 صبح
خالی شدن سشن در هر رفرش صفحه تا حالا برای کسی پیش نیومده

MMSHFE
شنبه 15 آذر 1393, 10:31 صبح
توی صفحات مختلف session_id رو چاپ کنید ببینید اگه تغییر میکنه، به پشتیبانی هاستینگ خودتون اطلاع بدین. یکی دو مورد دیدم که هاست ها (ایرانی بودن) این مشکل رو داشتن و توی هر صفحه session_id تغییر میکرد و درنتیجه سشن قبلی معتبر نبود (این موضوع با session_regenerate_id که خودتون صدا میزنید فرق میکنه).

رضا قربانی
شنبه 15 آذر 1393, 12:47 عصر
شاید این کمکت کنه :
http://barnamenevis.org/showthread.php?368272-%DB%8C%DA%A9-%D9%86%DA%A9%D8%AA%D9%87-%D9%85%D9%87%D9%85-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-session