PHP Post方法不起作用

时间:2014-04-25 06:46:41

标签: php html forms post vps

我很抱歉提出这个问题,我确信之前已经完成了。

就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数字海洋VPS上有PHP版本5.5.9

我还编辑了php.ini文件以打开register_globals,但这没有用,所以我把它关掉了,因为我读过这是一个安全问题。

非常感谢任何帮助,非常感谢。

3 个答案:

答案 0 :(得分:2)

这个答案在另一个背景下然后问题因为我来这里检查解决方案。

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

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

有一段时间我们的网站正在http://www.example.com/ *上运行,我们在.htaccess中创建了规则,将所有请求重定向到http://example.com/ *到http://www.example.com/ *,反之亦然。< / p>

如果发布请求位于不同位置,则会出现此问题。所以确保帖子网址起始字符串应该相同(www或没有www检查网址)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

嗯,你确定发帖不起作用,请查看发布方法是否包含数据。

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

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

如果它显示一个数组,其中包含邮件中输入的邮件,那么您的邮政方法正在工作,问题是文件文件由于安全问题/错误路径而无法打开,或者可能是由于文件权限。所以检查并告诉我。