PDA

View Full Version : سوال: جستجو در مقدار ارسال get



رضا قربانی
دوشنبه 23 آبان 1390, 03:35 صبح
با سلام خدمت همگی
من یه آدرس به صورت گت ارسال می کنم به این صورت :

index.php?Reza=Galiken

حالا یک متغیر دارم که یه سری کاراکتر ها رو درون آرایه انداختم

$symbol = array( '*','\x7F','\xC0','\xFD', '\n', '\r','\t', '\x1a');

حالا می خوام بگم که اگر این کاراکترها ، داخل مقدار get من بود بیا و پیام ارور رو نمایش بده ولی نتونستم
من به این صورت عمل می کنم منتها باید مقدار گت من برابر با یکی از کاراکتر های $symbol باشه :

$symbol = array( '*','\x7F','\xC0','\xFD', '\n', '\r','\t', '\x1a');

if(in_array($_GET['Reza'], $symbol))
{
die('error');
}

این زمانی بهم ارور رو نشون می ده که مثلا آدرس من به این شکل باشه : index.php?Reza=*

ولی من می خوام اگر داخل مقدار ارسال گت من چنین کاراکتری بود پیام ارور رو نمایش بده.

به این صورت : index.php?Reza=Galik*en بود بهم ارور رو نشون بده با تشکر

Unique
دوشنبه 23 آبان 1390, 11:17 صبح
جناب قبانی ،
کد بالا برای t\ و n\ کار نمیده چون باید اونها را برای آرایه توی " بگذاری و نه ' !
میتونی توی آرایه loop کنی و با strpos چک کنی ببینی کاراکتر موجوده یا نه و یادت باشه حتما از === برای مقدار شرطی توی strpos استفاده کنی چون اگه کاراکتر مورد نظر در اولین کاراکتر رشته باشه position را 0 بر میگردونه و شرطت به مشکل بر میخوره !

persian-boy
دوشنبه 23 آبان 1390, 11:24 صبح
درود بر شما

برای سایر موارد این رو تست کنید



$symbol = array( '*','\x7F','\xC0','\xFD', '\n', '\r','\t', '\x1a');
if(strstr($_GET['Reza'], $symbol)) {die('error'); }

alismith
دوشنبه 23 آبان 1390, 11:54 صبح
سلام

دوست عزیز من یک کد نوشتم که در بعضی مواقع درست جواب داد اما کامل نیست و باید از یک parrent درست استفاده کرد

شما اینو ببین، اگه وقت شد شب روش کار می کنم و یک کد درست براتون میذارم



<?php

$symbol = array( '*','\x7F','\xC0','\xFD', '\n', '\r','\t', '\x1a');

foreach($symbol as $k => $v){

$count = strlen($v);

$q = $_GET['Reza'];

$str = str_split($q,$count);

foreach($str as $sK => $sV){

if($sV == $v){

die('error');
break;

}

}


}


?>


مثال :

reza.php?Reza=alia\x7F
reza.php?Reza=ali*



موفق باشید

Unique
دوشنبه 23 آبان 1390, 12:17 عصر
جایی توی سایت php.net ننوشته میشه از آرایه به عنوان needle توی strstr استفاده کرد !

persian-boy
دوشنبه 23 آبان 1390, 12:42 عصر
جایی توی سایت php.net ننوشته میشه از آرایه به عنوان needle توی strstr استفاده کرد !

بله الان خودم هم تست کردم جواب نداد . خیلی عذر میخوام

رضا قربانی
دوشنبه 23 آبان 1390, 14:05 عصر
جناب قبانی ،
کد بالا برای t\ و n\ کار نمیده چون باید اونها را برای آرایه توی " بگذاری و نه ' !
میتونی توی آرایه loop کنی و با strpos چک کنی ببینی کاراکتر موجوده یا نه و یادت باشه حتما از === برای مقدار شرطی توی strpos استفاده کنی چون اگه کاراکتر مورد نظر در اولین کاراکتر رشته باشه position را 0 بر میگردونه و شرطت به مشکل بر میخوره !
آقای قربانی هستم :لبخند:

ممنون از همگی دوستان
با strstr که نمی شه محتویات آرایه رو اینطوری که من می خوام انجام داد.

آقای Unique می شه با نمونه کد راهنماییم کنید .

ممنون می شم

alismith
دوشنبه 23 آبان 1390, 20:24 عصر
سلام

کار دوستمون persian boy درست بود، من کد رو تکمیل کردم :


$symbol = array( '*','\x7F','\xC0','\xFD', '\n', '\r','\t', '\x1a');

foreach($symbol as $k => $v){

if(strstr($_GET['Reza'], $v)) {

die('error');

break;

}

}




موفق باشید

رضا قربانی
پنج شنبه 26 آبان 1390, 01:16 صبح
کد بالا برای t\ و n\ کار نمیده چون باید اونها را برای آرایه توی " بگذاری و نه ' !

چرا ؟
ولی من جواب می گیرم و هیچ مشکلی با این قضیه ندارم !


و ممنون از همگی دوستانی که در این تاپیک وقتشون رو گذاشتن .