重定向循环

时间:2009-02-14 16:14:19

标签: php login

我正在创建一个类似于客户端intranat的用户登录系统。当我尝试访问主页面时,我在FF中获得了一个重定向循环。

我正在检查用户是否使用此登录:

if(($_SERVER['PHP_SELF'] != '/webmaster/index.php') && ($_SESSION['loggedin'] != '1234')){
  header("Location: ".$domain."index.php?l=no");
  exit();
}

以下是我的process-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页面有两个表单,一个用于客户端,一个用于webmastsers,如果您是客户端,则会被重定向到:clients/,如果您是网站管理员,则会被重定向到: webmaster/

我已经检查了我的登录脚本,它正在返回正确的信息并将其记录下来,但它会不断循环。

表单通过ajax提交,然后返回值为1的JSON有效或0无效,以查看用户是否可以继续。

1 个答案:

答案 0 :(得分:1)

如果通过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来跟踪用户会话,那么您将有一个重定向循环?