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

من موسوعة حسوب
< PHP
لا ملخص تعديل
إضافات و تعديلات تنسيقية
سطر 2: سطر 2:
(PHP 4, PHP 5, PHP 7)
(PHP 4, PHP 5, PHP 7)


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


== الوصف ==
== الوصف ==
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
string uniqid ([ string $prefix = "" [, bool $more_entropy = FALSE ]] )
string uniqid ([ string $prefix = "" [, bool $more_entropy = FALSE ]] )
</syntaxhighlight>تحصل الدالة uniqid()‎ على معرف فريد مع إمكانية إضافة سابقة له استنادًا إلى الوقت الحالي بالميكروثانية.
</syntaxhighlight>تحصل الدالة <code>uniqid()</code>‎ على معرف فريد مع إمكانية إضافة سابقة له استنادًا إلى الوقت الحالي بالميكروثانية.


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


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


== المعاملات ==
== المعاملات ==


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


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


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


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


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


== أمثلة ==
== أمثلة ==
المثال 1: مثال على الدالة uniqid()‎<syntaxhighlight lang="php">
المثال 1: مثال على الدالة <code>uniqid()</code>‎<syntaxhighlight lang="php">
<?php
<?php


سطر 42: سطر 42:


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


== مصادر ==
== مصادر ==

مراجعة 00:37، 27 مايو 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()‎.

مصادر