php - $_POST 在 php5.6 中为空

标签 php html apache wampserver php-5.6

在堆栈溢出中提交表单后,我尝试了几乎所有与空 $_POST 相关的解决方案,但没有一个解决了我的问题。我正在使用 wamp 服务器并使用 phpstorm。

  • 更改了 php.ini 中 post_max_size 和 upload_max_filesize 的值
  • $_GET 工作正常
  • 尝试使用其他ide和编辑器
  • isset 返回 false
  • var_dump 显示数组为空
  • 将 method="post"更改为 method="POST"
    我的代码:
    主.html

    <html>
    <body> 
    <form action="welcome.php" method="post">
    Name: <input type="text" name="name"><br>
    E-mail: <input type="text" name="email"><br>
    <input type="submit">
    </form>
    </body><br>
    </html>
    

    欢迎.php

    <html>
    <body>
    Welcome <?php echo $_POST["name"]; ?><br>
    Your email address is: <?php echo $_POST["email"]; ?>
    </body>
    </html>`
    

错误-

欢迎

Notice: Undefined index: name in
C:\Users\user\PhpstormProjects\tryphp\welcome.php on line 4

您的电子邮件地址是:

Notice: Undefined index: email in
C:\Users\user\PhpstormProjects\tryphp\welcome.php on line 5

最佳答案

通过快速测试,您的代码在我的服务器上正常运行。

运行 PHP 配置文件 (/etc/php5/apache2/php.ini) 我发现这些项目可能值得研究

; Whether PHP will read the POST data.
; This option is enabled by default.
; Most likely, you won't want to disable this option globally. It causes $_POST
; and $_FILES to always be empty; the only way you will be able to read the
; POST data will be through the php://input stream wrapper. This can be useful
; to proxy requests or to process the POST data in a memory efficient fashion.
; http://php.net/enable-post-data-reading
;enable_post_data_reading = Off

所以进入你的 php.ini 并搜索 enable_post_data_reading,如果你没有找到它,请手动将其放入(通常在文件末尾)并确保它已打开

enable_post_data_reading = On

我的版本信息:

PHP 5.5.9-1ubuntu4.17 (cli) (built: May 19 2016 19:05:57)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies

如果您仍然一无所获,请查看您的访问日志。它应该显示进入您的服务器的 POST 请求;

255.255.255.255 - - [13/Sep/2016:10:16:00 -0400] "POST /stackoverflow/welcome.php HTTP/1.1" 200 1226 "http://255.255.255.255/stackoverflow/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/255.255.255.255 Safari/537.36"

(忽略 IP 地址信息,我编辑了它以保护我的服务器 :))

如果它没有显示 POST 请求,那就是一个起点。

您也可以在浏览器上按 F12(或 ctrl+shift+i)打开调试控制台,单击网络(在顶部)在您的表单上,单击提交按钮,您将看到一个网络请求出去。单击它,单击“标题”,滚动到底部,然后查看您的浏览器实际发送到服务器的信息。

希望这批货对您有所帮助。请让我们知道:)

关于php - $_POST 在 php5.6 中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39471257/

相关文章:

php - 使用 UNION 时结果如何在两个表之间混合

php - 使用 php/mysql 的 Twitter 风格趋势

apache - 在 Ubuntu 11.04 中安装 CakePHP 2

apache - 如何在完全分布式集群中使用Apache Hive

php - Git 从 github pull 只有 php 文件给出 500 内部服务器错误

php - 如果数据库中不存在行则显示链接,否则显示文本

javascript - 如何计算两个文本输入之间的日期差异?

javascript - 当优先使用 'onchange' 事件而不是 'onsubmit' 事件时

javascript - 标签与输入框间距

php - 如何在 PHP 中限制文件上传大小?