استفاده از متغیر ها در Url
سلام
من یک کوکی lang داخل برنامه تعریف کردم که زبان رو تعیین میکنه و متغیر translations رو عوض میکنه دو تا پوشه داخل برنامه هستن که یکی زبان فارسی و دیگری انگلیسیه میخوام به صورت زیر اسکریپت رو تغییر بدم جوری که اگر متغیر فارسی بود زبان فارسی و اگر متغیر انگلیسی بود زبان انگلیسی انتخاب بشه داخل اسکریپت به این صورته:
require_once(DIR . '/../translations/user_translations/trans-thanks.php');
میخوام اینطوری باشه(قسمت translations بر اساس متغیر تعریف شده تغییر کنه):
require_once(DIR . '/../$translations/user_translations/trans-thanks.php');
مثلا اگر انگلیسی بود بشه:
require_once(DIR . '/../english/user_translations/trans-thanks.php');
ولی وقتی به این حالت در میاد به جای جایگزین کردن متغیر translations ، کلمه $translations رو داخل url میذاره و پوشه $translations رو باز میکنه
کسی میدونه چطور این متغیر رو داخل url بذارم؟ اگر امکانش هست لطفا راهنمایی کنید ممنون از توجهتون
نقل قول: استفاده از متغیر ها در Url
سلام
یکی از دو روش زیر را امتحان کنید:
(به جایگزین شدن دابل کوتیشن بجای کوتیشن دقت کنید)
require_once(DIR . "/../$translations/user_translations/trans-thanks.php");
//یا این
require_once(DIR . '/../'.$translations.'/user_translations/trans-thanks.php');
به این نکته امنیتی توجه داشته باشید که تمامی متغییرهای دریافتی از سمت کاربر باید اعتبارسنجی شود علاوه بر این باید مقدار پیش فرض آن نیز مشخص شود مثلا اگر کوکی زبان خالی بود کدام زبان به عنوان پیش فرض در نظر گرفته شود. به عنوان مثال:
$translation = $_COOKIE['lang']=='english' ? 'english':'persian';
نقل قول: استفاده از متغیر ها در Url
سلام
خیلی متشکرم از راهنماییتون
راه پیشنهادیتون جواب داد
به نکته خوبی اشاره کردید،
به این کد توجه کنید
<?php
if (isset($_COOKIE["translations"])){
$translations = $_COOKIE['translations'];
} else {
$translations = "translations";
}
?>
منظورتون همینه دیگه؟
نقل قول: استفاده از متغیر ها در Url
نقل قول:
نوشته شده توسط
erfansaberi
سلام
خیلی متشکرم از راهنماییتون
راه پیشنهادیتون جواب داد
به نکته خوبی اشاره کردید،
به این کد توجه کنید
<?php
if (isset($_COOKIE["translations"])){
$translations = $_COOKIE['translations'];
} else {
$translations = "translations";
}
?>
منظورتون همینه دیگه؟
خیر منظورم اینه نباید به دادههای دریافتی از سمت کلاینت اعتماد کنید. مثلا کاربر بیاد دستی مقدار کوکی را تغییر بدهد و چیزی غیر از مقادیر مورد انتظار شما english یا persian درج کند. بنابراین شما باید مقدار کوکی را بررسی کنید که حتما یکی از این دو مقدار باشد.
چون دو تا بیشتر نیست همین یک خط کفایت می کند:
$translation = $_COOKIE['lang']=='english' ? 'english':'persian';
برای تعداد بیشتر میتوانید مقادیر مجاز را در یک آرایه بریزید و از دستور in_array استفاده کنید:
$langs = ['persian', 'english'];
$translation = in_array($_COOKIE['lang'], $langs) ? $_COOKIE['lang'] : 'english';//default value