PHP在刷新后记住POST值

时间:2014-12-23 19:44:11

标签: javascript php ajax post

我的html表单有问题。刷新我的页面后,Php似乎记得我的POST值。它与我使用的登录表单有关。

我正在使用cookies让php与javascript通信,如果用户登录则告诉javascript。

Php代码:

<?php

if (isset($_POST['username'], $_POST['password'])){
    $username = $_POST['username'];
    $password = MD5($_POST['password']);

    echo '<script>console.log("' . $username . '", "username"); </script>';
    echo '<script>console.log("' . $password . '" , "password"); </script>';


    /* against sql injections */
    $username = stripslashes($username);
    $password = stripslashes($password);
    $username = mysql_real_escape_string($username);
    $password = mysql_real_escape_string($password);

    $query = "SELECT user_id FROM User WHERE username='$username' AND password='$password'";
    $result = mysql_query($query) or die(mysql_error());
    $row = mysql_fetch_array($result);

    if ($row[user_id]){
        $cookie_name = "login";
        $cookie_value = "1";
        setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
    } else{
        echo '<script> alert("Incorrect username and password combination");</script>';
    }
}

?>

表格:

<form method="POST" id="loginForm">
    <b>Login</b>
    <table style="margin-top: 10px">
        <tr><td>Username: </td><td><input type="text" name="username" placeholder="username" required="required"></td></tr>
        <tr><td>Password: </td><td><input type="text" name="password" placeholder="password" required="required"></td></tr>
        <tr><td><input type="submit" name="login" value="Login" style="margin-top: 5px"></td></tr>
    </table>
</form>

因为我喜欢javascript,所以我使用ajax调用与php和服务器数据库进行通信。

Javascript代码:

function openPage(page) {
    var content;

        $.ajax({
            type: 'post',
            url: '/php/' + page + '.php',
            success: function (data) {
                document.getElementById('contentMiddle').innerHTML = data;
            }
        });
    }

}

问题是每当我尝试刷新页面时,我的PHP代码将始终运行,$ _POST ['username']和$ _POST ['password']将始终具有POST值,然后刷新页面。

我总是确保在刷新页面之前删除cookie。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您很可能已经提交了该页面,并且通过点击刷新浏览器正在尝试发送POST数据以及刷新。

由于您正在使用Ajax处理表单,因此您可以/应该从登录按钮中删除type="submit",因为不需要它。相反,你可以登录。

然后更新您的Ajax以在单击按钮时运行。您还可以使用jQuery按ID获取元素,例如:

$("#btn_login").on("click", function() {
    $.ajax({
        type: 'post',
        url: '/php/' + page + '.php',
        success: function (data) {
            //document.getElementById('contentMiddle').innerHTML = data;
            $("#contentMiddle").html(data);
        }
    });
});

要解决@charlietfl的评论,请按Enter键提交表单,使用类似的内容。

document.onkeydown = function(){
    if(window.event.keyCode=='13'){
        $("#loginForm").submit();
    }
}