PHP: POST 当操作是页面本身时,请求丢失(?)。也 302 找到
PHP: POST request gets lost(?) when the action is the page itself. Also 302 Found
我的 add.php
上有一个简单的 HTML 表单,其中方法是 POST,操作是原始的 add.php
。
如果我提交表单,我可以看到 POST 请求已发送,但状态为 302 Found。另外,如果我尝试 var_dump($_POST)
,它是一个空数组。
但是,如果操作是 test.php
,其中唯一的内容是 var_dump($_POST)
,它会起作用并且状态是 200 OK
我该如何解决这个问题?作业需要代码,因此我必须使用 add.php
作为表单操作。
<form action="add.php" method="post">
<div class="addEntryPersonalData">
<p>First Name: <br>
<input type="text" name="first_name" size="30"></p>
<p>Last Name: <br>
<input type="text" name="last_name" size="30"></p>
<p>Email: <br>
<input type="text" name="email" size="30"></p>
<p>Headline:<br>
</div>
<input type="text" name="headline" size="75.7"></p>
<p>Summary:<br>
<textarea name="summary" rows="8" cols="70"></textarea>
</p><p>
<input type="submit" value="Add" name="submit">
<input type="submit" name="cancel" value="Cancel">
</p>
</form>
如果我需要提供更多信息,请告诉我。
更新:add.php 的其余部分:
<?php
if (isset($_POST['first_name'], $_POST['last_name'], $_POST['email'], $_POST['headline'], $_POST['summary'])){
if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
/* Insert into SQL database using PDO */
}
else {
$_POST['invalid'] = 1; //if the email address is invalid
header("Location: add.php");
}
}
elseif (isset($_POST['invalid'])){
echo '<p>Invalid email address format!</p>'; //if the email is invalid
}
elseif (isset($_POST['submit'])){
echo '<p>Please fill out every field!</p>'; //if fields are missing
}
?>
我重构了它以使其更具可读性,我希望它足够了。
得到答案:
代码尝试验证电子邮件地址,即使字符串为空。这导致它进入 header()
函数,该函数擦除 $_POST
数组。
我的 add.php
上有一个简单的 HTML 表单,其中方法是 POST,操作是原始的 add.php
。
如果我提交表单,我可以看到 POST 请求已发送,但状态为 302 Found。另外,如果我尝试 var_dump($_POST)
,它是一个空数组。
但是,如果操作是 test.php
,其中唯一的内容是 var_dump($_POST)
,它会起作用并且状态是 200 OK
我该如何解决这个问题?作业需要代码,因此我必须使用 add.php
作为表单操作。
<form action="add.php" method="post">
<div class="addEntryPersonalData">
<p>First Name: <br>
<input type="text" name="first_name" size="30"></p>
<p>Last Name: <br>
<input type="text" name="last_name" size="30"></p>
<p>Email: <br>
<input type="text" name="email" size="30"></p>
<p>Headline:<br>
</div>
<input type="text" name="headline" size="75.7"></p>
<p>Summary:<br>
<textarea name="summary" rows="8" cols="70"></textarea>
</p><p>
<input type="submit" value="Add" name="submit">
<input type="submit" name="cancel" value="Cancel">
</p>
</form>
如果我需要提供更多信息,请告诉我。
更新:add.php 的其余部分:
<?php
if (isset($_POST['first_name'], $_POST['last_name'], $_POST['email'], $_POST['headline'], $_POST['summary'])){
if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
/* Insert into SQL database using PDO */
}
else {
$_POST['invalid'] = 1; //if the email address is invalid
header("Location: add.php");
}
}
elseif (isset($_POST['invalid'])){
echo '<p>Invalid email address format!</p>'; //if the email is invalid
}
elseif (isset($_POST['submit'])){
echo '<p>Please fill out every field!</p>'; //if fields are missing
}
?>
我重构了它以使其更具可读性,我希望它足够了。
得到答案:
代码尝试验证电子邮件地址,即使字符串为空。这导致它进入 header()
函数,该函数擦除 $_POST
数组。