重定向循环
问题描述:
我正在创建类似于客户端intranat的用户登录系统。当我尝试访问主页时,我在FF中得到一个重定向循环。重定向循环
我检查,看是否有用户使用此登录:
if(($_SERVER['PHP_SELF'] != '/webmaster/index.php') && ($_SESSION['loggedin'] != '1234')){
header("Location: ".$domain."index.php?l=no");
exit();
}
下面是我的过程的login.php - >这是处理客户端登录的文件:
<?php
ob_start();
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL | E_NOTICE);
include ("config.inc.php");
include ("jsonEncode.php");
// username and password sent from form
$username = '';
$password = '';
$username = mysql_real_escape_string($_GET['username']);
$password = mysql_real_escape_string($_GET['password']);
$sql = "SELECT * FROM clients WHERE username='$username' AND password='$password' LIMIT 1";
//echo $sql;
$result = mysql_query($sql);
$data = mysql_fetch_array($result);
$count = mysql_num_rows($result);
if($count==1){
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
$_SESSION['client_id'] = $data['c_id'];
$_SESSION['loggedin'] = "1234";
/*
echo $_SESSION['client_id'];
echo $_SESSION['password'];
echo $_SESSION['username'];
*/
echo $_SESSION['loggedin'];
// valid
$var = array('valid' => 1, 'username' => $username, 'password' => $password);
print php_json_encode($var);
}else{
// invalid
$var = array('valid' => 0, 'username' => $username, 'password' => $password);
print php_json_encode($var);
}
?>
主要的index.php页面有两种形式供客户使用,一种给webmastser,如果你是客户端,你会被重定向到:clients/
,如果你是网站管理员,你会被重定向到:webmaster/
。
我检查了我的登录脚本,它正在返回正确的信息并将其登录,但它始终循环。
表单通过ajax提交,然后返回值为1的JSON有效或0无效,以查看用户是否可以继续。
答
如果表单是通过AJAX提交的,那么您确定会话cookie是相应设置的?我知道Firefox会将cookie信息与异步请求一起发送,但您是否确信它会以其他方式工作?
if (($_SERVER['PHP_SELF'] != '/webmaster/index.php') &&
($_SESSION['loggedin'] != '1234')) { // I don't like this!
header("Location: ".$domain."index.php?l=no");
exit();
}
的$ _SESSION [“的loggedIn”]值将是!=“1234”的大部分时间,这将是最初的情况下,你应该检查值是否是不确定的,以及采取相应的行动。如果用户请求index.php,那么$ _SESSION ['loggedin']是不是!='1234',如果这是一个新的会话,你现在有什么保证?否则,如果AJAX响应没有相应地设置会话cookie,则会产生重定向循环,假设您使用会话cookie跟踪用户会话?
嘿, 我尝试一下通过实际传递页面参数中的URL,我得到: {“有效”:1,“用户名”:“演示”,“密码”:“演示”} 它返回查询的正确部分,这意味着帐户信息是正确的。然后我在这里设置SESSION,并使用JavaScript重定向。 – Coughlin 2009-02-16 02:05:20