الفرق بين المراجعتين ل"PHP/session destroy"

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
سطر 73: سطر 73:
 
= مصادر =
 
= مصادر =
 
* [http://php.net/manual/en/function.session-destroy.php صفحة الدالة session_destroy في توثيق PHP الرسمي.]
 
* [http://php.net/manual/en/function.session-destroy.php صفحة الدالة session_destroy في توثيق PHP الرسمي.]
 +
[[تصنيف:PHP]]
 +
[[تصنيف:PHP Session]]

مراجعة 14:03، 26 يوليو 2018

(PHP 4, PHP 5, PHP 7)

تدمر الدالة session_destroy()‎ جميع البيانات المُسجلة في الجلسة.

الوصف

bool session_destroy ( void )

تُدمر الدالة جميع البيانات المُصاحبة للجلسة الحالية. ولا تقوم بمسح أيًا مِن المُتغيرات العامة (global variables) أو ملفات تعريف الارتباط للدالة. ولاستخدام المُتغيرات مُجددًا، يجب استخدام الدالة ()session_start.

ملاحظة:  لست مضطرا لاستدعاء الدالة session_destroy()‎ في الكود العادي. نظف المصفوفة ‎$_SESSION بدلًا مِن تدمير بيانات الجلسة.

لتدمير الجلسة كلها يجب مسح معرّف الجلسة وإذا كان محفوظا في ملف تعريف الارتباط، يجب مسحه كذلك ويُمكن استعمال الدالة setcookie()‎ لذلك.

عند تفعيل session.use.strict_mode، لا يلزم مسح ملف تعريف الارتباط الخاص بمعرّف الجلسة لأن وحدة الجلسة بطبعها لا تقبل ملف تعريف الارتباط الخاص بمعرّف الجلسة وستضبط معرّفا جديدا.

تفعيل session.use_strict_mode مُحبذ لكُل المواقع.

تحذير: على الرغم من أن وحدة الجلسة الحالية لا تقبل ملف تعريف ارتباط فارغ للجلسة ، إلا أن الحذف الفوري للجلسة قد يؤدي إلى ملف تعريف ارتباط فارغ بسبب حالة السباق الجانبية للعميل (المتصفح). سيؤدي ذلك إلى أن العميل سينشئ أكثر من معرف للجلسة دون داع. ولتجنب ذلك يجب ضبط المُدة الزمنية للمسح في المُتغير ‎$_SESSION ورفض أي دخول لاحق. أو تأكد أن البرنامج لا يحتوي على أي طلبات متزامنة للمعرّف، وهذا ينطبق على الدالة session_regenerate_id()‎ أيضًا.  

القيم المُعادة

تُعيد الدالة session_destroy()‎ القيمة TRUE في حالة نجاحها والقيمة FALSE عدا ذلك.

أمثلة

المثال 1: تدمير الدالة بواسطة المُتغير ‎$_SESSION

<?php

// session_name(“anyName”) بدء الجلسة – لا تنس إذا كُنت أعطيت الجلسة اسمًا

session_start();

// فك ضبط جميع مُتغيرات الدالة

$_SESSION = array();

// إذا كُنت تريد تدمير الجلسة وجب تدمير الكوكيز

// لاحظ أن الدالة سوف تمسح الجلسة كاملةً وليس مُجرد البيانات

if (ini_get("session.use_cookies")) {

    $params = session_get_cookie_params();

    setcookie(session_name(), '', time() - 42000,

        $params["path"], $params["domain"],

        $params["secure"], $params["httponly"]

    );

}

// تدمير الجلسة بالنهاية

session_destroy();

?>

لاحظ أن الدالة session_unset()‎ تُستعمل في الأكواد القديمة التي لا تستخدم ‎$_SESSION.

انظر أيضًا

مصادر