الفرق بين المراجعتين لصفحة: «PHP/uniqid»

من موسوعة حسوب
< PHP
إضافات و تعديلات تنسيقية
تعديلات طفيفة على التنسيق
 
سطر 9: سطر 9:
</syntaxhighlight>تحصل الدالة <code>uniqid()</code>‎ على معرف فريد مع إمكانية إضافة سابقة له استنادًا إلى الوقت الحالي بالميكروثانية.
</syntaxhighlight>تحصل الدالة <code>uniqid()</code>‎ على معرف فريد مع إمكانية إضافة سابقة له استنادًا إلى الوقت الحالي بالميكروثانية.


تحذير: لا تولد الدالة <code>uniqid()</code>‎ قيمًا آمنة مشفرة، ويجب ألا تستخدم لأغراض التشفير. إذا كنت بحاجة إلى قيمة آمنة مشفرة، ففكر في استخدام الدالة <code>random_int()‎</code> أو الدالة <code>random_bytes()</code>‎ أو الدالة <code>openssl_random_pseudo_bytes()‎</code> بدلاً منها.
تحذير: لا تولد الدالة <code>uniqid()</code>‎ قيمًا آمنة مشفرة، ويجب ألا تستخدم لأغراض التشفير. إذا كنت بحاجة إلى قيمة آمنة مشفرة، ففكر في استخدام الدالة <code>[[PHP/random int|random_int()‎]]</code> أو الدالة <code>[[PHP/random bytes|random_bytes()]]</code>‎ أو الدالة <code>[[PHP/openssl random pseudo bytes|openssl_random_pseudo_bytes()‎]]</code> بدلاً منها.


تنبيه: لا تضمن الدالة <code>uniqid()‎</code> تَفَرُّدَ القيمة المعادة. نظرًا لأن معظم الأنظمة تعدل ساعة النظام باستخدام بروتوكول NTP أو غيره، أي أنَّ ساعة النظام ستُغيّر طوال الوقت. لذلك، من الممكن ألا تعيد الدالة <code>uniqid()‎</code> مُعرِّفًا فريدًا للعملية (process) أو للخيط (thread). استخدم المعامل <code>more_entropy</code> لزيادة احتمالية توليد قيمة فريدة.
تنبيه: لا تضمن الدالة <code>uniqid()‎</code> تَفَرُّدَ القيمة المعادة. نظرًا لأن معظم الأنظمة تعدل ساعة النظام باستخدام بروتوكول NTP أو غيره، أي أنَّ ساعة النظام ستُغيّر طوال الوقت. لذلك، من الممكن ألا تعيد الدالة <code>uniqid()‎</code> مُعرِّفًا فريدًا للعملية (process) أو للخيط (thread). استخدم المعامل <code>more_entropy</code> لزيادة احتمالية توليد قيمة فريدة.
سطر 31: سطر 31:
المثال 1: مثال على الدالة <code>uniqid()</code>‎<syntaxhighlight lang="php">
المثال 1: مثال على الدالة <code>uniqid()</code>‎<syntaxhighlight lang="php">
<?php
<?php
printf("uniqid(): %s\r\n", uniqid());
printf("uniqid(): %s\r\n", uniqid());
printf("uniqid('php_'): %s\r\n", uniqid('php_'));
printf("uniqid('php_'): %s\r\n", uniqid('php_'));
printf("uniqid('', true): %s\r\n", uniqid('', true));
printf("uniqid('', true): %s\r\n", uniqid('', true));
?>
?>
</syntaxhighlight>
</syntaxhighlight>

المراجعة الحالية بتاريخ 15:58، 29 مايو 2018

(PHP 4, PHP 5, PHP 7)

تُنشئُ الدالة uniqid()‎ معرفًا فريدًا.

الوصف

string uniqid ([ string $prefix = "" [, bool $more_entropy = FALSE ]] )

تحصل الدالة uniqid()‎ على معرف فريد مع إمكانية إضافة سابقة له استنادًا إلى الوقت الحالي بالميكروثانية.

تحذير: لا تولد الدالة uniqid()‎ قيمًا آمنة مشفرة، ويجب ألا تستخدم لأغراض التشفير. إذا كنت بحاجة إلى قيمة آمنة مشفرة، ففكر في استخدام الدالة random_int()‎ أو الدالة random_bytes()‎ أو الدالة openssl_random_pseudo_bytes()‎ بدلاً منها.

تنبيه: لا تضمن الدالة uniqid()‎ تَفَرُّدَ القيمة المعادة. نظرًا لأن معظم الأنظمة تعدل ساعة النظام باستخدام بروتوكول NTP أو غيره، أي أنَّ ساعة النظام ستُغيّر طوال الوقت. لذلك، من الممكن ألا تعيد الدالة uniqid()‎ مُعرِّفًا فريدًا للعملية (process) أو للخيط (thread). استخدم المعامل more_entropy لزيادة احتمالية توليد قيمة فريدة.

المعاملات

prefix

يمكن أن يكون استخدام المعامل prefix مفيدًا، فلو حاولتَ مثلًا إنشاء عدّة معرّفات في الوقت نفسه في أكثر من خادم، فقد يصدف وأن يُنفَّذ السكربت في نفس الوقت تمامًا، مما يولّد معرّفات متماثلة وغير فريدة.

بترك المعامل prefix فارغًا، فسيكون طول السلسلة النصية المُعادَة 13 حرفًا. إذا كانت قيمة المعامل more_entropy هي TRUE، فسيكون طولها 23 حرفًا.

more_entropy

إذا ضُبِطَ المعامل more_entropy إلى القيمة TRUE، فستضيف الدالة uniqid()‎ إحتمالًا إضافيًّا (باستخدام خوارزمية مولد المتطابقة الخطية المختلطة) في نهاية القيمة المعادة، مما يزيد من احتمال أن تكون النتيجة فريدة.

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

تعيد الدالة uniqid()‎ معرفًا فريدًا يستند إلى الطابع الزمني كسلسلة نصية.

تحذير: تحاول الدالة uniqid()‎ إنشاء معرف فريد، ولكنها لا تضمن تَفَرُّدَ القيمة المعادة.

أمثلة

المثال 1: مثال على الدالة uniqid()

<?php
printf("uniqid(): %s\r\n", uniqid());
printf("uniqid('php_'): %s\r\n", uniqid('php_'));
printf("uniqid('', true): %s\r\n", uniqid('', true));
?>

ملاحظات

ملاحظة: في برمجية Cygwin، يجب تعيين قيمة المعامل more_entropy إلى القيمة TRUE لكي تعمل الدالة uniqid()‎.

مصادر