الفرق بين المراجعتين لصفحة: «PHP/session create id»
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
لا ملخص تعديل |
||
سطر 7: | سطر 7: | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
string session_create_id ([ string $prefix ]) | string session_create_id ([ string $prefix ]) | ||
</syntaxhighlight>تُستخدم الدالة <code>()session_create_id</code> لإنشاء | </syntaxhighlight>تُستخدم الدالة <code>()session_create_id</code> لإنشاء قيمة جديدة للمعرف الفريد للجلسة الحالية، بحيث تعيد معرفًا جديدًا لا يتضارب مع غيره من المعرفات. | ||
لن تتحقق الدالة <code>()session_create_id</code> من وجود تضارب بين المعرفات إذا لم تكن الجلسة نشطةً. | لن تتحقق الدالة <code>()session_create_id</code> من وجود تضارب بين المعرفات إذا لم تكن الجلسة نشطةً. | ||
سطر 26: | سطر 26: | ||
== أمثلة == | == أمثلة == | ||
المثال 1: استخدام الدالة <code>session_create_id()</code> مع الدالة [[PHP/session regenerate id|<code>session_regenerate_id()</code>]]<syntaxhighlight lang="php"> | |||
<?php | <?php | ||
function my_session_start() { | function my_session_start() { | ||
session_start(); | session_start(); | ||
// لا يُسمح باستعمال المعرف الفريد القديم للدالة | |||
// لا يُسمح باستعمال المعرف الفريد القديم للدالة | |||
if (!empty($_SESSION['deleted_time']) && $_SESSION['deleted_time'] < time() - 180) { | if (!empty($_SESSION['deleted_time']) && $_SESSION['deleted_time'] < time() - 180) { | ||
session_destroy(); | session_destroy(); | ||
session_start(); | session_start(); | ||
} | } | ||
سطر 44: | سطر 39: | ||
function my_session_regenerate_id() { | function my_session_regenerate_id() { | ||
// التحقق من عدم وجود تضارب بين المعرفات | // التحقق من عدم وجود تضارب بين المعرفات | ||
if (session_status() != PHP_SESSION_ACTIVE) { | if (session_status() != PHP_SESSION_ACTIVE) { | ||
session_start(); | session_start(); | ||
} | } | ||
// تحذير: لا تستمع متغيرات نصية سرية كبادئة للرقم التعريفي | |||
$newid = session_create_id('myprefix-'); | $newid = session_create_id('myprefix-'); | ||
// حدد فترة زمنية للحذف، حيث لا ينصح بحذف بيانات الجلسة فوريًا لعدة أسباب | |||
// حدد فترة زمنية للحذف، حيث لا ينصح بحذف بيانات الجلسة فوريًا لعدة أسباب | |||
$_SESSION['deleted_time'] = time(); | $_SESSION['deleted_time'] = time(); | ||
// إنهاء الجلسة | // إنهاء الجلسة | ||
session_commit(); | session_commit(); | ||
// تأكد مِن قبول الرقم التعريفي للجلسة المُعرف بواسطة المُستخدم | |||
// يجب تفعيل use_strict_mode للعمليات الطبيعية | |||
ini_set('session.use_strict_mode', 0); | ini_set('session.use_strict_mode', 0); | ||
// حدد معرفا فريدا للجلسة | |||
session_id($newid); | session_id($newid); | ||
// إبدأ الجلسة بالمعرف الفريدا الجديد | // إبدأ الجلسة بالمعرف الفريدا الجديد | ||
session_start(); | session_start(); | ||
} | } | ||
// تأكد من تمكين use_strict_mode حيث أنه ضروري لأسباب أمنية | // تأكد من تمكين use_strict_mode حيث أنه ضروري لأسباب أمنية | ||
ini_set('session.use_strict_mode', 1); | ini_set('session.use_strict_mode', 1); | ||
my_session_start(); | my_session_start(); | ||
سطر 89: | سطر 65: | ||
my_session_regenerate_id(); | my_session_regenerate_id(); | ||
?> | ?> | ||
سطر 96: | سطر 71: | ||
== انظر أيضًا == | == انظر أيضًا == | ||
* الدالة <code>[[ | * الدالة <code>[[PHP/session regenerate id|session_regenerate_id()]]</code>: تُحدث المعرّف الفريد للجلسة بآخر جديد مُستحدث. | ||
* الدالة <code>[[ | * الدالة <code>[[PHP/session start|session_start()]]</code>: تبدأ جلسة جديدة أو تستكمل جلسة موجودة. | ||
* الدالة <code>[[php/session create sid|session_handler::create_sid()]]</code>: تُعيد معرّف جلسة جديدًا. | * الدالة <code>[[php/session create sid|session_handler::create_sid()]]</code>: تُعيد معرّف جلسة جديدًا. | ||
سطر 104: | سطر 78: | ||
* [http://php.net/manual/en/function.session-create-id.php صفحة الدالة session_create_id في توثيق PHP الرسمي.] | * [http://php.net/manual/en/function.session-create-id.php صفحة الدالة session_create_id في توثيق PHP الرسمي.] | ||
[[تصنيف:PHP]] | [[تصنيف:PHP]] | ||
[[تصنيف:PHP Function]] | |||
[[تصنيف:PHP Session]] | [[تصنيف:PHP Session]] |
مراجعة 11:35، 14 أغسطس 2018
(PHP 7, PHP 7.1.0)
تنتج الدالة session_create_id()
معرّفا جديدًا للجلسة.
الوصف
string session_create_id ([ string $prefix ])
تُستخدم الدالة ()session_create_id
لإنشاء قيمة جديدة للمعرف الفريد للجلسة الحالية، بحيث تعيد معرفًا جديدًا لا يتضارب مع غيره من المعرفات.
لن تتحقق الدالة ()session_create_id
من وجود تضارب بين المعرفات إذا لم تكن الجلسة نشطةً.
المعرف الفريد للجلسة يتم إنتاجه طِبقًا لإعدادات php.ini.
من المهم أن يكون سكربت حذف الملفات المؤقتة مشغلًا من نفس حساب مستخدم خادم الويب، وإلا فقد تواجه مشاكل مع الأذونات خصوصًا إذا كانت الجلسات تُحفَظ كملفات.
المعاملات
prefix
إذا ضبط المعامل prefix
، فسيُسبَق مُعرِّف الجلسة الجديد به.
بالنسبة للحروف المسموح بِها في التسمية فهي من a حتى z ومن A حتى Z، ومن 0 حتى 9، والفاصلة الإنجليزية ";"، وعلامة ناقص "-".
القيم المعادة
تُعيد الدالة ()session_create_id
المعرّف الجديد للجلسة الحالية مع ضمان عدم وجود تضارب بين المعرفات ، لن تتحقق الدالة من وجود تضارب إذا لم تكن الجلسة نشطةً.
أمثلة
المثال 1: استخدام الدالة session_create_id()
مع الدالة session_regenerate_id()
<?php
function my_session_start() {
session_start();
// لا يُسمح باستعمال المعرف الفريد القديم للدالة
if (!empty($_SESSION['deleted_time']) && $_SESSION['deleted_time'] < time() - 180) {
session_destroy();
session_start();
}
}
function my_session_regenerate_id() {
// التحقق من عدم وجود تضارب بين المعرفات
if (session_status() != PHP_SESSION_ACTIVE) {
session_start();
}
// تحذير: لا تستمع متغيرات نصية سرية كبادئة للرقم التعريفي
$newid = session_create_id('myprefix-');
// حدد فترة زمنية للحذف، حيث لا ينصح بحذف بيانات الجلسة فوريًا لعدة أسباب
$_SESSION['deleted_time'] = time();
// إنهاء الجلسة
session_commit();
// تأكد مِن قبول الرقم التعريفي للجلسة المُعرف بواسطة المُستخدم
// يجب تفعيل use_strict_mode للعمليات الطبيعية
ini_set('session.use_strict_mode', 0);
// حدد معرفا فريدا للجلسة
session_id($newid);
// إبدأ الجلسة بالمعرف الفريدا الجديد
session_start();
}
// تأكد من تمكين use_strict_mode حيث أنه ضروري لأسباب أمنية
ini_set('session.use_strict_mode', 1);
my_session_start();
// الرقم التعريفي سيتم إعادة إنتاج المعرف الفريد كُلما: يسجل المُستخدم الدخول أو الخروج وعند مرور مُدة زمنية معينة //
my_session_regenerate_id();
?>
انظر أيضًا
- الدالة
session_regenerate_id()
: تُحدث المعرّف الفريد للجلسة بآخر جديد مُستحدث. - الدالة
session_start()
: تبدأ جلسة جديدة أو تستكمل جلسة موجودة. - الدالة
session_handler::create_sid()
: تُعيد معرّف جلسة جديدًا.