2015-02-11 98 views
0

我正在为一个班级设计一个简单的登录页面,并计划在关闭浏览器后使用cookie来保持用户登录(如果他们选择)。我使用复选框输入按钮来设置cookie。当用户进入登录页面,在我的迹象送他们到一个脚本来检查有效的用户名和密码,我也检查按钮使用在会话结束后让用户登录的最佳方式是什么?

#QotD.php 

    if(isset($_GET['signed_in']))  #check box value 
    if($_GET['signed_in']=="on"){ 
    if(isset($_GET['username'])) 
    $username = $_GET['username']; 
    setcookie('username',$username,time()+10000);#cookie set with username 
    } 

我认为做的是有一个条件语句在登录页面文件的开始处检查cookie是否已设置,以及是否直接进入主页面。

#QotD_homepage.php 
if(isset($_COOKIE['username'])){ 
header("Location: main_page.php"); 
exit(); 
} 

的问题是,它似乎保持登录的用户是否勾选关闭或不。我尝试添加一个按钮来取消cookie的设置,但它没有奏效。以这种方式处理cookie更有效吗?

+1

条件语句是wrron – starkeen 2015-02-11 02:10:37

回答

2

首先,在用户登录,你将要使用的POST操作方法,因为它隐藏了来自url的信息。 GET方法包含url中的信息,可以很容易地复制和黑客入侵。

其次,你的if语句应该是这样的

if(isset($_GET['username'])) 
{ 
    $username = $_GET['username']; 
    # do something with username... 
    if(isset($_GET['signed_in']) && $_GET['signed_in']=="on") 
    setcookie('username',$username,time()+10000); 
    } 
} 

为了解决您的关于为什么用户被记录在每一次的问题,即使你不设置cookie,原因可能是因为你还没有unset的cookie。这通常通过logout页面完成。

的代码创建一个退出页面:

setcookie('username', null, 1); 

然后每次你想取消设置cookie来测试登录不选中复选框时运行该页面。

希望它有帮助:)

+0

我确实有一个注销页面!我在用户登录后在页面上设置了一个按钮,该按钮将转到小php文件,该文件使用将用户重定向到登录页面的标头方法取消设置cookie,但检查cookie的条件语句似乎仍然是读取为true并将我发回到登录后页面。 – 2015-02-11 02:28:46

+0

您是否尝试更改if语句? – Jack 2015-02-11 02:31:48

+0

复选框是复杂的html输入。用单选按钮尝试代码。如果它有效,那么你知道它与你处理复选框数据的方式有关,而不是你的cookie代码。 – Jack 2015-02-11 02:34:11

1

如果条件语句错了,用括号括起来结束它来结束。使用下面

<?php 
    if(isset($_GET['signed_in'])) {  #check box value 
    if($_GET['signed_in']=="on"){ 
    if(isset($_GET['username'])) 
    $username = $_GET['username']; 
    setcookie('username',$username,time()+10000);#cookie set with username 
    } 
} 
?> 

OR

<?php 
    if(isset($_GET['signed_in'])) :  #check box value 
    if($_GET['signed_in']=="on"){ 
    if(isset($_GET['username'])) 
    $username = $_GET['username']; 
    setcookie('username',$username,time()+10000);#cookie set with username 
    } 
endif; 
?> 

希望这段代码可以帮助您

相关问题