آخر تابستونت رو متفاوت کن 🌟 ۳۰٪ تخفیف + هدیه ۳ میلیونی 🎁😉
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ آیهان
جلوگیری از ارسال پارامتر با strtok !
جامعه پی اچ پی ایجاد شده در ۱۴ اردیبهشت ۱۴۰۲

سلام وقتتون بخیر

منم دقیقا مشکلم با آقای مهرداد تاج کرمی یکی هست توی تایپک 8355

وقت توی اسکریپت ما نتونیم اطلاعات رو با $_GET بگیریم بعضی جاها مشکل میخوریم و اذیت کننده میشه

مثلا درگاه‌های پرداخت اطلاعات رو به صورت $_get ارسال میکنن

یا توی فایل robots.txt مسدود کردن راحت‌تر میشه

user-agent: *
disallow: /card
disallow: /shipping
disallow: /payment
disallow: *?*
disallow: /search?q=*
disallow: /profile*
disallow: *utm_*

به عنوان مثال این فایل robots.txt سایت دیجی کالا هست که راحت فیلترکرده بعد علامت سوال گوگل نتونه ایندکس کنه

این مشکل رو باید چجوری حلش کنیم بشه به مقادیر $_GET دسترسی داشت

http://afra.ex/user/index.php?c=payment&a=verify&iid=10&Authority=000000000000000000000000000001092580&Status=NOK#ordersNav

اینم یه نمونه برگشتی از درگاه‌های پرداختی که اطلاعات با $GET ارسال شده

سلام

در مورد $_GET که فرمودید، تمام این uri‌ها براساس همین $_GET گرفته میشن و تفاوتش نوع ساختار friendly بودنشه.

در مورد درگاه بانک هم، شما callbackURL رو هرطور و با هر ساختاری مشخص کنید، بانک به همین صورت ریدایرکت میکنه، مثلا برای callback من چنین ساختاری میدم:

SiteUrl/payment/verify?id=12dda

برای انتقال به درگاه:

SiteUrl/payment/mrtav2

این ساختار کلی است که پارامتر بعدیشون آیدی فاکتور/سفارش یا توکن میخوره.

یک بار در همین فریمورک آموزشی این دستورو اجرا کنید، میبینید پارامترها گرفته میشن:

print_r($_GET);

برای ساخت uri دستتون بازه، وب سرور چک میکنه rule ای اگر ساخته باشید تطبیق داده میشه وگرنه هیچ.

البته uri رو در اینصورت کامل بگیرید و با توکن تیکه نکنید.

احمدرضا فاطمی کیا ۱۴ اردیبهشت ۱۴۰۲، ۱۵:۰۵

بله دقیقا حق با شما هست

توی ارسال به بانک که هیچ مشکلی نداریم ارسال میشه

وقلی توی کال بک مثلا Authority رو که به صورت $_GET به سرور ما ارسال میشه میخوایم بگیریم من از $_GET میام دامپ میگیرم خروجی نال بهم میده


var_dump($_GET) به این شکل دقیقا قراخوانی میکنم

وب سرورم nginx هست

سیستم عامل هم لینوکس ubuntu

کانفیگ هم با وجود اینکه خودم بلد بودم بزنم طبق آموزش کانفیگ خود شما زدم

مشکل هم فقط توی ویو‌ها هستش همین اطلاعات رو به روت سرور ارسال میکنم دامپ میگیرم کامل اطلاعات رو بهم میده طبق تصویر سوم


e1c6-img1.png


38e6-img2.png


1304-img3.png

آیهان ۱۴ اردیبهشت ۱۴۰۲، ۱۹:۱۱

از strtok میتونید استفاده نکنید و در روتر جایی که تطبیق آدرس رو چک میکنید چک کنید که query پارمتر‌ها ست شدن یا نه سپس با یک explode بر اساس ? در uri انجام بدید و بعد یک حلقه بزنید و خودتون به سوپرگلوبال Get این مورد رو پاس بدید.

به این شکل:

$baseUri = "/call?user=ali&&id=56";
$param=explode('?',$baseUri);
$uri=$param[0];
if(isset($param[1]){
$queryItems=explode('&&',end($param));
foreach($queryItems as $item):
$queryKeyValue=explode('=',$item);
$_GET[$queryKeyValue[0]]=$queryKeyValue[1];
endforeach;
var_dump($_GET);
}else{
echo 'We Couldnt Give Any Parameter!';
}


احمدرضا فاطمی کیا ۱۵ اردیبهشت ۱۴۰۲، ۱۵:۱۳