我已经完成了一个简单的表格,如下所示:
index.php:
<!DOCTYPE HTML>
<html>
<head></head>
<body>
<?php
$name = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
// handle missing field
} else {
$name = $_POST["name"];
}
}
if($name != '') {
header('location: http://localhost/new_page.php');
exit();
}
?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
<span class="label">Name</span>
<input type="text" name="name">
<button><span>Validate</span></button>
</form>
</body>
</html>
我想要以下行为:
我现在有以下错误:如果设置了名称,我将被重定向到blank.php页面。 有人可以帮我吗?或者至少给我一些调试它的技巧,因为我并不是真正的PHP专家。
谢谢!
答案 0 :(得分:2)
您的标头调用来不及了。
HTTP响应首先具有标头,然后具有正文。 HTML代码是主体。
您需要将所有输出放在PHP代码之后。由于您以<html>
开头,因此已经发送了标头,因此您的重定向将不起作用。
另外,关于白页(死亡或WSOD的白屏):
为了获得最佳的错误记录体验,请将error_reporting设置为-1,关闭display_errors,然后设置一个自定义的error_log。然后在终端中,键入“ tail -f / path / to / error_log”。现在,您的通知,警告和错误将实时滚动显示,而不会影响网页的显示。
答案 1 :(得分:0)
@ delboy1978uk给出的答案是正确的。 您要做的就是将文件内容更改为:
<?php
$name = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
// handle missing field
} else {
$name = $_POST["name"];
}
if($name != '') {
header('location: http://localhost/new_page.php');
exit();
}
}
?><!DOCTYPE HTML>
<html>
<head></head>
<body>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
<span class="label">Name</span>
<input type="text" name="name">
<button><span>Validate</span></button>
</form>
</body>
</html>