【问题标题】:$_POST returning null on server, but works fine on mamp localhost$_POST 在服务器上返回 null,但在 mamp localhost 上工作正常
【发布时间】:2018-07-26 06:22:25
【问题描述】:

大家好,

我是新手网络应用程序开发人员。最近,我完成了关于 Mamp 的项目 并试图将所有内容移入服务器。然后奇怪的事情发生了。 $_POST 功能突然失效了。

我用谷歌搜索了这个问题两天并尝试了很多东西。喜欢 更改 apache 配置,重新安装一些 php 包。我尝试使用 .htaccess,但没有弄清楚它是如何工作的。我只是想知道有没有 正如我在 mamp 上测试的那样,任何其他方法可以使这个东西起作用。

顺便说一句,我在服务器中使用 LAMP。

这里是 php 代码。 var_dump($_POST) 将返回 null 并且 var_dump($_REQUEST) 将返回数组{}。

   $conn = new mysqli($servername, $username, $password, $dbname);
 // Check connection
 if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
 } 
  $ID=$_POST['Client_ID'];
  $name=$_POST['username'];
  var_dump($_POST);
  $sex=$_POST['sex'];
  $mobile=$_POST['mobile'];
  $email=$_POST['email'];
  $time=$_POST['time'];
  $company_name=$_POST['Company_name'];
  $wechat_id=$_POST['Wechat_id'];

  if ($sex==0){
    $sex="female";
  } else {
   $sex="male";
  }
  $delOrnot=0;




  $sql="INSERT INTO Client(client_id,owner_name,gender,cell_phone,email,time,company_name,delOrnot,department) VALUES ('{$ID}','{$name}','{$sex}','{$mobile}','{$email}','{$time}','{$company_name}','{$delOrnot}','{$wechat_id}')";


if($conn->multi_query($sql)===TRUE){
     echo"New records created successfully";

  }else {
    echo "Error " . $sql . "<br>"  . $conn->error;
    }
  $conn->close();

这里是html代码。

<form action="member-add.php" method="post" class="form form-horizontal" id="form-member-add">
    <div class="row cl">
        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>userID:</label>
        <div class="formControls col-xs-8 col-sm-9">
            <input type="text" class="input-text" value="" placeholder="" id="Client_ID" name="Client_ID">
        </div>
    </div>
    <div class="row cl">
        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>username:</label>
        <div class="formControls col-xs-8 col-sm-9">
            <input type="text" class="input-text" value="" placeholder="" id="username" name="username">
        </div>
    </div>
  </form>

它在 mamp 上完美运行。我不知道我的服务器配置有什么问题。感谢您的热心帮助!

【问题讨论】:

  • var_dump($_POST);区分大小写
  • 哦,那是我更改为 var_dump($_POST) 时的输入错误。它返回数组(0){}。感谢您的提醒!
  • 那么很可能是您在某处覆盖了 $_POST 或者您的表单未以正常方式提交。在执行任何其他操作之前,请检查 php 文件顶部的 var_dump
  • 表单是否关闭&lt;/form&gt;
  • @vivek_23 是的,这只是代码的一部分。

标签: php html apache


【解决方案1】:

在您的表单开始标记中

<form action="member-add.php" method="post" class="form form-horizontal" id="form-member-add">

尝试添加一个enctype,该属性指定表单数据在提交到服务器时应该如何编码。

<form action="member-add.php" method="post" enctype="multipart/form-data" class="form form-horizontal" id="form-member-add">

这就是它应该的样子。 您可以阅读更多关于不同编码类型的信息HERE

如何调试 然而,我认为更重要的是看到,一种可能的调试方法。当您向服务器发出请求时,会发送该请求,您可以查看您发送到服务器的内容以及服务器的响应。为此(本示例使用 Chrome),请打开您的 google 开发者工具(只需按 F12),然后转到 Networking 并单击它在您单击发送按钮时发出的请求。

【讨论】:

  • 我不觉得缺少enctype 是这里的问题。 enctype一般在有文件上传的时候使用。
  • @vivek_23 这就是为什么我包含了关于调试的部分,他/她可以检查它发送到服务器的内容:)
  • @thefolenangel 感谢您提供的信息!我会试试看。
【解决方案2】:

您的 php 和 HTML 代码是否在同一个文件中? 我建议您将代码放在文件顶部,然后检查 var_dump。

【讨论】:

  • 还有问题不回答,可以使用add a comment
  • 是的,它们都在 /www 下,这就是我上传它们的方式
  • @xianhuichen 可能需要全部放在public_html(如果存在的话)下面?
  • @vivek_23 我不明白你的意思。我需要将所有内容放在 /www 下的另一个 html 文件夹下?
  • @xianhuichen 你是在使用托管服务提供商还是在 localhost 上尝试这个?
猜你喜欢
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
  • 2012-04-02
相关资源
最近更新 更多