فانکشن‌های سازگاری

مجتبی پاکزاد کدایگنایتر 3.1.9 در حال تکمیل رایگان

کدایگنایتر مجموعه‌ای از فانکشن‌های سازگاری را ارائه می‌دهد که به کمک آن‌ها قادر خواهید بود از آن دسته از فانکشن‌های نیتیو پی‌اچ‌پی استفاده کنید که در ورژن‌های بالاتر از ورژن نصب شده شما موجود هستند یا وابسته به اکستنشن خاصی هستند.

گرچه این فانکشن‌ها نیز وابستگی‌هایی دارند، اما اگر این فانکشن‌ها به صورت نیتیو در ورژن پی‌اچ‌پی سرورتان وجود ندارد، استفاده از این فانکشن‌های تعریف شده توسط کدایگنایتر مفید خواهد بود.

توجه

مشابه فانکشن‌های عمومی، فانکشن‌های سازگاری نیز مادامی که وابستگی‌های آن‌ها تامین شود، همیشه در دسترس خواهند بود.

هش کردن پسورد

این مجموعه از فانکشن‌ها، بَک‌پورتی (backport) از اکستنشن Password Hashing است که از PHP 5.5 قابل استفاده است.

اصطلاحات فنی

پورت کردن یا سازگارسازی (Porting) فرآیند تطبیق نرم‌افزار به منظور اجرا در محیط پردازشی متفاوت از محیط پردازشی اصلی که برای آن طراحی شده، است. همچنین زمانی که نرم‌افزار/سخت‌افزار تغییر داده می‌شود تا قابل استفاده در محیط‌های مختلف باشد نیز این اصطلاح استفاده می‌شود. احتمالا اصطلاح پورت کردن را قبلا در مورد بازی‌های کنسول‌های مختلف یا رام‌های گوشی‌های هوشمند شنیده‌اید.

نرم‌افزاری قابل پورت کردن است که هزینه پورت کردن آن برای یک پلتفرم جدید به طور قابل ملاحظه‌ای کمتر از بازنویسی آن از ابتدا باشد. 

بَک‌پورت (BackPort) عمل پورت کردن فیچرهای ورژن جدید یک نرم‌افزار به یک ورژن قدیمی‌تر است. بَک پورتینگ بخشی از مراحل نگهداری در فرآیند توسعه نرم‌افزار است و معمولا با هدف رفع مشکلات امنیتی در ورژن‌های قدیمی‌تر نرم‌افزار و همچنین برای ارائه فیچرهای جدید به ورژن‌های قدیمی‌تر انجام می‌شود.

وابستگی‌ها

  • PHP 5.3.7
  • پشتیبانی از CRYPT_BLOWFISH توسط فانکشن crypt()

ثابت‌ها

  • PASSWORD_BCRYPT
  • PASSWORD_DEFAULT

رفرنس فانکشن

password_get_info($hash)
پارامترها
  • $hash نوع استرینگ - هش پسورد
مقدار بازگشتی اطلاعاتی درباره پسورد هش شده
نوع مقدار بازگشتی آرایه

برای اطلاعات بیشتر لطفا به password_get_info() مراجعه کنید.

password_hash($password, $algo[, $options = array()])
پارامترها
  • $password نوع استرینگ - پسورد با فرمت متنی ساده یا به اصطلاح Plain-text
  • $algo نوع عدد صحیح - الگوریتم هش کردن
  • $options نوع آرایه - آپشن‌های اختیاری
مقدار بازگشتی پسورد هش شده یا FALSE در صورت شکست
نوع مقدار بازگشتی استرینگ

برای اطلاعات بیشتر لطفا به password_hash() مراجعه کنید.

توجه

به جز در حالتی که Salt خود را (که معتبر نیز است) استفاده می‌کنید، این فانکشن یک وابستگی دیگر نیز به یک سورس قابل دسترس CSPRNG دارد. که هر کدام از موارد زیر قادر به برآورده کردن این نیاز هستند:

  • mcrypt_create_iv() با MCRYPT_DEV_URANDOM
  • openssl_random_pseudo_bytes()
  • /dev/arandom
  • /dev/urandom
password_needs_rehash()
پارامترها
  • $password نوع استرینگ - پسورد با فرمت متنی ساده یا به اصطلاح Plain-text
  • $algo نوع عدد صحیح - الگوریتم هش کردن
  • $options نوع آرایه - آپشن‌های اختیاری
مقدار بازگشتی اگر هش برای همخوانی (تطبیق ) با الگوریتم مشخص شده و آپشن‌های این فانکشن، نیاز به هش شدن مجدد داشته باشد، TRUE برمی‌گرداند، در غیراینصورت FALSE برمی‌گرداند
نوع مقدار بازگشتی بولین

برای اطلاعات بیشتر لطفا به password_needs_rehash() مراجعه کنید.

password_verify($password, $hash)
پارامترها
  • $password نوع استرینگ - پسورد با فرمت متنی ساده یا به اصطلاح Plain-text
  • $hash نوع استرینگ - هش پسورد
مقدار بازگشتی اگر پسورد با هش مطابقت داشته باشد TRUE و در غیراینصورت FALSE
نوع مقدار بازگشتی بولین

برای اطلاعات بیشتر لطفا به password_verify() مراجعه کنید.

هش (خلاصه پیام)

این لایه سازگاری دربردارنده‌ی بَک‌پورت‌هایی برای فانکشن‌های hash_equals() و hash_pbkdf2() است که روش دیگر برای دسترسی داشتن به این فانکشن‌ها به ترتیب نیازمند PHP 5.6 و یا PHP 5.5 است.

وابستگی‌ها

  • نیاز به هیچ وابستگی ندارد.

رفرنس فانکشن

