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(“string”,$ _ GET [var])捡起它?
答案 0 :(得分:1)
对网址字符进行双重编码。这只能起作用,因为你在php已经调用了urldecode之后第二次在变量上运行urldecode(它会自动执行)。 file.php?var=%2573tring
。 php已经在$ _GET值上运行urldecode。因此,php会将$_GET['var']
视为%73tring
(%25会转换为百分号)。您将获取值与不匹配的“字符串”进行比较。然后再将get值传递给urldecode,将get值保存到变量中(php是第一个)。 %73
转换为s
,使整个值string
。
答案 1 :(得分:0)
首先,您不需要为$ _GET
使用urldecode 自PHP 5.3.0起,eregi已被弃用。查看: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] );