HTML-форма не выводится в файл CSV (или отображается правильное сообщение об ошибке) - PullRequest
0 голосов
/ 07 января 2012

У меня проблемы с созданием формы, которая экспортирует в файл .CSV на PHP. Я создал скрипку для HTML, которая находится здесь:

http://jsfiddle.net/tqs6g/

Я пишу в PHP, поэтому я не могу показать полный код на JSFiddle, так как он не поддерживает 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;
    }
}
?>

Когда я нажимаю «Отправить», он успешно переходит в «thankyou.php» (который задается в действии формы), но я не могу понять, почему он не публикует правильные сообщения об ошибках или не заполняет мой файл «mydata.csv» по клику. Возможно, это ошибка синтаксиса прицела? Дайте мне знать, если вам нужна дополнительная информация, я знаю, что это немного сбивает с толку, поскольку PHP отделен от скрипки.

1 Ответ

0 голосов
/ 07 января 2012
<?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) использование $ _SERVER ['REQUEST_METHOD'] для проверки типа отправки является абсолютно надежным - это значение всегда устанавливается и всегда будет POST, если выполняется публикация. Проверка определенного поля формы (например, кнопки отправки) является хакерской и ненадежной.
2) Использование fputcsv () для записи в файл csv. PHP сделает всю тяжелую работу за вас, и вы просто предоставите функции массив данных для записи
3) Обратите внимание на конструкции or die(...), которые проверяют наличие ошибок при открытии / записи в файл. Предполагать, что файл доступен / доступен для записи, ненадежно и в какой-то момент укусит вас. При работе с «внешними» ресурсами всегда выполняйте обработку ошибок.

...