Php HTML表单未输出到CSV文件(或显示正确的错误消息)

Php HTML表单未输出到CSV文件(或显示正确的错误消息),php,html,forms,fopen,jsfiddle,Php,Html,Forms,Fopen,Jsfiddle,我在用PHP创建导出为.CSV文件的表单时遇到问题。我为HTML创建了一个提琴,如下所示: 我使用PHP编写代码,因此无法在JSFIDLE上显示完整代码,因为它不支持PHP,但以下是我的PHP代码: <?php if($_POST['formSubmit'] == "Submit") { $errorMessage = ""; if(empty($_POST['brandname'])) { $errorMessage .= "<li>

我在用PHP创建导出为.CSV文件的表单时遇到问题。我为HTML创建了一个提琴,如下所示:

我使用PHP编写代码,因此无法在JSFIDLE上显示完整代码,因为它不支持PHP,但以下是我的PHP代码:

<?php
if($_POST['formSubmit'] == "Submit")
{
    $errorMessage = "";

    if(empty($_POST['brandname']))
    {
        $errorMessage .= "<li>Please enter a business/brand name.</li>";
    }
    if(empty($_POST['firstname']))
    {
        $errorMessage .= "<li>Please enter your first name.</li>";
    }

    $varBrand = $_POST['brandname'];
    $varFName = $_POST['firstname'];
    $varLName = $_POST['lastname'];
    $varEmail = $_POST['email'];
    $varSite = $_POST['website'];

    if(empty($errorMessage)) 
    {
        $fs = fopen("mydata.csv","a");
        fwrite($fs,$varBrand . ", " . $varFName . ", " . $varLName . ", " . $varEmail . ", " . $varSite . "\n");
        fclose($fs);
        exit;
    }
}
?>
当我单击Submit时,它会成功转到“Thankyu.php”,这是在表单操作中设置的,但我不明白为什么它没有在单击时发布正确的错误消息或填写我的“mydata.csv”文件。可能是视觉语法错误?如果您需要更多信息,请告诉我,我知道这有点让人困惑,因为PHP与小提琴是分开的

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') { // better method to check for a POSt
    ... validation stuff ...
    $data = array();
    $data[] = $_POST['brandname'];
    $data[] = $_POST['firstname'];
    etc...
    if (empty($errrorMessage)) {
        $fs = fopen('mydata.csv', 'a') or die("Unable to open file for output");
        fputcsv($fs, $data) or die("Unable to write to file");
        fclose($fs);
        exit();
    } else {
       echo $errormessage;
    }
}
有几点值得注意:

1使用$\u服务器['REQUEST\u METHOD']检查提交类型是绝对可靠的-该值始终设置,并且在执行POST时始终为POST。检查特定表单字段,例如提交按钮有问题且不可靠。 2使用fputcsv写入csv文件。PHP将为您完成所有繁重的工作,您需要为函数提供一个要编写的数据数组
3注意,否则就死。。。构造,用于检查打开/写入文件的失败。假设一个文件是可用/可写的是不可靠的,并且在将来的某个时候会咬你。在处理外部资源时,始终进行错误处理。

此答案如何发现提问者的问题?如果OP在诊断方面没有任何用处,我们如何找到问题?这向OP展示了如何做到这一点。否则发布的代码OP看起来很好,所以这是唯一继续的方法。我同意,我在诊断问题时遇到了问题,所以我将运行此程序并查看结果。谢谢。我已经试过了,但效果一样。它只会thankyou.php,即使我没有在表单上填写任何输入,也不会响应。我的PHP代码在我的标记中。我想进行更多的调试,但我不知道如何找出正在运行的代码(如果有的话)。PHP中是否有类似于Objective-C的NSLog类型功能?如果您通过headerLocation重定向:。。。键入thing,然后在$errorMessage为空时将其设为条件;在你的php代码中,检查它是否显示任何错误。为什么试图编写CSV数据的人从来没有想过看php的内置fputcsv函数?我还在学习php表单,所以很高兴向大家介绍fputcsv之类的东西,这样我就可以更深入地研究它们了!