-
روشی به جای استفاده از سشن در php (حل شد)
سلام دوستان
سایتی رو طراحی کردم که تو بعضی از صفحات اون اجبارا از سشن استفاده کردم . تا چند روز پیش سایت به درستی کار میکرد ولی چند روزه مشکل داره و اون هم اینه که سشن ها مقدار میگیرن و در همون صفحه چاپ میشن ولی تو بقیه صفحات مقدار ندارن و صفرهستن.
حالا برای این مشکل راه حلی هست یا نه؟
میشه از متغیر استفاده کرد ؟ (آخه متغیر عمومی هم فکر کنم فقط توی یه صفحه شناخته شدس )
با تشکر از دوستانی که راهنمایی میکنن
ممنون.........................
-
نقل قول: روشی به جای استفاده از سشن در php
کدهاتون رو بزارید.(هم صفحه ای که سشن چاپ میشه و هم صفحه ای که سشن مقدار نداره)
-
نقل قول: روشی به جای استفاده از سشن در php
احتمالا تو صفحاتي كه سشن مقدر نداره يا صفر سشن رو استارت نكرده باشيد
-
نقل قول: روشی به جای استفاده از سشن در php
ممنون از همکاریتون ولی سشن ها فقط توی یه صفحه نیست که بخوام براتون بزرام . اگه ممکنه فقط بگین که چطور میشه این مشکلو برطرف کرد آخه قبلا همین دستورا کار میکردن توی لوکال هاستم کار میکنه به نظرتون مشکل از هاسته؟؟؟؟؟؟؟؟/
-
نقل قول: روشی به جای استفاده از سشن در php
چرا سشن استارت شده ولی بازم کار نمی کن
-
نقل قول: روشی به جای استفاده از سشن در php
خواهش میکنم یکی جواب بده خیلی فوریه....................خواهش
-
نقل قول: روشی به جای استفاده از سشن در php
شاید سشن ها رو در جای دیگه مقدار دهی کردید یا مشکلاتی از این قبیل!
در ضمن از کوکی هم میشه استفاده کرد ولی کاربر میتونه کوکی ها رو تغییر بده
-
نقل قول: روشی به جای استفاده از سشن در php
آخه مشکل اینجاس که کوکی هم جواب نمیده . متغیری مثل سشن وجود داره آیا؟؟؟
-
نقل قول: روشی به جای استفاده از سشن در php
شاید مثلا آدرس جایی رو که سشن ذخیره میشه با www وارد میکنید و جایی بدون آن چک میکنید
چون سشن هایی که توسط www.site.com ذخیره میشن توسط site.com قابل خوندن نیستن (همچنین کوکی)
-
نقل قول: روشی به جای استفاده از سشن در php
نقل قول:
نوشته شده توسط
AbiriAmir
شاید مثلا آدرس جایی رو که سشن ذخیره میشه با www وارد میکنید و جایی بدون آن چک میکنید
چون سشن هایی که توسط
www.site.com ذخیره میشن توسط site.com قابل خوندن نیستن (همچنین کوکی)
تا جایی که من میدونم سشن یه متغیره که توش مقدار میریزیم مثل کد زیر:
$session['sum']=10;
wwwیعنی چی؟
-
نقل قول: روشی به جای استفاده از سشن در php
بهترین کاری که من پیشنهاد می کنم به خودتون کمک میکنه این هست که مقداری از کدتون رو که نشون بده که کاری که انجام میشه چی هست و یا الگوریتم کاری که دارید انجام میدید رو به دوستان نشون بدید
و یا اینکه سعی کنید یک نسخه ی ساده از اون چیز بزرگی که روی سایت دارید رو یک بار دیگه پیاده کنید و اینجا روش بحث کنید
اگر نه فکر نمی کنم کسی بتونه چشم بسته به شما کمک بکنه
-
نقل قول: روشی به جای استفاده از سشن در php
-
نقل قول: روشی به جای استفاده از سشن در php
نقل قول:
نوشته شده توسط
Yuness Mehdian
خطایی هم صادر میشه؟
نه فقط سشن توصفحه دیگه ای که می خوام چاپ بشه مقدار نداره
-
نقل قول: روشی به جای استفاده از سشن در php
توصیه میکنم فایلهاتون رو بصورت UTF-8 without BOM ذخیره کنید ، و تست کنید چون در غیر این صورت session به درستی اجرا نمیشه و امکان داره سرور خطاها رو نشون نده
-
نقل قول: روشی به جای استفاده از سشن در php
دوست گرامی، سشن به اون شکلی که شما نوشتین درست نیست. این مثال رو ببینید:
session_start();
$_SESSION['user'] = 'ali';
دقت کنید که اسم آرایه SESSION_$ هست (دقیقاً به همین شکل با Underline و تماماً با حروف بزرگ)
-
نقل قول: روشی به جای استفاده از سشن در php
www منظور آدرس سایتتون هست
مثلا دو آدرس زیر به سشن های هم دسترسی ندارن:
http://example.com
http://www.example.com
مثلا ممکنه هنگام مقدار دهی سشن شما آدرس سایت را با www وارد کرده باشید و صفحه ای که سشن در آن مقدار ندارد بدون www ( یا برعکس )
-
نقل قول: روشی به جای استفاده از سشن در php
سلام
احتمال زیاد شما کار با سشن ها رو کامل متوجه نشدین چون چیز خاصی نداره
نکته اول:
تابع session_satart() رو در خط اول در تمام صفحات بنویسید
نکته دوم:
نحوه بکارگیری متغییر های سشن رو دقت کنید
یکی از کدهای صفحه ای که سشن رو صفر نشون میده اینجا بزارید برای بررسی
-
نقل قول: روشی به جای استفاده از سشن در php
این نمونه کد بخش مهم کد که سشن مقدار گرفته و باید نمایش داده شود می باشد.
در صفحه reserv_room.php کد های زیر اجرا می شود ...
session_start();
....
<script src="fanction.js" type="text/javascript"></script>
......
نوع فولبرد :<select name="ty" id="ty" onchange="y()" >
<option value="0">منوی انتخابی</option>
<option value="1">منوی باز </option>
<option value="2">منوی بسته</option>
</select><br /><br />
<div id="bord" style=" width:530px; " >
</div>
با انتخاب هر یک از مقادیر منوی باز ...
تابع y() فراخوانی می شود از فایل function.js که به شرح زیر است..
function y()
{
if (window.XMLHttpRequest)
x=new XMLHttpRequest();
else if(window.ActiveXObject)
x=new ActiveXObject("Microsoft.XMLHTTP");
else
alert("Ajax No Support");
//alert(document.getElementById("slcg").value);
var url,j;
url="show_type.php";
var params="name="+(document.getElementById("ty").valu e)+'/'+(document.getElementById("w").value) +'/'+(document.getElementById("sdate").value)+'/'+(document.getElementById("edate").value);
x.open("post",url,true);
x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
x.setRequestHeader("Content-length", params.length);
x.onreadystatechange =a;
x.send(params);
}
function a()
{
if (x.readyState==4)
{
document.getElementById("bord").innerHTML=x.respon seText;
}
}
و توسط فایل ajax به صفحه show_type.php می رود
که متغیر session در این صفحه مقدار دهی می شود.
صفحه show_type.php
session_start();
$_SESSION['sum1']=10;
که در اینجا با توجه به تابع ajax a() در div با
id=bord مقدار سشن نمایش داده می شود
ولی در صفحه بعدی reserve_room.php که بعد از div مجددا سشن را فراخوانی کردم سشن مقدار ندارد.
echo $_SESSION['sum1'];
-
نقل قول: روشی به جای استفاده از سشن در php
خوب این کد که بنظر درست میاد. البته کد کامل فایل show_type.php و همچنین fanction.js رو هم باید ببینیم (البته دومی بعید میدونم ارتباطی داشته باشه) اما یک سؤال، چرا از jQuery برای AJAX استفاده نمیکنید؟
-
نقل قول: روشی به جای استفاده از سشن در php
این کد داره توی لوکال هاست درست جواب میده ولی نمیدونم چرا توی هاست اصلی درست کار نمیکنه. در حالی که تا چند روز پیش توی هاستم درست کار میکرد ممکنه اشکال توی تنظیمات هاست باشه ؟
البته با پشتیبانی سرور هاستمون هم تماس داشتیم که تمام تنظیمات رو گفتن درسته.
آیا فرق بین jqueryو javaتاثیری در مقدار دهی سشن داره؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟/
-
نقل قول: روشی به جای استفاده از سشن در php
نه jQuery رو بخاطر راحتی خودتون و تطابق با تمام مرورگرها گفتم. کل کدی که شما برای AJAX نوشتین رو با یک خط توی jQuery میشه نوشت.
اما درمورد مشکلی که گفتین، احتمال داره بخاطر این باشه که فایل شما UTF-8 without BOM نیست. با ++Notepad فایل رو باز کنید و از منوی Encoding گزینه Encode in UTF-8 without BOM رو انتخاب کنید و فایل رو ذخیره و دوباره آپلود کنید. ضمناً روی هاست بطور پیشفرض Output Buffering غیرفعاله. توی اولین خط کدتون دستور ;()obstart و توی آخرین خط دستور ;()ob_end_flush رو بنویسید. این کار رو برای تمام فایلها انجام بدین. دقت کنید که هربار فایلتون رو با ادیتور معمولی مثل Notepad ویندوز ویرایش و ذخیره کنید، دوباره BOM به فایل اضافه میشه و دچار همین مشکل خواهید شد. علت اینکه سشن توی همون صفحه کار میکنه و توی بقیه صفحات نه هم اینه که اصلاً ;()session_start نتونسته بخاطر وجود BOM (که دیگه اجازه نمیده هدرها تغییر کنن)، سشن رو شروع کنه و درنتیجه SESSION_$ که شما ساختین، یک آرایه معمولی توی همون صفحه شده نه آرایه اصلی سشن که SuperGlobal هست. امیدوارم خوب توضیح داده باشم. اینجا رو هم ببینید.
-
نقل قول: روشی به جای استفاده از سشن در php
ممنون از پیگیریتون
فقط یه سوال
اول obstart() رو بنویسم یا $_SESSION()?
-
نقل قول: روشی به جای استفاده از سشن در php
اولین خط ;()ob_start باید باشه و آخرین خط ;()ob_end_flush
ضمناً _ هم یادتون نره. جزو اسم توابع هست.
-
نقل قول: روشی به جای استفاده از سشن در php
یه زحمت براتون دارم
راستش من خیلی jquery بلد نیستم . ممکنه همین کدارو با jquery برام بنویسید؟
ممنون.................
-
نقل قول: روشی به جای استفاده از سشن در php
اول فایل فشرده jQuery (نسخه Minify شده) رو از سایت jQuery.com دانلود کنید و در کنار اسکریپت به اسم jqmin.js ذخیره کنید و بعد کد زیر رو اجرا کنید:
کد HTML:
<script src="jqmin.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#ty").change(function() {
$.ajax({
type: "post",
url: "show_type.php",
data: "name="+$("#ty").val()+"/"+$("#w").val()+"/"+$("#sdate").val()+"/"+$("#edate").val(),
success: function(data) {
$("#bord").html(data);
}
});
});
});
</script>
نوع فولبرد :<select name="ty" id="ty" >
<option value="0">منوی انتخابی</option>
<option value="1">منوی باز </option>
<option value="2">منوی بسته</option>
</select>
<div id="bord" style=" width:530px; " >
البته من این کد رو برای راحتی در تفهیم، بصورت گسترده شده و با تفکیک پارامترها در سطرهای مختلف نوشتم وگرنه خیلی خلاصه تر هم میشه با post.$ نوشت. موفق باشید.
-
نقل قول: روشی به جای استفاده از سشن در php
-
نقل قول: روشی به جای استفاده از سشن در php
خواهش میکنم. دکمه «تشکر کردن» برای اینجور وقتها درنظر گرفته شده. ضمناً اگه مشکلتون رفع شد، خبر بدین تا بقیه دوستان هم مطلع بشن. موفق باشید.
-
نقل قول: روشی به جای استفاده از سشن در php
بله . ولی با همه این شرایط باز هم سشن خالی مونده و مقدار نداره
واقعا دیگه نمیدونم چیکار کنم. آخه همه کارهایی رو که گفتین انجام دادم
-
نقل قول: روشی به جای استفاده از سشن در php
اگه ممکنه TeamViewer نصب کنید و نام کاربری و رمز عبور رو برام پیام خصوصی کنید تا از نزدیک ببینم مشکل چیه.
-----
پاورقی: جدیداً به این نتیجه رسیدم که برخی مشکلات رو فقط میشه با Remote Connection رفع کرد و توضیح دادن جوابگو نیست و این مسئله کاملاً طبیعیه چون تا وقتی افراد در عمل نحوه رفع مشکل رو حداقل یکبار نبیین، توضیح فایده نداره.
-
نقل قول: روشی به جای استفاده از سشن در php
نقل قول:
نوشته شده توسط
masoomenoroozi
این کد داره توی لوکال هاست درست جواب میده ولی نمیدونم چرا توی هاست اصلی درست کار نمیکنه. در حالی که تا چند روز پیش توی هاستم درست کار میکرد ممکنه اشکال توی تنظیمات هاست باشه ؟
البته با پشتیبانی سرور هاستمون هم تماس داشتیم که تمام تنظیمات رو گفتن درسته.
آیا فرق بین jqueryو javaتاثیری در مقدار دهی سشن داره؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟/
https://barnamenevis.org/showthread.p...%D8%AF-session یه دید بزن شاید مشکلت این باشه
-
نقل قول: روشی به جای استفاده از سشن در php
دوستان مشکل این دوستمون حل شد. برای حل مشکل مشابه سایر دوستان، علت رو اینجا میگم:
اگه توی یک فایل، فایل دیگری رو include یا require کردین، حتماً باید اون فایل هم UTF-8 without BOM باشه و درصورت لزوم، ob_start رو اول و ob_end_flush رو آخر اون فایل هم صدا بزنید.
بطور کلی عادت کنید حتماً تمام فایلهای شما UTF-8 without BOM باشن.
ضمناً اگه یک فایل PHP دارین که ابتداش با تگ PHP شروع نشده و اولش HTML دارین، حتماً قبل از اون کدهای HTML تگ PHP رو باز کنید و ob_start رو صدا بزنید، نه اینکه در اولین جایی که تگ PHP باز شد، اینکار رو انجام بدین چون وجود کدهای HTML قبل از کدهای PHP هم باعث میشه مثل BOM، محتوای اونها برای مرورگر کلاینت ارسال بشه. بطور مشابه، ob_end_flush هم باید آخرین دستور فایل باشه و اگه انتهای فایلتون تگ PHP نیست باید بازش کنید و اونجا بنویسید. بطور خلاصه:
ob_start دقیقاً اولین خط فایل باشه و ob_end_flush هم دقیقاً آخرین خط یعنی تمام فایلهای PHP شما باید اینطوری باشه:
<?php
ob_start();
// the rest of file contents
ob_end_flush();
?>