我有一个名为signin.php
的登录页面,用户可以在其中输入电子邮件和密码。点击提交按钮后,页面将指向connection_validate.php
。此页面验证用户使用数据库输入的数据。如果是注册用户,则页面将指向calendar.php
。如果输入的数据不正确,则应重定向到signin.php
。如果输入的数据不正确,我就像这样放置了cookie:
//action to be done if e mail id and password matches with database records
if(mysql_num_rows($result)>0)
{
header('location:calendar.php');
}
//action to be done if e mail id and password does not matches with database records
else
{
setcookie('message','incorrect login data');
header('location:signin.php');
}
在signin.php中,如果登录信息不正确,我编写了显示警报的代码:
<?php
include("include/minfooter.php");
if(isset($_COOKIE["message"]))
{
if(!($_COOKIE["message"]==" "))
{
echo "<script>
alert('Incorrect login information');
</script>";
setcookie("message"," ",time()-3600);
}
}
?>
我的问题是,如果我输入一次错误登录数据,则每次加载登录页面时都会显示警报。如果我也按了calendar.php中的后退按钮到signin.php,警报开始显示。我明白问题在于cookie。 Cookie尚未删除。我该如何解决这个问题?
答案 0 :(得分:1)
按以下步骤更新您的signin.php
<?php
include("include/minfooter.php");
if (isset($_COOKIE["message"]))
{
echo "<script>
var delete_cookie = function(name) {
document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};
var msg = '" . $_COOKIE["message"] . "';
if (msg != '')
alert('Incorrect login information');
delete_cookie('message');
</script>";
}
?>
答案 1 :(得分:1)
如果您正在使用会话,则可以使用$ _SESSION变量而不是cookie值。此外,您无法使用setcookie()输出内容后,因为setcookie()将发送一个必须在发送任何内容之前发送的HTTP标头。
session_start();
//action to be done if email id and password matches with database records
if (mysql_num_rows($result) > 0)
{
header('Location: calendar.php');
exit;
}
//action to be done if email id and password does not matches with database records
else
{
$_SESSION['message'] = 'incorrect login data';
header('Location: signin.php');
exit;
}
然后:
<?php
session_start();
include("include/minfooter.php");
if (!empty($_SESSION['message']))
{
echo "<script>alert('" . $_SESSION["message"] . "');</script>";
$_SESSION['message'] = '';
}
?>
答案 2 :(得分:0)
好吧也许最好使用session在$ _SESSION数组上使用index ['messages'],然后清理,当你想在用户离开你的页面后引用一些信息时应该使用cookie。我使用cookie制作了代码,但考虑使用session:
<?php include("include/minfooter.php");
if(isset($_COOKIE["message"]) && !empty($_COOKIE["message"])
{
echo "<script>
var msg = '<?php echo $_COOKIE["message"];?>';
if (msg != "")
alert('Incorrect login information');
</script>";
unset($_COOKIE["message"]);
}
?>