PDA

View Full Version : سوال: مشکل عجیب در سشن



Mohammad-tashi
دوشنبه 04 آبان 1394, 17:17 عصر
باسلام
الان که متن پایین سوال نیس
وسوال اینه که چرا بعد از رفرش صفحه سشن پاک میشه؟

فقطم در قسمت سبد خرید این اتفاق میفته و در قسمت مدیریت وقتی سشن ست میشه دیگه هست هرچقدرم رفرش کنی

ممنون میشم دوستان راهنمایی کنند ./

دوستان
من روی لوکال یک سایت ساختم و قسمت لاگینش درست کار میکنه
اما الان آوردمش روی هاست
بدون گرفتن یوزر و پس وارد میشه
حتی با کلیک روی دکمه خروج (که با گت دستور خروج رو میفرسته هم خارج نمیشه از مدیریت)
چرا؟

اینم کد :


<?php
//شروع یک نشست
session_start();

if ( (isset($_GET['logout'])) && ($_GET['logout'] == "true") )
{
unset ($_SESSION['username']);
header ("Location: login.php");


}

//بررسی تنظیم شدن یا نشدن متغیرهای سشن
if (!isset($_SESSION['username']) || !isset($_SESSION['password'])){
//در صورتی که متغیرهای سشن تنظیم نشده باشند، کاربر مجاز به دیدن ادامه صفحه نیست و او را به صفحه اصلی منتقل می کنیم
header("location:login.php");
}
elseif(!$_SESSION['start'])
{
$_SESSION['start']=time();
}
else{
$time_now=time();
if($time_now > $_SESSION['end'])
{
unset($_SERVER['username']);
header("location:login.php?timeout");
}
}
?>

Mohammad-tashi
دوشنبه 04 آبان 1394, 22:23 عصر
location رو هم با L بزرگ نوشتم
بازم تغییری نکرد(توی سرچ نوشته بود شاید مال این باشه)
البته مثلا توی قسمت های دیگه هم همین مشکل هست
مثلا من در صفحه اصلی فروشگاه دارم .و با کلیک روی دکمه خرید آیدی اون توی یک سشن ذخیره میشه....اما میرم صفحه بعد (نمایش فاکتور) که قرار بیاد همون آیدی ها رو باز کنه و محصول و نشون بده هیچی نشون نمیده(صفحه رو نشون میده اما قسمتی ک محصولات باید لود بشه خالیه)

یک مشکل دیگه هم اینه وقتی روی دکمه خرید کلیک کنید با متد post آیدی محصول ارسال میشه به همین صفحه و داخل سشن باید بره ....اما وقتی کلیک میکنی میره داخل سبد اما روی یک کالا دیگه کلیک میکنی بجای اینکه توی سبد بشه 2تا محصول همون محصولی که تازه روی خرید کلیک کردم هست و قبلیه پاک شده....

مشکل چیه؟

pejman_view
دوشنبه 04 آبان 1394, 23:13 عصر
با سلام

برای unset کردن session مانند زیر عمل کن


unset ($_SESSION);
session_destroy();


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

