В чем преимущество использования супер-глобального $_SERVER['PHP_SELF']
?
$_SERVER['PHP_SELF']
не включает (или не должен) включать имя домена. Он включает в себя компонент пути URL-адреса, из которого был вызван сценарий.
Его использование заключается прежде всего в том, чтобы внедрять уязвимости межсайтового скриптинга.
вы можете использовать его для заполнения атрибута action тега формы:
<form method="post" action="<?=$_SERVER['PHP_SELF']?>"></form>
Если я затем позвоню на вашу страницу:
your-file-that-uses-php-self.php/("><script>eval-javascript-here</script>)
где все в parens urlencoded, тогда я могу ввести код на вашу страницу. Если я отправлю эту ссылку кому-то еще, я выполняю этот код в своем браузере с вашего сайта.
Изменить: Чтобы htmlspecialchars
его от атак XSS, используйте htmlspecialchars
:
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">...</form>
Редактирование 2: Поскольку эта переменная $_SERVER
так часто использовалась в примерах в интернатах, не пропустите чтение вашей ссылки HTML: поскольку этот URI является минимальным возможным относительным URI, вы можете просто оставить атрибут действия пустым:
<form action="" method="post" >...</form>