不检查时设置cookie

时间:2018-08-24 10:21:40

标签: php jquery

我有这些代码,当我运行这些代码时,它会在选中复选框和未选中时设置cookie。 在两种情况下,它都会设置Cookie

$("#login_submit").click(function(){
    var login_username=$('input[name=login_username]').val();
    var login_password=$('input[name=login_password]').val();
    var remember=$("#remember").is(':checked');

    $.ajax({
      url:'includes/login.php',
      type:'POST',
      data:{login_username,login_password,remember},
      success:function(data){
        location.href='controlpanel.php';
      },
    });
  });
<form onsubmit="return false" class="login-form" action="" method="post">
  <div class="login-container">
    <input type="text" class="modal-login" placeholder="username" name="login_username">
    <input type="password" class="modal-login" placeholder="password" name="login_password" style="margin-bottom:3px">
    <div class="remember-div">
      <input type="checkbox" name="remember" id="remember">
      <label for="remember">remember me</label>
    </div>
    <button type="submit" class="login" name="login_submit" id="login_submit">login</button>
  </div>
</form>

和php代码

require_once '../config/config.php';

$login_username=$_POST['login_username'];
$login_password=md5($_POST['login_password']);

$login_check=mysqli_query($db,"select * from users where username='$login_username' and password='$login_password'");
$username_id=mysqli_fetch_array($login_check)['id'];
if(mysqli_num_rows($login_check)>0){
  $_SESSION['login'] = $username_id;
  $remember=$_POST['remember'];
  if($remember){
    setcookie('login',$username_id,time()+60*60*24*30,'/');
  }
  echo "ok";
}else{
  echo 'ko';
}

在两种情况下,它都会在其被选中和未选中时设置cookie

2 个答案:

答案 0 :(得分:0)

我想给你一个建议。

当用户单击“记住我”复选框时,设置cookie。 Cookie将仅在下次尝试登录时用于显示凭据。这样他们就可以下次轻松登录。

如果他们未点击/选中“记住我”复选框,则不要保存Cookie。

对于登录和用户面板管理,请使用会话。在他们登录时设置会话,并在他们退出时销毁会话。

如果您需要更多信息,请问我。

答案 1 :(得分:0)

您的代码中有

$remember=$_POST['remember'];
if($remember){
    setcookie('login',$username_id,time()+60*60*24*30,'/');
 }

'if($ remember)'将始终为true,因为它只是在检查一个值,而不是该值是否实际上为'true',而是一个值存在,即使该值为'false'。

有几种方法可以解决此问题,但一种方法是:

在HTML中将值添加到复选框

<input type="checkbox" name="remember" id="remember" value="remember">

在您的脚本更改中

var remember=$("#remember").is(':checked');

var remember= $('#remember:checked').val(); 

然后在您的PHP中

if ($_POST['remember'] == 'remember') { // your code