امنیت وب

04
بهمن
1394

PHP Tips: Include or Require a local variable with parameters

سلام.

امروز خواستم یک پارامتر را به یک فایل لوکال ارسال کنم، در حالی که اون فایل را include هم میکردم. ولی متاسفانه خطا میگرفتم و ...

زیاد جستجو کردم و البته دنبال بهترین راه حل بودم.

البته بهترین راه حل این هست که گویا از ورژن PHP 5 به بعد، این امکان به صورت زیر قرار داده شده، ولی من هر چه رفتم به در بسته خوردم! پس راه حل بعدی رو که توضیح خواهم داد استفاده کردم:

http://wiki.dreamhost.com/Allow_url_include

البته در ویکی فوق که آدرسش رو ملاحظه میفرمایید، چندین دلیل آورده مبنی بر اینکه این اقدام ناامن، غیر ضروری و .... است. ما هم به گفتارش احترام میگذاریم و میریم سراغ بهترین و بهینه ترین و امن ترین راه حل:

همه برنامه نویسان PHP میدونن که راحت ترین و ساده ترین کار این هست که پارامتر رو بسازیم و بعد از اون هم فایل مورد نظر که از اون متغیر استفاده میکنه، include کنیم.

ولی این یک فاجعه است! چرا که متغیری که میسازیم، به صورت Global خواهد بود.

 

و اما راه حل برای اینکه این حرکت را به صورت Local Variable انجام بدیم:

مثال:

فایل a.php :

<?php
$param="Salam";//Global Variable
function includeFile($param) { //Local Variable
    include_once("b.php");
} echo($param);//Salam
includeFile("NGM");//NGM echo($param);//Salam
 ?>

 

فایل b.php :

<?php 
echo($param);//Local Variable
?>

دسته بندی: PHP, امنیت وب