2013-04-29 6 views
0
if(eregi("string",$_GET[var])) { 
    echo("<p>don't stop here!</p>"); 
    exit(); 
} 
$_GET[var] = urldecode($_GET[var]); 
if ($_GET[var] == "string") 
    echo("<p>victorious!<p>"); 

как бы я использовать http://www.url.com/file.php?var=string без eregi ("строка", $ _ GET [вар]) поднять его?

+0

Что вы подразумеваете под «прошлым»? –

ответ

0

первое, что вам не нужно использовать urldecode за $ _GET

eregi был нежелателен в PHP 5.3.0. Вид: http://php.net/manual/en/function.eregi.php

использовать этот код

if($_GET[var] != "string") { 
    echo("<p>don't stop here!</p>"); 
    exit(); 
} 
if ($_GET[var] == "string") 
    echo("<p>victorious!<p>"); 

, если вы хотите, чтобы игнорировать регистр различие использовать это в первой строке

$_GET[var] = strtolower($_GET[var]); 
1

Дважды закодировать URL символов. Это работает только потому, что вы запускаете urldecode в переменной во второй раз после того, как php уже вызвал urldecode (он делает это автоматически). file.php?var=%2573tring. php уже запускает urldecode по значениям $ _GET. Таким образом, php увидит $_GET['var'] как %73tring (% 25 преобразуется в знак процента). Вы сравниваете значение get с «строкой», которое не соответствует. Затем вы сохраняете значение get в переменной после передачи его через urldecode (php был первым). %73 переводит на s, делая полную стоимость string.