Цикл перенаправления - PullRequest
       10

Цикл перенаправления

0 голосов
/ 14 февраля 2009

Я создаю систему входа пользователя, похожую на интранат клиента. И когда я пытаюсь получить доступ к главной странице, я получаю цикл перенаправления в 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 имеет две формы, одну для клиентов и одну для веб-мастеров, и если вы клиент, вы перенаправлены на: clients/, а если вы веб-мастер, вы перенаправлены на: webmaster/.

Я проверил свои сценарии входа в систему, и он возвращает нужную информацию и регистрирует ее, но она продолжает работать.

Форма отправляется через ajax, затем возвращает JSON со значением 1, действительным или 0 недействительным, чтобы проверить, может ли пользователь продолжить.

1 Ответ

1 голос
/ 14 февраля 2009

Если форма отправлена ​​через 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 сеанса для отслеживания сеанса пользователя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...