2017-07-03 59 views
0

我创建了一个使用POST方法的表单登录系统。这个POST发送信息到index.php,它包含在index php中。在login.php中,如果用户名和密码正确,几个jQuery代码会改变index.php中的一些内容(添加菜单项)。我的问题是,当我想刷新页面时,Firefox总是发送确认消息()要显示此页面,Firefox必须发送信息,以便重复以前执行的任何操作(例如搜索或订单确认)) 。我有红色的,我知道这个问题是关于我使用POST方法发送数据。有些人建议使用GET方法,虽然消息不会出现,但数据也不会发送。你能建议一个解决方案吗(如果它存在的话)?预先感谢您的帮助。如何避免Firefox确认信息?

我的PHP代码:

$query1 = pg_query($conn, "SELECT * from users WHERE password = '$pswd' and name='$username' "); 


$arr_1 = pg_fetch_all($query1); 


$name_lenght= strlen($arr_1[0][name]); 
$pswd_lenght= strlen($arr_1[0][password]); 

if ($name_lenght > 0 && $pswd_lenght > 0){ 


$_SESSION ['user'] = $_POST['user']; 
$_SESSION ['password'] = $_POST['password']; 


echo "<script> 
$('#manu1').removeClass('hide').addClass('show'); 
$('#manu2').removeClass('hide').addClass('show'); 
$('#manu3').removeClass('hide').addClass('show'); 
</script>"; 
+0

一个简单的解决方案就是使用转换页面和重定向。假设页面“login”是你表单的目标。 'login'处理表单数据,设置用户会话(cookie等)并重定向到你的页面,我们称之为'user'。这样做完成后,当刷新时,刷新'user'而不是'login',而不是绑定到表单数据。所以浏览器不要求你再次提交 – Kaddath

+0

https://en.wikipedia.org/wiki/Post/Redirect/Get – CBroe

回答

0

处理表单应该重定向发送到你登录之后应该显示的页面,而不是显示输出本身的脚本。这会将新页面从表单提交中断开,因此它不会询问您是否要重新提交表单数据。

$query1 = pg_query($conn, "SELECT * from users WHERE password = '$pswd' and name='$username' "); 
$arr_1 = pg_fetch_all($query1); 
if (!empty($arr_1)) { 
    $_SESSION ['user'] = $_POST['user']; 
    $_SESSION ['password'] = $_POST['password']; 
    header("Location: welcome.php"); 
    exit(); 
} 
+0

我把这段代码放到了我的If语句中,尽管消息没有出现,但是在声明命令点不运行。我编辑我的帖子与PHP。我应该在哪里放这个代码? – bummm26

+0

它在我登录之前有效,但是我登录了我的if语句('if($ name_lenght> 0 && $ pswd_lenght> 0)')不想执行,所以fr例如注销按钮不会通过我的jQuery的。 – bummm26

+0

你为什么要测试长度?只要测试查询是否返回任何行,就像我的答案一样。 – Barmar