我有一个网站,人们可以在其中创建一个帐户,然后登录到他们的帐户。
当我检查登录的输入(电子邮件和密码)时,我使用名为control_login.php
的文件。这是它的代码:
// -> some DB calls checking whether the user exists or not...
if(isset($user->email) && password_verify($_POST['password_login'],$user -> password)){
session_start();
$_SESSION['auth'] = $user;
$user_id = $_SESSION['auth']->id;
echo "Loading your profile...";
header("Refresh:2 ; url=http://www.someurl.com/account.php?id=$user_id");
exit();
}
else{
$errors_login['danger'] = "We couldn't find any account. Please try again";
}
如果一切正常,我会开始一个会话并重定向到account.php
。如果没有,我会显示一条错误消息。
此account.php
文件包含一个名为logged_only()
的特定函数,该函数在一切正常时启动会话,如果没有会话则拒绝访问。这是它的代码:
function logged_only(){
if(session_status() == PHP_SESSION_NONE){
session_start();
}
if(!isset($_SESSION['auth'])){
echo 'Access denied';
header('Refresh:2 ; url=http://www.someurl.com');
exit();
}
}
这是我的问题:一切都在本地工作正常。在现实生活中(即使用网站网址时),使用Internet Explorer时一切正常。 但是,使用Chrome或Firefox时出现以下问题:
control_login.php
获取“加载您的个人资料”,意味着它找到了用户account.php
后,我的logged_only()
功能会收到以下“拒绝访问”。我有点迷失......问题出在哪里?
感谢您的帮助!
注意:目前我根本不使用cookies。
答案 0 :(得分:0)
我发现了错误:
关于网址的全部内容。
如果您首先通过输入someurl.com而非 www .someurl.com连接到网站,则表示失败,然后自动重定向到 www .someurl.com由于def StartProcess():
strings = [x.Text_Var.get() for x in entries]
print " ".join(strings)
。
因此,只有在提交用户信息时出现 www 时才会失败...
因此,对于那些需要它的人来说,这是将任何非www更改为基于www的网址的方法。您只需更新logged_only()
,如下所示:
htacess
这样,所有网址都将使用这些 www !