php, как использовать strip_tags или urldecode на REQUEST_URI? - PullRequest
0 голосов
/ 12 октября 2011

У меня есть ссылка, которую нужно немного почистить.

http://'.$_SERVER["SERVER_NAME"]."".$_SERVER["REQUEST_URI"].'" />

эта ссылка сгенерирует что-то вроде этого:

http://www.site.com/friends.php

, где friends.php - $_SERVER["REQUEST_URI"].

иногда я передаю идентификатор для ссылки:

 http://www.site.com/friends.php?id=123456

я хочу использовать strip_tags или urldecode, чтобы очистить эту ссылку и убедиться, что все, что передано в id int и не содержит букв, но мне нужно сделать это по исходной ссылке: http://'.$_SERVER["SERVER_NAME"]."".$_SERVER["REQUEST_URI"].'" />

edit:

Я хочу, чтобы ссылка была очищена, поэтому я не могусделать это с ним:

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

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Предполагается, что у вас есть только идентификатор в строке запроса:

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

Результирующий идентификатор из id=<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'];

Результирующий идентификатор из id=<script>alert(TK00000006)</script> равен ?id=%3Cscript%3Ealert%28TK%29%3C%2Fscript%3E

0 голосов
/ 12 октября 2011

Если ID не может быть нулем, я бы сделал это так:

$id = (int)$_GET['id'];
if ($id)
...      // valid number > 0
else
...      // invalid
...