php isset($_post) 不起作用?

php isset($_post) is not working?

最近几个小时以来我一直在处理这个问题,并且还搜索了有关堆栈溢出的相关问题。我有一个简单的 html 形式

<form name="user_verification" action="action.php" method="POST">
 Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit" name="submit" value="submit">
</form>

这里是 action.php 文件中的 php 脚本

if(isset($_POST['submit'])) 
{
echo 'yes';
}else{
echo 'no';
}

一直显示"no"。我使用这个

测试了我的 php 脚本
 if(1==1) 
    {
    echo 'yes';
    }else{
    echo 'no';
    }

在这种情况下,它显示"yes"。这意味着问题出在 isset($_POST['submit']) 函数上,但我找不到解决方案。请在这方面提供帮助。谢谢

可能某个地方的 $_POST 值是 emptied/unseted。这可能是由于 php 配置或作为安全措施(即 http://php.net/manual/en/ini.core.php#ini.enable-post-data-reading)。你可以检查 $_REQUEST 也可以检查你是否可以得到 $_GET 值(形式的方法是 get)。

如果单击提交按钮,以上代码将仅显示提交的值。

isset( )。这是一个内置函数,用于检查是否已设置变量。在圆括号之间,输入希望 isset() 检查的内容。对我们来说,这是 $_POST['Submit']。如果用户刚刚刷新页面,则不会为提交按钮设置任何值。如果用户确实点击了提交按钮,那么 PHP 将自动 return 一个值

$var = '';

// This will evaluate to TRUE so the text will be printed.
if (isset($var)) {
    echo "This var is set so I will print.";
}

您也可以使用 var_dump(isset()); // TRUE 输出 isset().

的 return 值

你的代码是正确的,对我有用。看到这个 for more info.

在index.php

<form name="user_verification" action="action.php" method="POST">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit" name="submit" value="submit">
</form>

在 action.php

<?php if(isset($_POST['submit'])) 
 {
 echo 'yes';
 }else{
  echo 'no';
 } ?>

您的代码是正确的。

只有在您提交表单时才有效。

因此,除非您提交表单,否则它将始终打印 no

为了稳健性,最好根据请求检查方法。
这是验证 post 请求的表单处理器的简单示例。

if ('POST' === $_SERVER['REQUEST_METHOD']) {
    if (!isset($_POST['required_data'])) {
        http_send_status(400);
        exit;
    }

    echo 'OK';
}

您仍然需要检查 isset 您需要的字段。