Когда вы используете header
, вы не можете ничего выводить в теле документа, что делает невозможным любое alert()
.
Часто используемый прием для достижения этой цели - делегировать alert()
ing на целевую страницу:
header( 'Location: http://localhost/assignment/WebForm.htm?alert='.
urlencode("Hello!")) ;
и затем в WebForm.htm:
<?php if (isset($_GET["alert"])): ?>
<script type="text/javascript">
alert("<?php echo htmlentities(urldecode($_GET["alert"])); ?>");
</script>
<?php endif; ?>
просто не забудьте htmlentities()
вывод при выводе сообщения.
Если вы уже используете сеансы, для 100% безопасности и элегантных URL-адресов вы также можете сгенерировать случайный ключ в PHP, используя rand
, сохранить сообщение в $_SESSION["message_$randomKey"]
и передать ключ в запросе GET. Таким образом, единственное, что пользователь видит в URL, это ключ, а не сообщение.