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函数,它将无法工作.
有任何想法吗?干杯.
首先:不要在cookie中保存密码!这在安全方面是一个非常糟糕的主意.
至于你的问题:没有办法绕过它,在设置你的cookie之前你根本就没有输出.有两种方法可以实现这一目标:
解决方案1:登录页面始终重定向
让您的登录请求转到设置cookie的脚本(如果登录成功),然后始终将用户重定向到另一个页面(例如欢迎屏幕,或者如果不成功则返回登录页面).登录脚本不会发出任何输出,因此您可以在重定向之前设置cookie.
解决方案2:输出缓冲
在脚本开头启动输出缓冲.检查成功登录后,首先设置cookie ,然后用类似的方法停止输出缓冲ob_end_flush.
我个人认为解决方案#1更优雅,功能更优越.
| 归档时间: |
|
| 查看次数: |
23666 次 |
| 最近记录: |