$ _POST失败而不是$ _REQUEST

时间:2012-05-23 09:48:01

标签: php ajax post request

我正在尝试将表单$ _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。

有人能帮帮我吗? 提前谢谢。

2 个答案:

答案 0 :(得分:3)

您需要提供参数作为POST参数,而不是GET。您使用的是哪个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',但我更喜欢使用一个对象,让库序列化它们。

答案 1 :(得分:0)

我有同样的问题,除了使用POST方法的简单HTML FORM,我没有使用任何库,因此它必须是linux / apache / php / mysql的标准安装(php是版本5)

也许POST和REQUEST使用PHP的不同库?也许不需要库,它与somo INI文件有关?谁知道,事实是,$ _POST数组不起作用。