142 lines
4.6 KiB
Markdown
142 lines
4.6 KiB
Markdown
|
---
|
|||
|
title: PHP Sessions
|
|||
|
localeTitle: جلسات PHP
|
|||
|
---
|
|||
|
# جلسات PHP
|
|||
|
|
|||
|
الجلسة هي طريقة لتخزين المعلومات (في المتغيرات) ليتم استخدامها عبر صفحات متعددة.
|
|||
|
على عكس ملف تعريف الارتباط ، لا يتم تخزين المعلومات على جهاز الكمبيوتر الخاص بالمستخدم.
|
|||
|
|
|||
|
## ما هي جلسة PHP؟
|
|||
|
|
|||
|
عند العمل مع أحد التطبيقات ، يمكنك فتحه ، وإجراء بعض التغييرات ، ثم إغلاقه. هذا يشبه إلى حد كبير الجلسة.
|
|||
|
الكمبيوتر يعرف من أنت. يعرف متى تبدأ التطبيق وعند الانتهاء.
|
|||
|
ولكن هناك مشكلة واحدة على الإنترنت: لا يعرف خادم الويب هويتك أو ما تفعله ، لأن عنوان HTTP _لا يحتفظ بالحالة_ .
|
|||
|
|
|||
|
تعمل متغيرات جلسة العمل على حل هذه المشكلة من خلال تخزين معلومات المستخدم ليتم استخدامها عبر صفحات متعددة (مثل اسم المستخدم واللون المفضل ، وما إلى ذلك).
|
|||
|
بشكل افتراضي ، تستمر متغيرات جلسة العمل حتى يقوم المستخدم بإغلاق المتصفح.
|
|||
|
|
|||
|
**تحتوي متغيرات جلسة العمل على معلومات حول مستخدم واحد ، وهي متوفرة لجميع الصفحات في تطبيق واحد.**
|
|||
|
|
|||
|
**ملاحظة:** إذا كنت بحاجة إلى تخزين دائم ، فقد ترغب في تخزين البيانات في قاعدة بيانات.
|
|||
|
|
|||
|
## بدء دورة PHP
|
|||
|
|
|||
|
تبدأ _الجلسة_ ببدء _الجلسة_ () \_ الوظيفة.
|
|||
|
يتم تعيين متغيرات الجلسة مع المتغير العام PHP: $ \_SESSION.
|
|||
|
|
|||
|
**مثال:**
|
|||
|
|
|||
|
`<?php
|
|||
|
// Start the session
|
|||
|
session_start();
|
|||
|
?>
|
|||
|
<!DOCTYPE html>
|
|||
|
<html>
|
|||
|
<body>
|
|||
|
|
|||
|
<?php
|
|||
|
// Set session variables
|
|||
|
$_SESSION["favcolor"] = "blue";
|
|||
|
$_SESSION["favanimal"] = "dog";
|
|||
|
echo "Session variables are set.";
|
|||
|
?>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
`
|
|||
|
|
|||
|
**ملاحظة:** يجب أن تكون الدالة session\_start () **أول شيء** في المستند. **قبل** أي علامات HTML.
|
|||
|
|
|||
|
انتاج:
|
|||
|
يتم تعيين متغيرات الجلسة.
|
|||
|
|
|||
|
## احصل على قيم متغيرات جلسة PHP
|
|||
|
|
|||
|
لاحظ أنه لا يتم تمرير متغيرات الجلسة بشكل فردي إلى كل صفحة جديدة ، بل يتم استرجاعها من الجلسة التي نفتحها في بداية كل صفحة (session\_start ()).
|
|||
|
|
|||
|
لاحظ أيضًا أنه يتم تخزين جميع قيم متغير الجلسة في المتغير $ \_SESSION العالمي:
|
|||
|
|
|||
|
**مثال:**
|
|||
|
|
|||
|
`<?php
|
|||
|
session_start();
|
|||
|
?>
|
|||
|
<!DOCTYPE html>
|
|||
|
<html>
|
|||
|
<body>
|
|||
|
|
|||
|
<?php
|
|||
|
// Echo session variables that were set on previous page
|
|||
|
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
|
|||
|
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
|
|||
|
?>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
`
|
|||
|
|
|||
|
انتاج:
|
|||
|
اللون المفضل باللون الأزرق.
|
|||
|
الحيوان المفضل هو الكلب.
|
|||
|
|
|||
|
هناك طريقة أخرى لإظهار كافة قيم متغير جلسة العمل لجلسة مستخدم هي تشغيل التعليمة البرمجية التالية:
|
|||
|
|
|||
|
`<?php
|
|||
|
print_r($_SESSION);
|
|||
|
?>
|
|||
|
`
|
|||
|
|
|||
|
### كيف يعمل؟
|
|||
|
|
|||
|
تحدد معظم الجلسات مفتاح المستخدم على كمبيوتر المستخدم الذي يبدو كالتالي: 765487cf34ert8dede5a562e4f3a7e12.
|
|||
|
وبعد ذلك ، عندما يتم فتح جلسة على صفحة أخرى ، فإنه يقوم بمسح جهاز الكمبيوتر للحصول على مفتاح المستخدم.
|
|||
|
إذا كان هناك تطابق ، فإنه يصل إلى تلك الجلسة ، إذا لم يكن كذلك ، فسيبدأ جلسة جديدة.
|
|||
|
|
|||
|
## تعديل متغير الجلسة
|
|||
|
|
|||
|
لتغيير متغير جلسة ، ما عليك سوى الكتابة فوقه:
|
|||
|
|
|||
|
**مثال:**
|
|||
|
|
|||
|
`<?php
|
|||
|
session_start();
|
|||
|
?>
|
|||
|
<!DOCTYPE html>
|
|||
|
<html>
|
|||
|
<body>
|
|||
|
|
|||
|
<?php
|
|||
|
// to change a session variable, just overwrite it
|
|||
|
$_SESSION["favcolor"] = "pink";
|
|||
|
print_r($_SESSION);
|
|||
|
?>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
`
|
|||
|
|
|||
|
## تدمير دورة PHP
|
|||
|
|
|||
|
لإزالة جميع متغيرات الجلسة العامة وتدمير الجلسة ، استخدم _جلسة العمل_ unset () \_ وتدمير _الجلسة_ () \_:
|
|||
|
|
|||
|
**مثال:**
|
|||
|
|
|||
|
`<?php
|
|||
|
session_start();
|
|||
|
?>
|
|||
|
<!DOCTYPE html>
|
|||
|
<html>
|
|||
|
<body>
|
|||
|
|
|||
|
<?php
|
|||
|
// remove all session variables
|
|||
|
session_unset();
|
|||
|
|
|||
|
// destroy the session
|
|||
|
session_destroy();
|
|||
|
?>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
`
|