0

フォーム $_REQUEST を $_POST に切り替えようとしています。より安全です。server.php に次のコードがあります。

    if (isset($_REQUEST['mode']) && $_REQUEST['mode']=='verwijderturf'){
    $sql="SELECT * FROM users WHERE Naam='".cleanInput($_REQUEST['naam'])."'";
    $result=mysql_query($sql);
    $count=mysql_num_rows($result);
    if($count > 0){
        $date2 = date("Y-m-d");
        $naam2 = cleanInput($_REQUEST['naam']);
        $door = cleanInput($_REQUEST['door']);
        mysql_query("INSERT INTO turfjes 
                     VALUES (
                             'Adtje', 
                             '".$naam2."',
                             '', 
                             '".$date2."',
                             '".$door."')") 
        or die (mysql_error());
    }
}

これは完璧に機能します。ただし、すべての $_REQUEST を $_POST に切り替えると、server.php は何もしません...

サーバーにデータを送信するために ajax リクエストを使用しています。例えば:

function verwijderturf() {
    var naam = $("naam").value;
    $("naamnieuw").value = "";
    $("naam").value = "";
    $("redennieuw").value = "";
    new Ajax.Request('server.php?mode=verwijderturf&naam='+naam+'&door='+$("door2").value,{
        method: 'post', 
        onSuccess: update,
        onFailure: ajaxFailure
    });
}

ご覧のとおり、私の ajax メソッドは 'post' であるため、$_POST で問題なく動作するはずです。

誰でも私を助けてもらえますか?前もって感謝します。

4

2 に答える 2

3

パラメータは、GET ではなく POST パラメータとして指定する必要があります。どの Javascript ライブラリを使用していますか?

つまり、jQueryの場合は次のようになります

jQuery.ajax('server.php',{
    data: {
        'mode': 'verwijderturf',
        'naam': naam,
        'door': $("door2").value
    },
    type: 'post', 
    success: update,
    error: ajaxFailure
});

プロトタイプの例:

new Ajax.Request('server.php',{
    parameters: {
        'mode': 'verwijderturf',
        'naam': naam,
        'door': $("door2").value
    },
    method: 'post', 
    onSuccess: update,
    onFailure: ajaxFailure
});

data(jQuery) およびparameters(Prototype) はキー/値オブジェクトであり、すべての POST パラメーターを表します。両方のライブラリで、これはシリアル化された文字列になる可能性がありますが'key=value&key2=value'、オブジェクトを使用してライブラリにシリアル化させることを好みます。

于 2012-05-23T09:53:38.207 に答える
0

私は同じ問題を抱えていますが、POST メソッドを使用した単純な HTML FORM であり、ライブラリを使用していないため、linux/apache/php/mysql (php はバージョン 5) の標準インストールでなければなりません。

POST と REQUEST は、PHP とは異なるライブラリを使用しているのではないでしょうか? おそらくライブラリは必要なく、それは somo INI ファイルと関係がありますか? 実は、$_POST 配列は機能しません。

于 2012-06-14T15:46:41.357 に答える