0

私はデータをCSVにエクスポートし、"\r\n"それを使用している間、ヘッダー行の下の独自の新しい行にデータの各セットではなく、1行にデータを出力するだけです。

name | address | phone | email | greg | 2 old street | 09236462942 | greg343@gmail.com | michael | 2 new street | 0927464623 | michael343@gmail.com | ...

コードは次のとおりです。

JS

var file = "Database.csv";

allData=name+","+address+","+phone+","+email;
        allData=allData.replace(/[\\]/g,'');
        saving();

function saving(){
    $.ajax({
        type: 'POST',
        url: 'save.php',
        timeout: 5000,
        data: { data: allData, filename: file },
        error: function() {localStorage["allData"]=allData; wiadomosc("Internet conection error. But don't worry, your data will be stored when conection will be stable.");},
        success: function() {localStorage["allData"]="";}
    });
}

PHP

<?php
if(isset($_POST["filename"]) == true && isset($_POST["data"]) == true){
    $fp = fopen($_POST["filename"], "a+");

    if($fp !== null){
        fputs($fp, $_POST["data"] . "\r\n");
        fclose($fp);
    }
}
?>
4

1 に答える 1

1

allDataグローバル変数のようです。残りのコードに応じて、ほとんどすべてが発生する可能性があります。に明示的に渡す必要がありallDataますsaving。また、ブラウザー側 (Firebug など) とサーバー側 (Netbeans など) でデバッグします。

また、この行は純粋な悪です !

$fp = fopen($_POST["filename"], "a+");

そうすれば、システム (サーバー) 上のほとんどすべてのものを上書きできます!

そして、チェックしないでくださいisset($_POST["filename"]) == true。do isset($_POST["filename"]) === true(この場合は必要ありません) または単に do のいずれかですisset($_POST["filename"])

編集:

これにより、JS でのいくつかの問題を回避できるはずです。

var allData=name+","+address+","+phone+","+email;
        allData=allData.replace(/[\\]/g,'');
        saving(allData);

function saving(allData){
    $.ajax({...

そしてこれはPHPで:

function mk_safe_filename($name, $allow_subfolders=false)
{
    $f = trim($nazwa, './\\');
    if (!$allow_subfolders)
    {
        $f = strtr($f, array('\\'=>'__', '/'=>'__', '..'=>'_', ':'=>'_'));
    }
    else
    {
        $f = strtr($f, array('\\'=>'/', '..'=>'_', ':'=>'_'));
        $f = trim($f,'/');
    }
    return $f;
}
$file_name = mk_safe_filename($_POST["filename"]);

$fp = fopen($file_name, "a+");
于 2013-03-01T00:38:24.963 に答える