الفرق بين المراجعتين لصفحة: «PHP/session start»
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
||
سطر 3: | سطر 3: | ||
(PHP 4, PHP 5, PHP 7) | (PHP 4, PHP 5, PHP 7) | ||
تنشئ الدالة session_start() جلسة جديدة أو تستكمل جلسة موجودة بالفعل. | تنشئ الدالة <code>session_start()</code> جلسة جديدة أو تستكمل جلسة موجودة بالفعل. | ||
== الوصف == | == الوصف == | ||
bool session_start ([ array $options = array() ] ) | <syntaxhighlight lang="php"> | ||
bool session_start ([ array $options = array() ]) | |||
</syntaxhighlight>تنشئ الدالة <code>session_start()</code> جلسة جديدة أو تستكمل الجلسة الحالية بناء على مُعرف الجلسة المُمرر بواسطة أوامر GET و POST أو عبر ملفات تعريف الارتباط. | |||
عند استدعاء الدالة <code>session_start()</code> أو عندما تبدأ الجلسة تلقائيًا، ستستدعي PHP دوال بدء وقراءة معلومات الجلسة. هذه الدوال ستكون إما دالة داخلية (built-in) تلقائية، أو بواسطة إضافات PHP (مِثل SQLite أو Memcached); أو يُمكن أن تكون مُخصصة مِثل المُعرف بواسطة الدالة <code>[[PHP/session set save handler|session_set_save_handler()]]</code>. ستستعيد دالة رد النداء <code>[[php/read|read()]]</code> أي بيانات موجودة للجلسة (المُخزنة بتنسيق مُتسلسل) وستقوم بفك ذلك التسلسل واستعمالها في المُتغير $_SESSION. | |||
لاستدعاء جلسة مُسماة، يجب أن تستدعي الدالة <code>[[PHP/session name|session_name()]]</code> قبل استدعاء الدالة <code>session_start()</code>. | |||
لاستدعاء جلسة مُسماة، يجب أن تستدعي الدالة session_name() قبل استدعاء الدالة session_start(). | |||
عند تفعيل session.use_trans_sid، ستسجل الدالة مُعامل مُخرجات داخلي لإعادة كتابة الروابط URL. | عند تفعيل session.use_trans_sid، ستسجل الدالة مُعامل مُخرجات داخلي لإعادة كتابة الروابط URL. | ||
إذا كان المُستخدم يستعمل ob_gzhandler أو شبيهًا لها مِثل الدالة ob_start() | إذا كان المُستخدم يستعمل <code>[[php/ob gzhandler|ob_gzhandler]]</code> أو شبيهًا لها مِثل الدالة <code>[[php/ob start|ob_start()]]</code>، فإنّ ترتيب الدالة يصبح مُهما جدًا لإعادة المُخرجات بطريقة صحيحة.على سبيل المِثال، الدالة <code>[[php/ob gzhandler|ob_gzhandler]]</code> يجب أن تسجل قبل بداية الجلسة. | ||
== المعاملات == | == المعاملات == | ||
options | <code>options</code> | ||
عند توفير هذا المعامل، ستحل مصفوفة من الاختيارات محل مسارات توثيق الجلسة الحالية. مفاتيح هذا المعامل يجب ألّا تحتوي على الحروف الأولية prefix للجلسة. | عند توفير هذا المعامل، ستحل مصفوفة من الاختيارات محل مسارات توثيق الجلسة الحالية. مفاتيح هذا المعامل يجب ألّا تحتوي على الحروف الأولية (prefix) للجلسة. | ||
== القيم المعادة == | == القيم المعادة == | ||
تُعيد الدالة القيمة TRUE في حالة نجاحها والقيمة FALSE فيما عدا ذلك. | تُعيد الدالة القيمة <code>TRUE</code> في حالة نجاحها والقيمة <code>FALSE</code> فيما عدا ذلك. | ||
== أمثلة == | |||
المثال 1: فتح جلسة أساسية لفتح الصفحة page1.php<syntaxhighlight lang="php"> | |||
<?php | <?php | ||
سطر 35: | سطر 33: | ||
session_start(); | session_start(); | ||
echo 'Welcome to page #1'; | echo 'Welcome to page #1'; | ||
$_SESSION['favcolor'] = 'green'; | $_SESSION['favcolor'] = 'green'; | ||
$_SESSION['animal'] = 'cat'; | $_SESSION['animal'] = 'cat'; | ||
$_SESSION['time'] = time(); | $_SESSION['time'] = time(); | ||
// يعمل في حالة قبول ملفات تعريف الإرتباط للجلسة | // يعمل في حالة قبول ملفات تعريف الإرتباط للجلسة | ||
echo '<br /><a href="page2.php">page 2</a>'; | echo '<br /><a href="page2.php">page 2</a>'; | ||
// أو يُمكن تمرير الرقم التعريفي للجلسة في جالة الحاجة لذلك | // أو يُمكن تمرير الرقم التعريفي للجلسة في جالة الحاجة لذلك | ||
echo '<br /><a href="page2.php?' . SID . '">page 2</a>'; | echo '<br /><a href="page2.php?' . SID . '">page 2</a>'; | ||
سطر 54: | سطر 48: | ||
?> | ?> | ||
</syntaxhighlight>بعد الإطلاع على الصفحة page1.php، سوف تحتوي الصفحة الثانية page2.php على بيانات الجلسة. إقرأ المزيد عن مراجع الجلسة لتعرف أكثر عن معرفات الجلسة، على سبيل المثال، شرح ما هو معرف الجلسة الثابت (constant SID). | |||
المِثال 2: فتح جلسة أساسية لفتح الصفحة page2.php<syntaxhighlight lang="php"> | |||
<?php | <?php | ||
سطر 63: | سطر 57: | ||
session_start(); | session_start(); | ||
echo 'Welcome to page #2<br />'; | echo 'Welcome to page #2<br />'; | ||
echo $_SESSION['favcolor']; // green | echo $_SESSION['favcolor']; // green | ||
echo $_SESSION['animal']; // cat | echo $_SESSION['animal']; // cat | ||
echo date('Y m d H:i:s', $_SESSION['time']); | echo date('Y m d H:i:s', $_SESSION['time']); | ||
سطر 78: | سطر 68: | ||
?> | ?> | ||
المِثال 3: تعديل فترة حياة ملفات الارتباط <?php | </syntaxhighlight>تقديم المعامل options في الدالة <code>()session_start</code>. | ||
المِثال 3: تعديل فترة حياة ملفات الارتباط | |||
<?php | |||
// هذا يُرسل ملفات الارتباط تستمر لأسبوع | // هذا يُرسل ملفات الارتباط تستمر لأسبوع |
مراجعة 13:00، 27 يوليو 2018
(PHP 4, PHP 5, PHP 7)
تنشئ الدالة session_start()
جلسة جديدة أو تستكمل جلسة موجودة بالفعل.
الوصف
bool session_start ([ array $options = array() ])
تنشئ الدالة session_start()
جلسة جديدة أو تستكمل الجلسة الحالية بناء على مُعرف الجلسة المُمرر بواسطة أوامر GET و POST أو عبر ملفات تعريف الارتباط.
عند استدعاء الدالة session_start()
أو عندما تبدأ الجلسة تلقائيًا، ستستدعي PHP دوال بدء وقراءة معلومات الجلسة. هذه الدوال ستكون إما دالة داخلية (built-in) تلقائية، أو بواسطة إضافات PHP (مِثل SQLite أو Memcached); أو يُمكن أن تكون مُخصصة مِثل المُعرف بواسطة الدالة session_set_save_handler()
. ستستعيد دالة رد النداء read()
أي بيانات موجودة للجلسة (المُخزنة بتنسيق مُتسلسل) وستقوم بفك ذلك التسلسل واستعمالها في المُتغير $_SESSION.
لاستدعاء جلسة مُسماة، يجب أن تستدعي الدالة session_name()
قبل استدعاء الدالة session_start()
.
عند تفعيل session.use_trans_sid، ستسجل الدالة مُعامل مُخرجات داخلي لإعادة كتابة الروابط URL.
إذا كان المُستخدم يستعمل ob_gzhandler
أو شبيهًا لها مِثل الدالة ob_start()
، فإنّ ترتيب الدالة يصبح مُهما جدًا لإعادة المُخرجات بطريقة صحيحة.على سبيل المِثال، الدالة ob_gzhandler
يجب أن تسجل قبل بداية الجلسة.
المعاملات
options
عند توفير هذا المعامل، ستحل مصفوفة من الاختيارات محل مسارات توثيق الجلسة الحالية. مفاتيح هذا المعامل يجب ألّا تحتوي على الحروف الأولية (prefix) للجلسة.
القيم المعادة
تُعيد الدالة القيمة TRUE
في حالة نجاحها والقيمة FALSE
فيما عدا ذلك.
أمثلة
المثال 1: فتح جلسة أساسية لفتح الصفحة page1.php
<?php
// page1.php
session_start();
echo 'Welcome to page #1';
$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();
// يعمل في حالة قبول ملفات تعريف الإرتباط للجلسة
echo '<br /><a href="page2.php">page 2</a>';
// أو يُمكن تمرير الرقم التعريفي للجلسة في جالة الحاجة لذلك
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>
بعد الإطلاع على الصفحة page1.php، سوف تحتوي الصفحة الثانية page2.php على بيانات الجلسة. إقرأ المزيد عن مراجع الجلسة لتعرف أكثر عن معرفات الجلسة، على سبيل المثال، شرح ما هو معرف الجلسة الثابت (constant SID). المِثال 2: فتح جلسة أساسية لفتح الصفحة page2.php
<?php
// page2.php
session_start();
echo 'Welcome to page #2<br />';
echo $_SESSION['favcolor']; // green
echo $_SESSION['animal']; // cat
echo date('Y m d H:i:s', $_SESSION['time']);
// يُمكن أن تستعمل معرف للجلسة هُنا كما فعلنا في المِثال الأول
echo '<br /><a href="page1.php">page 1</a>';
?>
تقديم المعامل options في الدالة ()session_start
.
المِثال 3: تعديل فترة حياة ملفات الارتباط
<?php
// هذا يُرسل ملفات الارتباط تستمر لأسبوع
session_start([
'cookie_lifetime' => 86400,
]);
?>
سجل التغييرات
الإصدار | الوصف |
---|---|
7.1.0 | تعيد الدالة القيمة FALSE ولا تعطي قيمة أولية للمُتغير $_SESSION عند فشل بدء الجلسة.
|
7.0.0 | أضيف المعامل options
|
5.3.0 | عند فشل الدالة سوف تُعيد القيمة FALSE قبل ذلك كانت تُعيد TRUE
|
4.3.3 | في ذلك الإصدار وما قبل، إذا استدعيت الدالة بعد بدء الجلسة، سيظهر خطأ من نوع E_NOTICE ، وستُهمل الدالة الثانية لبدء الجلسة.
|
ملاحظات
لاحظ أنه لغرض استعمالك للجلسات المبنية على ملفات تعريف الارتباط، فإن الدالة session_start()
يجب أن تُستدعى قبل إخراج أي شيء للمتصفح.
يُنصح باستخدام zlib.output_compression
بدلًا مِن ob_gzhandler()
.
تُرسل الدالة session_start()
العديد من الملفات الترويسية (HTTP header files) التي تعتمد على التوثيق. شاهد شرح الدالة session_cache_limiter()
لتخصيص هذه الملفات.
انظر أيضا
$_SESSION
- الدالة
session_id()
: تحصل على أو تضبط المعرف الخاص بالجلسة.