مشکل با session

mehrangol

Member
سلام
من یه فایل javascript دارم که به این ترتیبه:

HTML:
document.write('<script language="JavaScript" src="2.php"></script>');
document.write('<script language="JavaScript" src="2.php"></script>');
و این فایل 2.php می خوام دفعه اول یه کاری انجام بده و دفعه دوم یه کار دیگه.
برای این کار از این کد استفاده کردم.

PHP:
session_start();

$allowc=$_SESSION['allowc'];

if($allowc==""){

	$_SESSION['allowc']="false";
	echo "document.write('allow contiunue<br>');";
	
}else{

	echo "document.write('Not allow contiunue<br>');";
	
}

اما این کد این کار رو انجام نمی ده و مشکل اینجاست که اگر فایل بالا رو یک بار اجرا کنی یا بعبارت دیگه فایل 2.php رو دوبار اجرا کنی جواب هر دو یکی هست ولی اگه دفعه دوم فایل بالا رو اجرا کنی جواب ها برعکس می شن؟

جواب دفعه اول:

کد:
allow contiunue
allow contiunue


جواب دفعه دوم:

کد:
Not allow contiunue
Not allow contiunue

می خواستم بدونم مشکل چیه؟ و چجوری می تونم این مشکلو درست کنم.

با تشکر مهران
 

tabib_m

Member
احتمالا علتش این باشه که ، قبل از این که سشن در فراخوانی اول ذخیره بشه، فراخوانی دوم انجام میشه. بنابراین برای فراخوانی دوم هم هنوز سشن ثبت نشده و نتیجه یکسان میشه. و وقتی که دوباره شما مثلا صفحه رو رفرش کنی، از اونجایی که دیگه سشن ذخیره شده ، نتیجه متفاوت خواهد شد.

حالا راه حل منطقیش اینه که شما باید بعد از دریافت خروجی کامل فراخوانی اول، فراخوانی دوم رو انجام بدی. متأسفانه در قالب کد نمیدونم چیکار باید کرد. (هر چی باشه فکر کنم باید به وسیله ی javascript انجام بشه)

موفق باشید.
 

mehrangol

Member
tabib_m جان ممنونم که جوابمو دادی اما من یه امتحان ساده کردم و اون این بود کد فایل 2.php رو با این کد جایگزین کردم.

PHP:
session_start();

$allowc=$_SESSION['allowc'];


if($allowc==""){

	$_SESSION['allowc']="false";
	echo "document.write('allow contiunue<br>');";
	echo "document.write('".$_SESSION['allowc']."<br>');";
	
}else{

	echo "document.write('Not allow contiunue<br>');";
	$_SESSION['allowc']="";
	echo "document.write('".$_SESSION['allowc']."<br>');";
}

و جواب هام این بود:

کد:
allow contiunue
false
allow contiunue
false

و همین طور که می بینید مقدار ذخیره شده ی سشنو نشان می ده.

هر چی باشه فکر کنم باید به وسیله ی javascript انجام بشه

اما متاسفانه من زیاد توی javascript وارد نیستم.اما با کد پی اچ پی نمی شه این کدو درست کرد.
با تشکر مهران
 

super_php

Member
عزیزم علتش اینه که وقتی اسکریپ اول لود میشه یعنی
document.write('<script language="JavaScript" src="2.php"></script>');
کد مربوطه اجرا می شه و وقتی اسکریپت دوم درخواست میشه از کش خونده میشه و همون اسکریپت اول باز گردونده میشه یعنی دیکه از سرور لود نمیشه

میتونی از این کد استفاده کنی ممکنه جواب بده اگه نداد صفحاتت رو از هم جدا کن


document.write('<script language="JavaScript" src="2.php?r=1"></script>');
document.write('<script language="JavaScript" src="2.php?r=2"></script>');
 

جدیدترین ارسال ها

بالا