【问题标题】:HTML Form POST is nullHTML 表单 POST 为空
【发布时间】:2014-02-22 10:00:23
【问题描述】:

所以我试图简单地将一个数据字段从表单发送到 php 文件。下面是我在表格中的表格。我还发布了我的 php 代码。它不断返回 $username 为空。我已经尝试过发布/获取,但这似乎并不重要。

HTML:

<form action='http://k9minecraft.tk/scripts/adduser.php' method='POST'>
    <table>
        <tr>
            <td>First Name:</td>
            <td><input type='text' id='first'></td>
        </tr>
        <tr>
            <td>Last Name:</td>
            <td><input type='text' id='last'></td>
        </tr>
        <tr>
            <td>Email:</td>
            <td><input type='text' id='email'></td>
        </tr>
        <tr>
            <td>Minecraft Name:</td>
            <td><input type='text' name='user'></td>
        </tr>
        <tr>
            <td><input type='submit' value='Send'></td>
            <td><input type='reset' value='Reset'></td>
        </tr>
    </table>
</form>

PHP:

<?php
print_r($_POST);
if (isset($_POST['user'])) {
    $username = $_POST['user'];
    echo $username;
    echo 'username is not null';
}
?>

【问题讨论】:

  • 尝试print_r($_POST),并将其发布在您的问题中
  • 如果这是您要查找的内容,我会将其添加到我的问题中。解析错误:语法错误,第 3 行 /hermes/waloraweb097/b516/moo.bondsolutionsnjcom/k9minecraft/scripts/adduser.php 中的意外 T_VARIABLE
  • 你有语法错误,你能做到没有语法错误吗???
  • 不知道为什么这一行是语法错误。 $username = $_POST['user'];
  • 把它放在第一行之前。 print_r($_POST);die;

标签: php html forms post


【解决方案1】:

问题是您的所有输入都有id,但没有nameid 被 JavaScript 使用。 name 用于发送表单数据。

改成这样:

<form action='http://k9minecraft.tk/scripts/adduser.php' method='POST'>
  <table>
    <tr>
      <td>First Name:</td>
      <td><input type='text' name='first' id='first'></td>
    </tr>
    <tr>
      <td>Last Name:</td>
      <td><input type='text' name='last' id='last'></td>
    </tr>
    <tr>
      <td>Email:</td>
      <td><input type='text' name='email' id='email'></td>
    </tr>
    <tr>
      <td>Minecraft Name:</td>
      <td><input type='text' name='user'></td>
    </tr>
    <tr>
      <td><input type='submit' name='Send' value='Send'></td>
      <td><input type='reset' name='Rest' value='Reset'></td>
    </tr>
  </table>
</form>

【讨论】:

  • 名称已添加,遗憾的是没有不同的结果。
  • @Kyle 你有想过这个吗?我现在有同样的问题。它第一次工作,现在它发布一个 NULL 值:/
【解决方案2】:

此代码正在运行。您需要添加一些条件来检查 $username 是否已发布。

类似的东西:

if(count($_POST)){
    $username ='';
    if(isset($_POST['user'])){
        $username = $_POST['user'];
    if ($username==null || !$username)
         echo 'username is null';
     echo strlen($username);
     echo $username;
   }

 }

【讨论】:

  • 这只是在帖子为空时删除通知错误,当​​然不能解决问题
  • 试一试,但没有解决。
  • 你现在得到了什么
  • Array ( ) 使用我问题的 cmets 中建议的代码。仅使用您的代码,结果与原始问题没有什么不同。
  • 首先总是尝试初始化顶部的 ($username) 等变量。其次,始终检查变量是否为空,例如 empty($username) 或 !$username。
【解决方案3】:

试试这个

<?php
    if(isset($_POST['submit'])){
     $msg = "";
     /* Validate post */
     if(isset($_POST['user'])==""){
      $msg .= "username is null";
     }
    /*End Validate*/
     if($msg==""){
      $user = $_POST['user'];
     }else{
       echo $msg;
     }
    }

?>

【讨论】:

    【解决方案4】:

    这是人们通常的做法:

    if(isset($_POST['user']) && !empty($_POST['user'])) {
        $user = $_POST['user'];
    }
    

    注意:== null 不适用于空字符串。见here

    您还需要为您的其他输入字段添加名称属性。

    【讨论】:

    • 是的,但这不是我的意思。我的意思是你不能检测它是空的还是没有使用==设置的,没有php通知。
    【解决方案5】:

    试试这个来确定该字段是否由公式发布:

    isset($_POST['user'])
    

    我认为$username==null 会是真的,即使$username 真的等于一个空字符串。

    【讨论】:

    • 好的,所以我尝试了这一行,但没有打印出任何内容。 echo isset($_POST['user']);
    • 看来你已经明白了。至少它对我有用,当我将表单发布到您服务器上的脚本时。我得到: Array ( [user] => chris ) chrisusername 不为空
    猜你喜欢
    • 2021-12-29
    • 2017-10-13
    • 2018-07-02
    • 1970-01-01
    • 2014-07-03
    • 2020-01-03
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    相关资源
    最近更新 更多