从方法GET表单url中删除非字母数字

时间:2015-04-06 16:05:26

标签: php regex get

我有一个method="GET"表单,会在提交时生成foo.php?id = userinput

我目前使用preg_replace("/\W|_/", "", $_GET['id']);删除GET字符串中的所有非字母数字字符,后者工作正常后端(添加到数据库等(我不插入数据库只是示例))但是url链接没有清理和结果无论用户输入什么加上浏览器编码。

因此,对于时刻,如果用户输入f& oo )(£b$%a&r£1支持清除创建foobar1,但网址结果为foo.php?id=f%26+oo+)(£b%24%25a%26r£1

是否可以清除网址结果?如果可以,如何清除?

更新

提交代码:

if(!$_GET['id']) {

 header('location: index.php');
 exit;

} else {

 $get_id = preg_replace("/\W|_/", "", $_GET['id']);

}

1 个答案:

答案 0 :(得分:1)

您可以在preg_replace方法之后使用此PHP代码进行网址重定向:

if(!$_GET['id']) {
   header('location: index.php');
   exit;
} else if ( preg_match('/[\W_]/', $_GET['id']) ) {
    $get_id = preg_replace('/[\W_]/', "", $_GET['id']);
    header('Location: ' $_SERVER["SCRIPT_URI"] . $get_id);
    exit;
}