SPEED 3 NET

Web master tools - programmes - scripts - html code - code css
 
الرئيسيةSpeed Portalمكتبة الصورس .و .جبحـثالأعضاءالمجموعاتدخولالتسجيل

شاطر | 
 

 الجلسات فى الـ Sessions in Php

اذهب الى الأسفل 
كاتب الموضوعرسالة
khdiwi
ELkInG 3s
ELkInG 3s


عدد المساهماتى : 1994
الجنس : ذكر

مُساهمةموضوع: الجلسات فى الـ Sessions in Php   الثلاثاء أغسطس 25, 2009 7:03 pm

السبب الرئيسى فى استخدام مايسمى الـ sessions او الجلسات
بدلا من الكوكييز.

هو ان الكوكييز تعتمد على ان يكون متصفح الزائر يدعم الكوكييز.

وايضا البيانات التى يتم تخزينها بالكوكييز, بطريقة ما محدودة.

لذلك اصبح الـ session فى الـ php هو الحل الأفضل, لكثير من المشاكل.

الـ session او الجلسات هى طريقة لحفظ بيانات المستخدم على الخادم نفسه.

مع العلم ان الـ session لم يتم تصميمه ليكون وسيلة حفظ دائما, لكنها تظل محفوظة طوال مامتصفح المستخدم مفتوح, بمجرد غلقه يتم انهاء الجلسة.

يتم حفظ بيانات الجلسة داخل الخادم او السيرفر الخاص بك, واعطائه هوية ID
لكل مستخدم,
هذه الهوية يتم حفظها اما بالـ cookies لدى المستخدم
او ترسل بواسطة الرابط ويتم التوصل اليها بالمصفوفة $_GET

بمجرد استدعاء الدالة session_start()

الـ php يتولى بقية الأمور بالنيابة عنك.

بعد استدعاء هذه الدالة, يمكنك اما تعيين قيمة جديدة داخل الجلسة عن طريقة المصفوفة $_SESSION او استخراج البيانات التى تم حفظها مسبقا.

الـ session يعد احد الوسائل الجيدة لحفظ البيانات الحساسة.
لو لتتبع حركة الزائر على الموقع.

ما رأيك بأن نأخذ مثال تطبيقى بسيط؟
هيا بنا, لكن لا تنسى ان الشرح سيكون داخل تعليقات الإسكريبت.

الإسكريبت مكون من ثلاث ملفات
الأول ملف تسجيل الدخول (يجب ان يكون اسم المستخدم هو pepo وكلمة المرور pepo
او اسم المستخدم ahmed وكلمة المرور ali )
الملف الأول login.php
كود PHP:

<?php
//صفحة تسجيل الدخول والخروج
//اول شئ نتأكد هل اراد الزائر تسجيل خروج ام لا
$error = '';
session_start();
if (isset($_GET['logoff'])) {
//اذا اراد الزائر تسجيل الخروج
//اول شئ, نفرغ مصفوفة الجلسة SESSION
$_SESSION = array();
//اذا كان هناك كوكييز خاصة بالجلسة, نطلب من المتصفح حذفها
//وذلك بتعيين صلاحيتها بتوقيت فى الماضى
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-1000, '/');
}
// اخيرا نقوم بحذف الجلسة من الخادم
session_destroy();
}
// ثانى شئ نتأكد هل تم تسجيل الدخول
elseif (isset($_SESSION['valid']) && $_SESSION['valid']) {
// اذا تم تسجيل الدخول, وبيانات التحقق محفوظة بالجلسة, نقوم بإرسال الزائر لصفحة العرض
header('Location: view.php');
exit();
}
// ثالث شئ, اذا كان المستخدم حاول تسجيل الدخول
elseif (isset($_POST['user']) || isset($_POST['pass'])) {
//نقوم بالتحقق من البيانات التى تم ارسالها
//واستخدمنا اسماء وكلمات مستعارة لمقارنتها بما يقوم بإدخاله المستخدم
//لكن فى التطبيقات الحقيقية, تكون اسماء المستخدمين محفوظة بقاعدة البيانات
$user = isset($_POST['user']) ? $_POST['user'] : '';
$pass = isset($_POST['pass']) ? $_POST['pass'] : '';
if ( ( ($user == 'pepo') && ($pass == 'pepo') ) ||
( ($user == 'ahmed') && ($pass == 'ali') ) ) {
// اذا كان اسم المستخدم وكلمة المرور متوافقين مع بياناتنا
//نقوم بإضافة العناصر التالية للجلسة
$_SESSION['valid'] = 1;
$_SESSION['user'] = $_POST['user'];
// ونحول الزائر لصفحة العرض
header('Location: view.php');
exit();
} else {
// نقوم بتعيين رسالة خطأ
$error = 'اسم المستخدم او كلمة المرور ليست صحيحة';
}
}
//نقوم بعرض فورم تسجيل الدخول
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl">
<head><title>دخول</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
form { border: 1px solid black; padding: 10px; }
#error { color: #FF0000; font-weight: bold; }
</style>
</head>
<body>
<?php // اذا كان هناك اى خطأ سابق
if ($error) { echo "<p id=\"error\">{$error}</p>\n"; }
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p>مرحبا بك فى موقعنا, من فضلك قم بتسجيل الدخول:</p>
<p>اسم المستخدم: <input type="text" name="user" value="<?php echo @$user ?>"><br />
كلمة المرور: <input type="password" name="pass" value="<?php echo @$pass ?>"></p>
<p><input type="submit" value="دخول" /></p>
</form>
</body>
</html>


الملف الثانى
view.php
كود PHP:

<?php // The View page
// First we need to check if they are logged in, and if not, make them:
session_start();
if (!(isset($_SESSION['valid']) && $_SESSION['valid'])) {
// Back to login for you
header('Location: login.php');
exit();
}
// Now, set some default values in case they haven't told us anything yet:
$fname = isset($_SESSION['name']) ? $_SESSION['name'] : '[غير معروف]';
$fcolor = isset($_SESSION['color']) ? $_SESSION['color'] : '[غير معروف]';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl">
<head><title>عرض</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<p>مرحبا بك فى موقعنا, وشكرا لتسجيلك!</p>
<p>لقد اخبرتنا ان اسمك <?php echo $fname ?></p>
<p>وسجلتنا تفيد بإن لونك المفضل هو <?php echo $fcolor ?></p>
<p>الإختيارات: | <a href="edit.php">تعديل البيانات</a> |
<a href="login.php?logoff=true">خروج</a></p>
</body>
</html>

الملف الثالث
edit.php
كود PHP:

<?php
//صفحة التعديل
// نتأكد اذا كان العضو قام بتسجيل دخوله ام لا.
//اذا لا نقوم بإرساله لصفحة تسجيل الدخول
session_start();
if (!isset($_SESSION['valid'])) {
// نحوله لصفحة تسجيل الدخول
header('Location: login.php');
exit();
}
//نتفحص هل هذا ارسال للبيانات
$msg = '';
if (count($_POST)) {
// اذا كان كذلك, نحفظ البيانات فى الجلسة
$_SESSION['name'] = $_POST['fname'];
$_SESSION['color'] = $_POST['fcolor'];
// نجهز الرسالة
$msg = 'تم حفظ الإعدادات بنجاح';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl">
<head><title>تعديل</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
form { border: 1px solid black; padding: 10px; }
#note { color: #00CC00; font-weight: bold; }
</style>
</head>
<body>
<?php // اذا كان هناك رسالة نطبعها
if ($msg) { echo "<p id=\"note\">{$msg}</p>\n"; }
?>
<p>يمكنك حفظ إعداداتك هنا, وسوف تظل هذه الإعدادات مفتوحة حتى انتهاء الجلسة.</p>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<p>ماهو اسمك?
<input type="text" name="fname" value="<?php echo @$_SESSION['name'] ?>" /></p>
<p>ماهو اللون المفضل لديك?
<input type="text" name="fcolor" value="<?php echo @$_SESSION['color'] ?>" /></p>
<p><input type="submit" value="حفظ الإعدادات" /></p>
</form>
<p>Options: | <a href="view.php">عرض البيانات</a> |
<a href="login.php?logoff=true">خروج</a></p>
</body>
</html>


اتمنى يكون كل شئ بسيط بإذن الله.
مع اطيب التمنيات بالتوفيق
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
الجلسات فى الـ Sessions in Php
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
SPEED 3 NET :: |l|l| Technology ParT|l|l| :: برامج و طرق عمل البرامج-
انتقل الى: