表单到CSV和“感谢”;在新选项卡中使用POST


Form to CSV and "Thanks" in new tab using POST

我正在尝试接受一个表单并将其写入CSV(提交表单的人不可见,但我可以将其视为服务器上每个人的条目的汇编,当我喜欢它时)。每当有人输入表单时,它将成为CSV上的新行。为了显示用户确实在提交,会弹出一个新标签,上面会有一些"谢谢"之类的信息和他们提交的内容,这样用户就可以确认这是他们提交的内容。是的,我确实有一个JS表单验证,工作完美,但因为没有问题,我把它放在外面以节省空间。

这是我目前的问题。在Firefox中,我只得到一个空白的新选项卡,标题为testForm.csv的——blank——CSV上没有任何变化。在Chrome中,一个新的选项卡打开,其中包含我的php文档上的所有代码,我的CSV保持空白。

这是我的HTML代码片段:

<html>
 <body>
  <form name="Involved" method="post" action="postest.php" target="_blank" onsubmit="return validateForm();">
   Name: <br><input type="text" name="name" title="Your full name" style="color:#000" placeholder="Enter full name"/>
   <br><br>
   Email: <br><input type="text" name="email" title="Your email address" style="color:#000" placeholder="Enter email address"/>
   <br><br>
   How you can help: <br><textarea cols="18" rows="3" name="help" title="Service you want to provide" style="color:#000" placeholder="Please let us know of any ways you may be of assistance"></textarea>
   <br><br>
   <input type="submit" value="Submit" id=submitbox"/>
  </form>
 </body>
<html>

这里是postest.php:

<?php
 $name = $_POST['name'];
 $email = $_POST['email'];
 $help = $_POST['help'];
 $csvData = $name . "," . $email . "," . $help . ''n';
 echo "Thank you for your submission! We'll get back to you as soon as we can!";
 echo "I'm " . $name . ", my email is " . $email . ", and I can help in that: 'n" . $help;
 $filepointer = fopen('testForm.csv','a');
 if ($filepointer){
  fwrite($filepointer,$csvData);
  fclose($filepointer);
  exit();
 }
?>
我检查了这个关于回声的问题,看看这是否是我的问题。我之前问过这个问题,除了明显的$_POSTEST问题外,似乎没有人发现我的代码有什么问题。这一页看起来像我想要的,但不是。这个问题有我想要的东西,但实际上没有POST代码,答案是我读过的最没用的东西之一(简而言之):"去做吧。"其实没那么复杂",还有一些其他SO问题的链接,我也关注了)。他们把我带到这里和这里。我把exit();放在fclose()之后,就像它似乎对第一个工作一样(它什么也没做)。对于第二种情况,用户的代码与我一直在寻找的代码相差太远,我无法将我的代码更改为他/她正在做的代码。我已经搜索了很多,做了大量的谷歌搜索,但我要在这里削减我的研究清单,因为没有人想要阅读所有内容;这只是为了证明我努力过。

如果你还需要什么,请告诉我;我是一个完全的php新手,它可能是一些非常基本的东西,我错过了。另一方面,在这一点上,我没有看到我的代码和其他人的代码有什么主要的区别。

试试这样:

<?php
 $name = $_POST['name'];
 $email = $_POST['email'];
 $help = $_POST['help'];
 $filepointer = fopen('testForm.csv','a');
 fputcsv($filepointer, array($name,$email, $help));
 echo "Thank you for your submission! We'll get back to you as soon as we can!";
 echo "I'm " . $name . ", my email is " . $email . ", and I can help in that: 'n" . $help;
?>

错误:-

--->   $filepointer = fopen('testForm.csv','a');
$fp = fopen('testForm.csv','a');
if ($fp){
  fwrite($fp,$csvData);
  fclose($fp);
  exit();
}

真正的问题是没有

display_errors = On
log_errors = On

在php.ini文件中查找这些参数,并打开它们,除非您是在活动服务器上开发,在这种情况下,您真的应该设置一个测试环境。

然后不查看PHP错误日志

实际上只有一行需要修改,这是完整的代码。

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $help = $_POST['help'];
    $csvData = $name . "," . $email . "," . $help . ''n';
    echo 'Thank you for your submission! We''ll get back to you as soon as we can!';
    echo ''"I''m '"' . $name . ", my email is " . $email . ", and I can help in that: 'n" . $help;
    $fp = fopen('testForm.csv','a');    // only line changed
    if ($fp){
       fwrite($fp,$csvData);
       fclose($fp);
       exit();
    }
?>

你的错误是非常基本的,我为你感到羞耻。您的问题显然是您没有使用服务器,也没有在您的计算机上安装PHP包。当你告诉计算机target="_blank"method="post"时,它知道你想要的是HTML。然而,没有任何解析PHP的东西,它不知道如何读取你的代码,在Firefox中显示为空白页,在Chrome中显示为代码块。

你真的不知道你在做什么。