$ _POST在PHP中读出值

时间:2016-07-13 20:59:49

标签: php forms post

使用此代码无法读出$ _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>

2 个答案:

答案 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变量为您提供了一个全新(相同)的页面