【问题标题】:PHP Post Method Not WorkingPHP Post方法不起作用
【发布时间】:2014-04-25 06:46:41
【问题描述】:

我很抱歉问这个问题,我确信以前已经做过。

我对 PHP 不是很了解,所以我在这方面所做的研究没有结果。

我购买并使用了一个底部有电子邮件订阅表单的 HTML 模板。该表单应该捕获输入的电子邮件并将其添加到一个文本文件中,其中包含我所理解的已提交电子邮件的列表。

以下是页脚中 html 的摘录:

<form action="save-email.php" method="post" style="margin-top: 0px;">
    <input type="text" name="email" placeholder="Get email updates...">
  </form>

这里是对应的save-email.php文件的内容:

<?php

$email = $_POST['email'];
$fp = fopen('submitted-emails.txt', 'a');
$savestring = $email . '
';
fwrite($fp, $savestring);
fclose($fp);

header('Location: ' . $_SERVER['HTTP_REFERER']);

?>

我已经联系了创作者,他们几乎告诉我要确保我的 PHP 版本是最新的,并且这是一个服务器配置错误,所以他们不会进一步帮助我......

我在 Ubuntu 14.04 Digital Ocean VPS 上安装了 PHP 5.5.9 版

我还编辑了 php.ini 文件以打开 register_globals,但这并没有帮助,所以我将其关闭,因为我读到这是一个安全问题。

任何帮助将不胜感激,非常感谢。

【问题讨论】:

  • 错误日志中是否有任何错误?以及表单是如何执行的?通过 Java 脚本?我确实错过了表单中的
  • 你的实际问题是什么?
  • 你有提交按钮吗? :D

标签: php html forms post vps


【解决方案1】:

这个答案是在另一个上下文中,然后是问题,因为我是来检查解决方案的。

我正在发布 (method="post") 表单,但它没有发布数据。当我使用print_r($_POST) 检查数据时,我得到了空白数组。 我在服务器上多次感受到这个问题。

这个错误的原因是从.htaccess文件重定向。

有时会发生我们的网站在http://www.example.com/* 上运行,我们在.htaccess 中创建了规则以将所有请求重定向到http://example.com/* 到http://www.example.com/*,反之亦然。

如果发布请求发送到不同的位置,则会出现此问题。所以确保发布的 url 起始字符串应该相同(www 或没有 www 检入 url)

我在同一个问题上花了很多时间,但在 stackoverflow 的任何地方都找不到解决方案。所以我给出了解决方案。

【讨论】:

  • 是的,这就是我的解决方案。谢谢分享!
【解决方案2】:

尝试在与save-email.php相同的目录下创建一个名为submitted-emails.txt的文件,并将所有用户的文件权限更改为+w

【讨论】:

  • 呃。不知道为什么我没有想到这一点。我已经有了 .txt 文件,但只需要授予公共写权限。我因缺乏 PHP 知识而陷入困境,以至于忘记了看简单的东西。谢谢。
  • 很好,另一个出于安全原因的建议是将submitted-emails.txt移动到不通过网络公开的文件夹,您还必须更改php文件的路径。
【解决方案3】:

好吧,你确定post不工作​​,请检查post方法是否包含数据。

var_dump($_POST); and     var_dump($_REQUEST);

如果您在帖子中没有找到电子邮件 ID,那么它将在请求中,如果是,那么您的请求是通过 get 方法提交的。

如果它显示一个数组,其中在帖子中输入了电子邮件,那么您的帖子方法正在工作并且问题是文件文件由于安全问题/路径不正确或可能是由于文件权限而无法打开。所以请检查并告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2018-01-15
    • 2018-08-23
    相关资源
    最近更新 更多