لديك حساب بالفعل؟ دخول
دخول  سجل الأن 
مشكلة في SESSION لا تعمل جيدا رغم عدم وجود أي خطأ
السلام عليكم ورحمة الله وبركاته

قمت بعمل سيشن لحماية صفحات تعديل وتحديث الموقع هذه السيشن تعمل جيدا على فولدر داخلي بمستوى واحد مثال:
www.mywebsite.com/adminarea

لكنها لا تعمل اذا كان الفولدر اكثر من مستوى مثال:
www.mywebsite.com/anotherfolder/adminarea

ففي المثال الآخير لاتعمل الشيسن فلو افترضنا ان احد الأشخاص قام بكتابة اسم صفحة داخلية ستفتح الصفحة بدون الدخول على صفحة السؤال عن اسم المستخدم وكلمة المرور وهذا هو كود البي اتش بي في الصفحتين:

<?php
session_start();
$uname=$_POST['uname'];
$upass=$_POST['upass'];
$url=$_SERVER['HTTP_HOST'];
require("conn.php");
$sql1="select * from username_password";
$result = mysql_query($sql1, $myconn);
$row = mysql_fetch_row($result);
$validuname=$row[1];
$validupass=$row[2];
if(($uname==$validuname)&&($upass==$validupass)):
$session_var="anyvalue";
$_SESSION['session_var'] = $session_var;
header("location:http://$url/mywebsite/adminarea/mainadmin.php");
else:
header("location:http://$url/mywebsite/adminarea/index.php?m=Invalid Username or Password!");
endif;
?>
وجميع الصفحات الداخلية لفولدر تحديث الموقع:
<?php
session_start();
if(!isset($_SESSION['session_var']) || empty($_SESSION['session_var']) || $_SESSION['session_var']="")
{
  header("location:http://$HTTP_HOST/index.php");
}
?>


استخدم PHP5 على BlueHost
هل المشكلة في php.ini وما هي التغيرات المطلوبة في هذا الملف
جزاكم الله خيرا
تاريخ البداية: 25 / يناير / 2012 الساعة 11:36 اخر نشاط: 25 / يناير / 2012 الساعة 14:24 SESSION

معنى انك تستعمل session_start(); جديدة فى كل صفحة انك تقوم بانشاء جلسة جديدة فى كل مرة.
25 / يناير / 2012 الساعة 12:0

انا ارى ان الطريقة كلها شبه خاطئة انظر الى بخصوص فورم تسجيل الدخول
25 / يناير / 2012 الساعة 14:19

1 إجابة
السلام عليكم
العيب ليس فى php.ini او فى الهوست العيب فى طريقة استخدامك للجلسات انت تقوم ببدا جلسة جديدة تمام فى كل ملف باستخدام session_start(); وهذا خطا كليا ، لان عليك بدا الجلسة للمستخدم الواحد مرة واحدة فقط لذلك عليك وضع دالة session_start(); باول سطر ينفذ فى الاسكربت وليكن ملف الكنفج الذى يحتوى على دوال الاتصال بقاعدة البيانات

بواسطة: MacOS
منذ: 25 / يناير / 2012 الساعة 11:58

لقد قمت بحذف session_start الموجودة في الصفحات الداخلية ومازالت لاتعمل يمكنني فتح اي صفحة داخلية بدون ادخال اسم المستخدم وكلمة المرور؟؟
25 / يناير / 2012 الساعة 14:12

لابد ان تحذفها من الجميع وتتركها فى الصفحة الام ولتكن موجودة فى اول سطر فى الملف conn.php لانك تستدعية فى بدالة كل صفحة
25 / يناير / 2012 الساعة 14:14

الصفحة الموجود فيها session_start الآن هي صفحة login.php ويتم استدعاء هذه الصفحة بعد الضغظ على زر دخول في صفحة index.php فإذا كان اسم المستخدم وكلمة المرور صحيح سيتم الدخول على mainadmin.php واذا لما تكن صحيحة سيتم الرجوع لصفحة index.php واظهار رسالة (خطأ باسم المستخدم) اما ملف conn.php لا توجد فيه اي سيشن فهي دوال الاتصال بقاعدة البيانات فقط
25 / يناير / 2012 الساعة 14:23

يجب ان توجد فيه .. ففكرة الجلسات انك تبدئها مرة واحدة فى اول ملف لانك لو بداتها فى ملف اخر مرة اخرى ستنهى الاولة بجميع ما تحفظ وتبدا من جديد
25 / يناير / 2012 الساعة 14:24

أنشر اجابتك

xهل تريد الاجابة عن هذا السؤال؟ من فضلك سجل دخول او اشترك لتتمكن من الاجابة