我有一个需要清理的链接。
http://'.$_SERVER["SERVER_NAME"]."".$_SERVER["REQUEST_URI"].'" />
此链接将生成以下内容:
http://www.site.com/friends.php
其中friends.php
是$_SERVER["REQUEST_URI"]
。
有时我会将id传递给链接:
http://www.site.com/friends.php?id=123456
我想要的是使用strip_tags或urldecode清理此链接,并确保id
中传递的任何内容都是int并且不包含字母,但我需要在原始链接上执行此操作:{ {1}}
编辑:
我希望清除链接,所以我不能这样做:
http://'.$_SERVER["SERVER_NAME"]."".$_SERVER["REQUEST_URI"].'" />
答案 0 :(得分:1)
这假设您的查询字符串中只有id:
echo 'http://'.$_SERVER['SERVER_NAME']
. $_SERVER['SCRIPT_NAME']
.'?id='
.filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT);
来自id=<script>alert(TK00000006)</script>
的结果ID为?id=00000006
。
替代回答:
echo 'http://'.$_SERVER['SERVER_NAME']
. $_SERVER['SCRIPT_NAME']
.'?id='
.urlencode($_GET['id']);
//or effectively the same thing using only $_SERVER variables,
//but is much more robust as it handles multiple query parameters:
echo 'http://'.$_SERVER['SERVER_NAME']
. $_SERVER['SCRIPT_NAME']
.$_SERVER['QUERY_STRING'];
来自id=<script>alert(TK00000006)</script>
的结果ID为?id=%3Cscript%3Ealert%28TK%29%3C%2Fscript%3E
答案 1 :(得分:0)
如果ID不能为零,我会这样做:
$id = (int)$_GET['id'];
if ($id)
... // valid number > 0
else
... // invalid