آموزش PHP

کلید شماره 441 ---> از دسته بندی : مباحث عمومی در PHP

نحوه ارسال متغیرها با روش GET ، در صورت وجود کاراکترهای غیر مجاز برای URL صفحه، با تابع urlencode در PHP :

همان طور که می دانید، با استفاده از روش GET ، می توانیم متغیرها و مقادیر آنها را به یک صفحه دیگر ارسال کنیم و اطلاعات مربوط به متغیرهای ارسالی، در آدرس URL صفحه مقصد، نوشته خواهد شد، اما یک نکته مهم وجود دارد و آن این است که ما نمی توانیم هر کاراکتری را در آدرس URL صفحات به کار ببریم و به کار بردن برخی کاراکترها در آدرس URL ، ممنوع است.

مثلا فرض کنید که بخواهیم به صفحه ای با نام page.php ، متغیر با نام name و مقدار ali را ارسال کنیم، بنابراین باید به آن صفحه، به صورت زیر لینک بدهیم :


<a href="page.php?name=ali">page</a>

خوب اکنون فرض کنید که به جای ali ، قصد داشته باشیم مقدار زیر را برای متغیر name تعیین کنیم :


ali reza

پس در نگاه اول، به نظر می آید که باید کد زیر را بنویسیم (اما غلط است) :


<a href="page.php?name=ali reza">page</a>

کد بالا غلط است، زیرا باعث می شود که در بین کاراکترهای آدرس URL ، یک فضای خالی داشته باشیم که غیرمجاز است. این یک مثال است و علامت هایی مثل & و = نیز اگر در مقدار متغیر وجود داشته باشند، باعث به وجود آمدن یک اشتباه در روند ارسال متغیرها خواهند شد (زیرا این دو علامت را برای روش GET به کار می بریم).

راه حل این مشکل، استفاده از تابع urlencode در PHP می باشد. این تابع، با کد کردن کاراکترها، عملا باعث می شود که کاراکترهای غیرمجاز، در آدرس URL صفحه، ظاهر نشوند. حتما تاکنون، علامت های % به کار رفته در آدرس URL برخی سایت ها را دیده اید. این علامت، توسط همین تابع ایجاد می شود و بخشی از کدهای حاصل از این تابع است.

شیوه استفاده از تابع urlencode به صورت زیر می باشد (برای همان موردی که مثال زدیم) :


<a href="page.php?name=<?php echo urlencode("ali reza"); ?>">page</a>

بنابراین پس از کلیک بر روی لینک، در انتهای آدرس URL صفحه مقصد، عبارت زیر نمایش داده می شود (در برخی مرورگر ها، باید در قسمت نمایش آدرس، کلیک کنید تا آدرس به طور کامل نمایش داده شود) :


/page.php?name=ali+reza

مشاهده می کنید که تابع urlencode ، کاراکتر فاصله را به کاراکتر + تبدیل کرده است.

نکته :

نکته مهمی که باید به آن توجه داشت، این است که دیگر نیازی نیست که در صفحه مقصد، از تابع urlencode استفاده کنیم و خود PHP ، به طور خودکار، کاراکترها را در آن صفحه، تبدیل به همان کاراکترهای اصلی می کند که مد نظر ما بوده است.

مثال :

فرض کنید این بار بخواهیم مقدار ali&reza را به عنوان مقدار متغیر ارسال کنیم، بنابراین باید لینک را به صورت زیر تعریف کنیم :


<a href="page.php?name=<?php echo urlencode("ali&reza"); ?>">page</a>

بنابراین پس از کلیک بر روی لینک، در انتهای آدرس URL صفحه مقصد، عبارت زیر نمایش داده می شود (در برخی مرورگر ها، باید در قسمت نمایش آدرس، کلیک کنید تا آدرس به طور کامل نمایش داده شود) :


/page.php?name=ali%26reza

مشاهده می کنید که تابع urlencode ، کاراکتر & را به کاراکترهای %26 تبدیل کرده است.

نکته :

تابع rawurlencode نیز همانند تابع urlencode در PHP ، برای کد کردن آدرس صفحات URL به کار می رود. به مثال زیر توجه کنید :


<?php
$string = "ali & reza";
echo urlencode($string);
echo "<br />";
echo rawurlencode($string);
?>

نتیجه :

Result


مبحث بالا، مفید بود و سایت کلیدستان را دوست داشتم :
محبوب کردن این مبحث در گوگل :
اون چیزی که میخواستم نبود :
سوال دارم :
ورود ثبت نام
جستجو در عنوان کلیدها (مبحث ها) در کلیدستان
(توصیه : یک یا دو کلمه جستجو شود)

شماره کلید :



راهنمای توابع PHP بر اساس حرف اول تابع :


A B C D E F G H I J K L M N O P Q R S T U V W X Y Z