验证php中的url参数

时间:2012-01-17 02:46:18

标签: php validation .htaccess url mod-rewrite

我的.htaccess中有针对页面,show property id等的规则......

我想确保我验证我得到的每个参数。

我有:

RewriteRule ^(.*)$ page.php?page=$1
RewriteRule ^property/(.*)$ property.php?pid=$1

所以在我的php中我做了:

$page = $_GET['page'];

$propertyid = $_GET['pid'];

现在我需要保护它们,但我想知道哪种方法最适合用来保护它们,这就是我失去的地方。

2 个答案:

答案 0 :(得分:15)

我会说要使用这些规则:

RewriteRule ^([a-z0-9]+)/?$ page.php?page=$1 [L,NC]
RewriteRule ^property/([0-9]+)/?$ property.php?pid=$1 [L,NC]

这样,如果有人输入除字母和数字(用于页面)和数字(用于属性)之外的任何字符,它将显示未找到的页面。

如果您希望确实,您可以

$page = mysql_real_escape_string($_GET['page']);只需确保您的数据库连接已打开,您就可以像$propertyid = (int)$_GET['pid'];

那样投射pid

答案 1 :(得分:0)

我认为使用page参数你应该有一个acept页面列表,然后在获取'page'之后,检查'page'是否在接受列表中。 例如:

$arr_pages = ('page1','page2','page3');
$page = $_GET['page'];
if(in_array($page,$arr_pages))
{
// do some thing
}
else
{
 // page not found
}

并且id:

$propertyid = intval($_GET['pid']);

希望这有帮助:)