Php HTML表单未输出到CSV文件(或显示正确的错误消息)
我在用PHP创建导出为.CSV文件的表单时遇到问题。我为HTML创建了一个提琴,如下所示: 我使用PHP编写代码,因此无法在JSFIDLE上显示完整代码,因为它不支持PHP,但以下是我的PHP代码: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
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之类的东西,这样我就可以更深入地研究它们了!