H:Shojaei
دوشنبه 04 آبان 1394, 23:17 عصر
من چنین مشکلی اینجا (http://barnamenevis.org/showthread.php?510125-%DA%86%D8%B1%D8%A7-%DA%A9%D9%88%DA%A9%DB%8C-%D9%87%D8%A7-%D8%AA%D9%88-ubuntu-%D8%A7%D8%B2-%D8%A8%DB%8C%D9%86-%D9%86%D9%85%DB%8C%D8%B1%D9%86-%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA%DB%8C-%DA%86%DB%8C%D8%B2%DB%8C-%D8%AF%D8%A7%D8%B1%D9%87!%D8%9F)داشتم البته با کوکی و خود به خود رفع شد!! نفهمیدم هم مال چی بود... جالبه حتی ریستارت میکردم چندین بار ولی رفع نشد روز بعد که اومدم مشکل وجود نداشت!! البته شاید هم مشکل شما فرق کنه و ربطی به این موضوع نداشته باشه!

Mohammad-tashi
سه شنبه 05 آبان 1394, 12:14 عصر
چالبه منم الان تست میکنم خیلی از قسمت ها درست شده.....؟چرا ؟ یهو ؟

Mohammad-tashi
سه شنبه 05 آبان 1394, 12:34 عصر
دوستان من باز چک کردم برگشت به همون حالت قبل با رفرش شدن صفحه سشن خالی میشه
و فقط مقدار جدید ک اضافه شده ست میشه
البته احتمال داره مشکل از مرورگر یا سیستم منم باشه
آخه همین سایت برنامه نویسم بعضی موقع ها چند دقیقه بعد لاگین . منو میندازه بیرون (باید دوباره وارد شم)
این لینک سایته (http://para-shops.com)
میشه یک نگاهی بیندازید؟ مثلا چندبار روی دکمه خرید محصولات کلیک نمایید ببیند سبد خرید پر میشه یا نه

Mohammad-tashi
سه شنبه 05 آبان 1394, 14:15 عصر
بعد از چند مرحله تست متوجه شدم که با مرورگر اینترنت اکسپلور و کروم مشکلی نداره و سایت خوب اجرا میشه
حالا نمیدونم این برای اینه تاحالا بااین مرورگر ها سایتو باز نکردم یا چیز دیگری ....

این لینک سایته (http://para-shops.com)
میشه یک نگاهی بیندازید؟ مثلا چندبار روی دکمه خرید محصولات کلیک نمایید ببیند سبد خرید پر میشه یا نه

Mohammad-tashi
سه شنبه 05 آبان 1394, 17:41 عصر
ببخشید من هی پیام میدم
آخه هر دفعه یک چیز جدید متوجه میشم
الان متوجه شدم که با کروم و اینترنت اکسپلور هم مشکل داره اما وقتی یکبار لاگین میکنم توی مدیریت درست میشه .... مشکل از چیه؟

Mohammad-tashi
سه شنبه 05 آبان 1394, 17:58 عصر
اینم کد اون قسمت از صفحه اصلی که درباره سبد خریده



<?php





session_start();

if(isset($_POST['pid'])){



$_SESSION['total_elements'][]=$_POST['pid'];
$names_length=count($_SESSION['total_elements']);




}





?>


اینم فایل سبد :





<?php

if(isset($_GET["refresh"])){

if($_GET['refresh']==1){ session_unset();

header('Location: index.php');}



}



if(isset($_SESSION['total_elements']))

{

$names_length=count($_SESSION['total_elements']);

if($names_length>0){





$names_length=count($_SESSION['total_elements']);



for($x=0;$x<$names_length;$x++){

$idfs=$_SESSION['total_elements'][$x];



$sqlm = "SELECT * FROM shopp where p_ID=$idfs;";

$result = $con->query($sqlm);

?>

<?php

while($row = $result->fetch_assoc()) {



echo '

<table width="200" border="0">

<tr>

<td width="89">'.$row['p_title'].'</td>

<td width="101" rowspan="2"><img src="admin12a/'.$row['p_img'].'" width="50px" height="50px"</td>

</tr>

<tr>

<td height="38">'.$row['p_price'].'</td>

</tr>

</table>







';}











}



}}//ifif

?>

<a href="index.php?refresh=1">پاک سازی سبد خرید</a>

<br />

<a href="factor.php?ok=1">ثبت نهایی سفارش</a>










شاید کد های من مشکل داشته باشه

H:Shojaei
سه شنبه 05 آبان 1394, 20:09 عصر
وقتی یه کالا جدید به سبد اضافه میشه مقدار names_length رو همونجا echo کنید ببینید چی میشه!؟
و همچنین print_r هم بگیرید از سشن سبد همونجا ببینید اضافه میشه...
من الان تست کردم کلا مقداری داخل سشن های سایت نبود و مقدار دهی نمیشدن!!
خطاها رو نمایش بدین با error_display ببینید خطایی ندارید تو هاست!؟

Mohammad-tashi
چهارشنبه 06 آبان 1394, 08:11 صبح
وقتی یه کالا جدید به سبد اضافه میشه مقدار names_length رو همونجا echo کنید ببینید چی میشه!؟
و همچنین print_r هم بگیرید از سشن سبد همونجا ببینید اضافه میشه...
من الان تست کردم کلا مقداری داخل سشن های سایت نبود و مقدار دهی نمیشدن!!
خطاها رو نمایش بدین با error_display ببینید خطایی ندارید تو هاست!؟

سلام
این کد رو در قسمت اضافه کردن به سشن محصولات اضافه کردم .


echo "$names_length";
echo'<br/>';
print_r ($_SESSION['total_elements']);

خروجی چاپ شده اینه

1
Array ( [0] => 7
و هر بار روی هر محصولی کلیک کنی (رفرش صفحه ) سشن پاک میشه و دوباره ست میشه و خانه صفرم آرایه آیدی آخرین محصول رو نگه میداره....

نمایش ارر رو هم با کد
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'On');


فعال کردم
اما هیچ ارری نمیده

H:Shojaei
چهارشنبه 06 آبان 1394, 09:01 صبح
این مشکل رو فکر کنم تو پروژه یکی از بچه ها دیده بودم با این که نباید چنین اتفاقی بیافته میافته!
یه سشن کانتر هم در نظر بگیرید و با هر اضافه کردن به سبد خرید اول اونو یکی اضافه کنید و بعد بگید
$_SESSION['totla_elements'][$_SESSION['backetConter']]

Mohammad-tashi
چهارشنبه 06 آبان 1394, 09:29 صبح
این مشکل رو فکر کنم تو پروژه یکی از بچه ها دیده بودم با این که نباید چنین اتفاقی بیافته میافته!
یه سشن کانتر هم در نظر بگیرید و با هر اضافه کردن به سبد خرید اول اونو یکی اضافه کنید و بعد بگید
$_SESSION['totla_elements'][$_SESSION['backetConter']]

ببخشید متوجه نشدم ؟

H:Shojaei
چهارشنبه 06 آبان 1394, 09:41 صبح
<?php

session_start();

if(isset($_POST['pid'])){
if(!isset($_SESSION['counter'])
$_SESSION['counter']=0;
else
$_SESSION['counter']++;



$_SESSION['total_elements'][$_SESSION['counter']]=$_POST['pid'];
$names_length=count($_SESSION['total_elements']);
}
?>

Mohammad-tashi
چهارشنبه 06 آبان 1394, 09:58 صبح
<?php

session_start();

if(isset($_POST['pid'])){
if(!isset($_SESSION['counter'])
$_SESSION['counter']=0;
else
$_SESSION['counter']++;



$_SESSION['total_elements'][$_SESSION['counter']]=$_POST['pid'];
$names_length=count($_SESSION['total_elements']);
}
?>

این کد :



<?php


ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'On');



session_start();

if(isset($_POST['pid'])){
if(!isset($_SESSION['counter'])
$_SESSION['counter']=0;
else
$_SESSION['counter']++;



$_SESSION['total_elements'][$_SESSION['counter']]=$_POST['pid'];
$names_length=count($_SESSION['total_elements']);

}




?>

صفحه سفید نشون میده و هیچ خطایی هم نمیده

Mohammad-tashi
چهارشنبه 06 آبان 1394, 10:55 صبح
ولی به نظرم هرچی هست
درباره رفرش شدن
با رفرش سشن داره خالی میشه
اما توی مدیریت اصن اینجوری نیست
سشن یوزر ک ست میشه با رفرش پاک نمیشه

H:Shojaei
چهارشنبه 06 آبان 1394, 11:16 صبح
فایلهای مربوطه هرچی که اینکلود میشه تو این صفحاتی که مربوط به سبر خریده از پروژه رو اگر امکانش هست زیپ کنید و بذارید یا خصوصی بفرستید تا بررسی بشه...

Mohammad-tashi
چهارشنبه 06 آبان 1394, 11:23 صبح
فایل
index
bas>>لیست محصولات رو بر اساس آیدی ها درمیاره
shop>>لیست محصولات و دکمه خرید(فرمی که آیدی رو میفرسته)

H:Shojaei
چهارشنبه 06 آبان 1394, 11:31 صبح
توی bas.php اولش session_start(); نکردید از این نیست!؟
-----------ویرایش
البته ببخشید هواسم نبود include شده تو ایندکس...

Mohammad-tashi
چهارشنبه 06 آبان 1394, 12:45 عصر
بله اینکلود شده
چرا روی لوکال کار میکنه و روی هاست نه ؟
چه تفاوتی بین هاست و لوکال است؟

رضا قربانی
چهارشنبه 06 آبان 1394, 12:58 عصر
فکر می کنم مشکل شما این باشه : 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&highlight=%D8%B3%DB%8C%D8%B4%D9%86

وقتی روی هاست سایتت رو گذاشتی اینو بذار اول صفحه با تزریق نام سایت خودت


session_set_cookie_params(0, '/', '.yoursite.com');session_start();

Mohammad-tashi
چهارشنبه 06 آبان 1394, 13:50 عصر
فکر می کنم مشکل شما این باشه : 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&highlight=%D8%B3%DB%8C%D8%B4%D9%86

وقتی روی هاست سایتت رو گذاشتی اینو بذار اول صفحه با تزریق نام سایت خودت


session_set_cookie_params(0, '/', '.yoursite.com');session_start();


الان دیگه با کلیک روی خرید
آیدی ک قراربود پست بشه هم نمیشه
من میرم اونو چک کنم

ضمنا الان هاست و نگاه میکردم یک فایل error_log ساخته
من سر در نیاوردم
اما میذارم ایجا دوستان نگاه کنند ببین مشکل چیه...شاید اون تو چیزی باشه

Mohammad-tashi
چهارشنبه 06 آبان 1394, 14:10 عصر
دوستان مشکل پست نشدن حل شد(فایل های قبلی و ریپلیس کردم)

کد:
session_set_cookie_params(0, '/', '.yoursite.com');session_start();
رو هم گذاشتمبازم همونه محصول ک میخاد اضافه بشه محصول قبلی پاک میشه

Mohammad-tashi
چهارشنبه 06 آبان 1394, 18:26 عصر
دوستان امکان داره برای اینکه پردازش ها در صفحات مختلف انجام میشه باشه؟
مثلا یک فایل سبد جدا دارم .یه ایندکس ک چیزهایی از سبد رو داره و .....