hash_equals($known_string, $user_string)
پارامترها
  • $known_string نوع استرینگ - استرینگی مشخص برای مقایسه با استرینگ کاربر
  • $user_string نوع استرینگ - استرینگ ارائه شده توسط کاربر
مقدار بازگشتی اگر استرینگ‌ها با هم مطابقت داشته باشند TRUE و در غیراینصورت FALSE
نوع مقدار بازگشتی بولین

برای اطلاعات بیشتر لطفا به hash_equals() مراجعه کنید.

hash_pbkdf2($algo, $password, $salt, $iterations[, $length = 0[, $raw_output = FALSE]])
پارامترها
  • $algo نوع استرینگ - الگوریتم هش کردن
  • $password نوع استرینگ - پسورد
  • $salt نوع استرینگ - سالت برای هش کردن
  • $iterations نوع عدد صحیح - تعداد تکرارها برای انجام در حین استخراج
  • $length نوع عدد صحیح - طول استرینگ خروجی
  • $raw_output نوع بولین - آیا داده باینری خام برگشت داده شود
مقدار بازگشتی کلید استخراج شده پسورد یا FALSE در صورت شکست
نوع مقدار بازگشتی استرینگ

برای اطلاعات بیشتر لطفا به hash_pbkdf2() مراجعه کنید.

مولتی‌بایت استرینگ (Multibyte String)

این مجموعه از فانکشن‌های سازگاری، پشتیبانی محدودی برای اکستنشن Multibyte String ارائه می‌دهند. با توجه به سولوشن‌های جایگزین محدود، تنها چند فانکشن در دسترس هستند.

توجه

اگر پارامتر مربوط به character set حذف شود، از متغییر $config['charset'] موجود در فایل application\config\config.php استفاده می‌شود.

پیشنیازها

اکستنشن iconv

مهم

این وابستگی اختیاری است و این فانکشن‌ها همیشه اعلان (declare) می‌شوند و قابل استفاده هستند. اگر اکستنشن iconv در دسترس نباشد، این فانکشن‌ها از ورژن غیر مولتی‌بایتی خود (non-mbstring) استفاده می‌کنند.

مهم

هر جا که یک character set به کار گرفته شود، باید توسط iconv از آن پشتیبانی شود و در فرمتی باشد که iconv بتواند آن را شناسایی کند.

توجه

برای بررسی وابستگی بر روی اکستنشن mbstring، از ثابت MB_ENABLED استفاده کنید.

رفرنس فانکشن

mb_strlen($str[, $encoding = NULL])
پارامترها
  • $str نوع استرینگ - استرینگ ورودی
  • $encoding نوع استرینگ - Character set
مقدار بازگشتی تعداد کاراکترهای استرینگ ورودی یا FALSE در صورت شکست
نوع مقدار بازگشتی استرینگ

برای اطلاعات بیشتر لطفا به mb_strlen() مراجعه کنید.

mb_strpos($haystack, $needle[, $offset = 0[, $encoding = NULL]])
پارامترها
  • $haystack نوع استرینگ - استرینگی که جستجو در آن انجام می‌شود
  • $needle نوع استرینگ - بخشی از متن که می‌خواهیم در استرینگ جستجو کنیم
  • $offset نوع عدد صحیح - آفست (یعنی شماره کاراکتر شروع) جستجو را مشخص می‌کند
  • $encoding نوع استرینگ - Character set
مقدار بازگشتی عددی که موقعیت اولین کاراکتری را نشان می‌دهد که استرینگ $needle در آن موقعیت یافت شود یا FALSE در صورت شکست
نوع مقدار بازگشتی استرینگ

برای اطلاعات بیشتر لطفا به mb_strpos() مراجعه کنید.

mb_substr($str, $start[, $length = NULL[, $encoding = NULL]])
پارامترها
  • $str نوع استرینگ - استرینگ ورودی
  • $start نوع عدد صحیح - موقعیت اولین کاراکتر
  • $length نوع عدد صحیح - حداکثر تعداد کاراکترها
  • $encoding نوع استرینگ - Character set
مقدار بازگشتی بخشی از استرینگ $str با توجه به مقادیر مشخص شده در پارامترهای $start و $length یا FALSE در صورت شکست
نوع مقدار بازگشتی استرینگ

برای اطلاعات بیشتر لطفا به mb_substr() مراجعه کنید.

فانکشن‌های استاندارد

این مجموعه از فانکشن‌های سازگاری برای تعدادی از فانکشن‌های استاندارد پی‌اچ‌پی که برای اجرا به ورژن جدیدتری از پی‌اچ‌پی نیاز دارند، به عنوان پشتیبان ارائه شده‌اند.

وابستگی‌ها

  • نیاز به هیچ وابستگی ندارد.
array_column(array $array, $column_key[, $index_key = NULL])
پارامترها
  • $array نوع استرینگ - آرایه‌ای که نتایج از آن استخراج می‌شود
  • $column_key نوع mixed (بیش از یک نوع می‌تواند باشد) - کلید ستون برای برگرداندن مقادیر از آن
  • $index_key نوع mixed (بیش از یک نوع می‌تواند باشد) - کلیدی که برای مقادیر بازگشتی استفاده می‌شود
مقدار بازگشتی آرایه‌ای که مقادیر یک ستون از آرایه ورودی را نشان می‌دهد
نوع مقدار بازگشتی آرایه

برای اطلاعات بیشتر لطفا به array_column() مراجعه کنید.

hex2bin($data)
پارامترها
  • $data نوع استرینگ - نمایش هگزادسیمال داده‌ها
مقدار بازگشتی نمایش باینری داده‌های داده شده
نوع مقدار بازگشتی استرینگ

برای اطلاعات بیشتر لطفا به hex2bin() مراجعه کنید.