使用此代码无法读出$ _POST变量。你能不能给我一个暗示问题的答案?条件块不起作用。
从浏览器中读取POST内容时,似乎设置并传输了值。
<!doctype html>
<?php
// select post operation
echo "post=".$_POST["action"];
if ($_POST["action"] == "add"){
// insert and read out values from DB
echo "add-".$_POST["action"];
header("Location:".($_SERVER['PHP_SELF']));
unset($_POST);
} elseif ($_POST["action"] == "delete"){
echo "add-".$_POST["action"];
header("Location:".($_SERVER['PHP_SELF']));
unset($_POST);
}
else{
echo "why else after submit.";
}
$_REQUEST = $_POST = $_GET = NULL;
?>
<html lang="de">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>test</title>
</head>
<body>
<div>
<form action="<? echo ($_SERVER['PHP_SELF']);?>" method="post">
<input type="hidden" name="action" value="add">
<input type="submit" value="Submit">
</form>
</div>
</body>
</html>
答案 0 :(得分:0)
您永远不会检查POST是否实际执行,因此您的if()
链始终执行。当您第一次点击页面时,会将其加载为GET,因此会出现why else after submit
错误。
你需要更像这样的东西:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
... check form submission, echo confirmation/errors, blah blah blah
}
... output html ...
答案 1 :(得分:0)
因为您使用
重定向到其他页面header("Location:".($_SERVER['PHP_SELF']));
实际上您重定向到同一页面,因此使用空的$ _POST变量为您提供了一个全新(相同)的页面