我的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。
有什么想法吗?
答案 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();
}
}