English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

طريقة تحويل سلسلة استعلام إلى متغيرات باستخدام parse_str في php

يشرح هذا المثال كيفية استخدام وظيفة parse_str في PHP لتحويل النصوص إلى متغيرات. يتم مشاركته مع الجميع للاستفادة منه، ويبدو كما يلي:

يمكن للوظيفة parse_str() تحويل النصوص إلى متغيرات، مما يعني تنفيذ آلية تحويل بين النصوص والمتغيرات، أثناء عملية نقل البيانات بين العملاء والخوادم، يتم نقل البيانات عبر النصوص، مثل طلب GET، ثم يتم تحويل النصوص إلى متغيرات على الخادم من خلال متغيرات عالمية مثل $_GET/$_POST، مثل: https://ar.oldtoolbag.com/?index.php?var1=1&var2=2، بعد الطلب يمكن للخادم استخدام $_GET['var1'] للحصول على النصوص var1=1&var2=2 وتحويلها إلى متغيرات. يمكن للوظيفة parse_str() تحقيق نفس 功能، باستخدام parse_str() لتحليل القيمة parse_str() من $_SERVER['QUERY_STRING']، يمكن تحقيق تحويل النصوص إلى متغيرات مباشرة، مثل $var1.

واحدًا - نموذج الوظيفة

void parse_str ( string str [, array &arr] )

اثنانًا - التطابق بالنسخة

PHP 3, PHP 4, PHP 5

ثلاثةً - الاستخدام الأساسي للوظيفة والمثال

1. تفسر النصوص إلى متغيرات

<?php
parse_str("var1=jb51&var2=parse_str");
echo $var1.$var2;
?>

2. تفسر النصوص وتخزن المتغيرات في المجموعات

<?php
parse_str("var1=jb51&var2=parse_str",$array);
print_r($array);
?>

الإخراج:

Array ( [var1] => jb51 [var2] => parse_str )

شرح: تم إضافة هذا التخزين للنصوص في الصفوف إلى PHP 4.0.3.

3. تحتوي النصوص المفسرة على فراغات

<?php
parse_str("v ar1=jb51&var 2=parse_str",$array);
print_r($array);
?>

الإخراج:

Array ( [v_ar1] => jb51 [var_2] => parse_str )

شرح: يتم تحويل الفراغات مباشرةً إلى خط تحت الأساس _.

أربعةً - ملاحظات

1. إذا لم يتم تعيين متغير array، فإن المتغيرات التي يتم ضبطها بواسطة هذه الوظيفة ستقوم بتبديل المتغيرات التي تم ضبطها بالفعل بعنوان متغيرات مشابهة.

2. إعداد magic_quotes_gpc في php.ini يؤثر على مخرجات هذه الوظيفة. إذا كان مفعلاً، يتم تحويل المتغيرات إلى addslashes() قبل تحليل parse_str().

3. هناك ثغرة في وظيفة parse_str() عند معالجة المعلمات، يمكن للمهاجم استخدام هذه الثغرة لتمكين register_globals، مما يتيح له استخدام ثغرات أخرى في سكريبتات PHP أخرى. إذا تم استدعاء parse_str() بمفرد المعامل، فإن الوظيفة ستعتمد على أن المعامل تم إرساله عبر URL كطلب نسيج، ولكن يمكن للمهاجم إرسال العديد من متغيرات الطلب في أثناء استدعاء parse_str() لتحفيز إنهاء طلب memory_limit. إذا تم إغلاق الطلب أثناء استدعاء parse_str()، فإن علامة register_globals ستظل مفتوحة طوال حياة عملية webserver المتبقية.

للمزيد من المعلومات حول PHP، يمكن للقراء المهتمين بالاطلاع على مواضيع خاصة بالموقع: 'تحليل استخدام 字符串(string) في PHP'، 'دليل PHP على بنيات البيانات والخوارزميات'، 'تحليل خوارزميات تصميم برامج PHP'، 'تحليل خوارزميات ترتيب PHP'، 'تحليل خوارزميات استعراض وتقنيات PHP'، 'تحليل تقنيات حسابيات PHP'، 'دليل تقنيات التشغيل لقائمة PHP'، و 'تحليل تقنيات تعامل قواعد البيانات الشائعة في PHP'.

آمل أن يساعدكم ما ذكرته في هذا المقال في تصميم برامج PHP الخاصة بكم.

بيان: محتويات هذا المقال تم جمعها من الإنترنت، وتعتبر ملكية المالك الأصلي، ويتم جمع المحتويات من قبل المستخدمين على الإنترنت الذين يقومون بتحميلها بشكل تلقائي، ولا يمتلك هذا الموقع حقوق الملكية، ولا يتم تعديل المحتويات بشكل يدوي، ولا يتحمل هذا الموقع أي مسؤولية قانونية مرتبطة بذلك. إذا اكتشفتم محتويات تتضمن حقوق النسخ، يرجى إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # ب @) لتقديم الشكوى، وقدموا الأدلة ذات الصلة، وإذا تم التحقق من ذلك، سيتم حذف المحتويات المشكوك فيها فورًا.

أنت قد تحب