2015-10-07 111 views
0

Cookie未设置。 setcookie()结构对我来说看起来很合适,但由于某种原因,我无法让它工作。下面是我使用的形式:setcookie()不能从登录表单工作

if(isset($_POST['LoginBtn'])) 
{ 

$username = mysql_escape_string($_POST['username']); 
$password = mysql_escape_string($_POST['password']); 
if($_POST['remember_me']==1){ 

       $twoDays = 60 * 60 * 24 * 300 + time(); 
       setcookie('UserLogin', $username, $twoDays); 
       setcookie('UserPass', $password, $twoDays); 
      } 
     echo '<script>window.location="index.php"</script>'; 


} 
?> 

<html> 
<head> 
<title>Log In</title> 
</head> 
<body> 
<form method="post" action="login2.php"> 
<input type="text" name="username" value="<?php echo $_COOKIE['UserLogin'];?>" /> 
<input type="password" name="password" value="<?php echo $_COOKIE['UserPass'];?>" /> 
<input type="checkbox" name="remember_me" value="1"/> Remember Me 
<input type="hidden" name="LoginBtn" value="1" /> 
<button type="submit">Login Now</button> 
</form> 

而且这里是我试图饼干呼应的索引页:

<?php 
echo "<br />cookie user_name: ".$_COOKIE['UserLogin']; 
    echo "<br />cookie user_pass: ".$_COOKIE['UserPass']; 
echo "<br /><a href='login2.php'>Back</a>"; 
?> 
+0

你有没有在浏览器中的cookie检查是否产生或不? –

+1

请勿使用'mysql_'功能。他们不会在当前的PHP版本中工作。它只用于石器时代的PHP。 – DanFromGermany

回答

0

利用时间的东西similer这个

$twoDay = time() + (86400 * 30), "/"); // 86400 = 1 day 

由于错误的过期时间,您的cookie没有设置

+0

此解决方案会导致以下错误:内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。 –

1

只是一个小小的变化

$twoDays = 60 * 60 * 24 * 30 + time();

+0

此解决方案不会设置cookie,但不会像下面的答案那样引发错误。也许这是一个线索 –

0

正如我如上所述,当我设置cookie时间不正确我正在500错误,那就是即使提交表单之前。所以我将表单操作更改为一个单独的页面(login_ac.php),它工作。

//窗体操作:

<?php 
$username = mysql_escape_string($_POST['username']); 
$password = mysql_escape_string($_POST['password']); 
if($_POST['remember_me']==1){ 
       $twoDays = 60 * 60 * 24 * 30 + time(); 
       setcookie('UserLogin', $username, $twoDays); 
       setcookie('UserPass', $password, $twoDays); 
      } 
     echo '<script>window.location="index.php"</script>'; 
     ?>