在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手册的时候无意间看见这两个函数,猜想能不能搭配使用。)

急!!php获取url参数

带有 php 样式 url 参数的 Blazor ( ?parameter= )

php如何获取url的参数

根据 URL 参数重定向,如果 URL 参数在表行中可用 - PHP MySQL