无法修复此错误:“期望 POST 重定向到 GET - 找到 POST”。 我使用 ngrok 和 XAMPP 运行此代码。
这是以下作业的一部分:https://www.wa4e.com/assn/rps/。
实际上一切正常,授权效果很好,但在作业的自动评分器中存在以下错误: “检查 POST 是否重定向到 GET。期望 POST 重定向到 GET - 已找到 POST”
HTML部分
<form method="POST">
<label for="nam">User Name</label>
<input type="text" name="who" id="nam"><br/>
<label for="id_1723">Password</label>
<input type="text" name="pass" id="id_1723"><br/>
<input type="submit" value="Log In">
<input type="submit" name="cancel" value="Cancel">
</form>
PHP部分:
// 检查我们是否有一些 POST 数据,如果我们处理它
if ( isset($_POST['who']) && isset($_POST['pass']) ) {
if ( strlen($_POST['who']) < 1 || strlen($_POST['pass']) < 1 ) {
$failure = "User name and password are required";
} else {
$check = hash('md5', $salt.$_POST['pass']);
if ( $check == $stored_hash ) {
// Redirect the browser to game.php
header("Location: https://c561-212-58-119-178.ngrok-free.app/rps/game.php?name=".urlencode($_POST['who']), true, 303);
return;
} else {
$failure = "Incorrect password";
}
}
}
我预计 header() 的附加参数“...true, 303...”会对我有所帮助,但没有任何改变:(
看起来您需要使用
eixt()
而不是 return
来终止代码执行,这样可以确保不再执行代码
if ( isset($_POST['who']) && isset($_POST['pass']) ) {
if ( strlen($_POST['who']) < 1 || strlen($_POST['pass']) < 1 ) {
$failure = "User name and password are required";
} else {
$check = hash('md5', $salt.$_POST['pass']);
if ( $check == $stored_hash ) {
// Redirect the browser to game.php
header("Location: https://c561-212-58-119-178.ngrok-free.app/rps/game.php?name=".urlencode($_POST['who']), true, 303);
return;
} else {
$failure = "Incorrect password";
}
}
}