我已经解决了一个问题,并且不确定这是否是解决问题的地方。假设我有一个网址如下:http://localhost/products/1010/minprice/1/maxprice/100/
现在让我们说有人试图通过删除部分或全部变量名称产品minprice和maxprice来改变这个URL。无论如何都要检查以确保网址是有效的,如果变量已被更改,是否可以在重定向页面时将其删除?
我目前要检查网址,这只是另一个网址示例:
if(preg_match('#^/carsearch(.*/)?(manufacturer/([A-Za-z0-9\-%]+))(/.*)?$#',$uri,$tmatch))
$return['manufacturer'] = $tmatch[3];
然后检查我的查询字符串变量:
if($_GET['manufacturer'] != null) {
$n .= 'manufacturer/'.$_GET['manufacturer'].'/';
}
使用新的$ n变量重新加载页面,该变量保存新的有效URL。 URL构建正常,但页面只是不断重新加载,你可以想象。我只是想知道,有更好的方法吗?我甚至不知道我是否走在正确的轨道上。
非常感谢您的帮助。
答案 0 :(得分:0)
if(isset($var))
检查变量是否为isset。您也可以执行类似
的操作if(isset($var) && product_exists($productID))
//accept
else
//deny
无论你在做什么,这都是相同的原则。
答案 1 :(得分:0)
当您将参数传递给页面时,客户端始终可以更改它们(即使将数据作为表单POST传递,或者像在URL中一样传递数据)。 您应该使用验证过程,以确保URL的格式符合您的预期。 一种方法是使用正则表达式,例如:
if ( preg_match( "/^\/products\/\d+\/minprice\/\d+\/maxprice\/\d+\/$/", $url ) != 1 )
{
echo( "Stop changing my URL!" );
}
else
{
echo( "Thanks for not changing anything!" );
}
我看到你正在使用某种你没有指定的重写方法,所以你需要做的是在测试之前将请求路径的值放入变量$ url中。 正则表达式只是测试以下内容: