php,如何在REQUEST_URI上使用strip_tags或urldecode?

时间:2011-10-12 16:34:24

标签: php urlencode strip-tags

我有一个需要清理的链接。

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"].'" />

2 个答案:

答案 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