0

PHP で .CSV ファイルにエクスポートするフォームを作成できません。ここにあるHTMLのフィドルを作成しました:

http://jsfiddle.net/tqs6g/

私はPHPでコーディングしているので、PHPをサポートできないため、JSFiddleで完全なコードを実際に表示することはできませんが、私の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 は Fiddle から分離されているため、混乱を招くことは承知しています。

4

1 に答える 1

0
<?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(...)ファイルが利用可能/書き込み可能であると仮定することは信頼性が低く、将来のある時点であなたを噛むでしょう。「外部」リソースを処理するときは、常にエラー処理を行ってください。

于 2012-01-07T17:25:29.793 に答える