0

少しクリーンアップする必要があるリンクがあります。

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 を使用してこのリンクを消去し、渡されたものはすべてidint であり、文字が含まれていないことを確認することですが、元のリンクでそれを行う必要があります:http://'.$_SERVER["SERVER_NAME"]."".$_SERVER["REQUEST_URI"].'" />

編集:

リンクを消去したいので、これを行うことはできません:

http://www.site.com/friends.php?id=<script>alert(TK00000006)</script>
4

2 に答える 2

1

これは、クエリ文字列に id のみがあることを前提としています。

echo 'http://'.$_SERVER['SERVER_NAME']
    . $_SERVER['SCRIPT_NAME']
    .'?id='
    .filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT);

結果の IDid=<script>alert(TK00000006)</script>は です?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'];

結果のIDid=<script>alert(TK00000006)</script>?id=%3Cscript%3Ealert%28TK%29%3C%2Fscript%3E

于 2011-10-12T17:26:52.267 に答える
0

IDをゼロにできない場合は、次のようにします。

$id = (int)$_GET['id'];
if ($id)
...      // valid number > 0
else
...      // invalid
于 2011-10-12T16:37:18.210 に答える