我试图创建一个PHP网站处理登录到一个网站。
我的目标是简单地有一种方法,有人可以通过一个服务小部件登录。授权通过,其中一件事是,我把它发送到另一个php页面的授权细节,以检查是否从登录小部件返回的数据是合法的。如果不是,它只会出错并重定向回登录。这部分工作得很好,但出现的问题,我不'我不明白,因为我是相当新的PHP是问题的cookie不更新到$_COOKIE数组(字典?)。
所以它会指向另一个php文件并处理它。如果授权通过,它会创建一个像这样的cookie:
setcookie('user', $user_data, time()+3600, "/", $domain, true);
然后它重定向回登录页面
header('Location: test_login.php')
然后当我检查它是否设置为以下内容时
isset($_COOKIE['user'])
这返回FALSE??我检查了检查和cookie非常存在于浏览器中!我不明白.我检查了它,它显示什么似乎是一切工作.它似乎能够访问它.我不确定为什么.有什么或任何想法,可能会导致这个问题?
2条答案
按热度按时间2lpgd9681#
根据评论回复,代码中缺少if。下面是修复方法:
或者,我会使用类似这样的东西来检查cookie的存在:
未设置的cookie将等于一个空字符串,而设置的cookie不会。希望这对你有帮助。
kxkpmulp2#
虽然cookie可以用于认证,他们是客户端可以操纵的东西。.所以从mte浏览器我可以设置任何cokie我想要的,如果你的后端/服务器端依赖于Cookie“用户”是“someuser”,我可以蛮力这个,并设置它可以是有效的东西,从而接管您的用户帐户。.
我建议你使用
$_SESSION
s,它只存在于服务器端,不会暴露在前端...类似于$_COOKIE,但隐藏在前端...因此,在身份验证时,您可以设置$_SESSION ['user'] = 'someusername',从前端的Angular 来看,我无法重置它。
你可以从这里开始:https://www.php.net/manual/en/function.session-start.php