设置cookie以保存PHP的登录详细信息

Sam*_*ows 4 php login setcookie

我有一个典型的登录名(用户名,密码),还希望包含一个"保存我的详细信息"复选框.登录表单将其值发布到login_script.php,如果登录成功,则将用户重定向到站点的主页面.

我想用这个方法来保存登录细节

//Remember Me Function

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

    // Set a cookie that expires in 24 hours
    setcookie("username",$username, time()+3600*24);
    setcookie("password",$password, time()+3600*24);

}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,setcookie("username",$username, time()+3600*24);必须在执行任何其他代码之前将其设置在PHP页面的顶部.

我的问题是我不想设置cookie,除非用户已成功登录.但是由于在登录测试后在脚本中间调用了set cookie函数,它将无法工作.

有任何想法吗?干杯.

Jon*_*Jon 8

首先:不要在cookie中保存密码!这在安全方面是一个非常糟糕的主意.

至于你的问题:没有办法绕过它,在设置你的cookie之前你根本就没有输出.有两种方法可以实现这一目标:

解决方案1:登录页面始终重定向

让您的登录请求转到设置cookie的脚本(如果登录成功),然后始终将用户重定向到另一个页面(例如欢迎屏幕,或者如果不成功则返回登录页面).登录脚本不会发出任何输出,因此您可以在重定向之前设置cookie.

解决方案2:输出缓冲

在脚本开头启动输出缓冲.检查成功登录后,首先设置cookie ,然后用类似的方法停止输出缓冲ob_end_flush.

我个人认为解决方案#1更优雅,功能更优越.