在php中验证url参数[关闭]
Posted
技术标签:
【中文标题】在php中验证url参数[关闭]【英文标题】:Validate url parameters in php [closed] 【发布时间】:2012-02-11 22:18:26 【问题描述】:我的 .htaccess 中有页面规则,显示属性 ID 等...
我想确保验证我得到的每个参数都得到了正确的查询。
我有:
RewriteRule ^(.*)$ page.php?page=$1
RewriteRule ^property/(.*)$ property.php?pid=$1
所以在我的 php 中我会这样做:
$page = $_GET['page'];
和
$propertyid = $_GET['pid'];
现在我需要保护它们,但我想知道哪种方法最适合用来保护它们,而这正是我迷路的地方。
【问题讨论】:
$_GET['page'] = 只有数字和字母? $_GET['pid'] 只是数字? 这个问题到处都是。 1)这与SEO有什么关系? 2) “验证”和/或“安全”是什么意思? 是的,我只为页面获取数字和字母,为 pid 获取数字 我不希望我的网址是 property.php?pid=2 或 page.php?page=contact 您要保护哪种安全性? SQL注入?然后只需转义字符串或使用具有适当类型传递的 sprintf 即可完成这项工作 【参考方案1】:我认为页面参数应该有一个接受页面列表,然后在获取“页面”后,检查“页面”是否在接受列表中。 例如:
$arr_pages = ('page1','page2','page3');
$page = $_GET['page'];
if(in_array($page,$arr_pages))
// do some thing
else
// page not found
还有身份证:
$propertyid = intval($_GET['pid']);
希望得到帮助:)
【讨论】:
【参考方案2】:我会说使用这些规则:
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
【讨论】:
以上是关于在php中验证url参数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
关于在php中使用curl发送get请求时参数传递问题的解析
如何快速的获得url地址中参数名和参数值(在看PHP手册的时候无意间看见这两个函数,猜想能不能搭配使用。)