|
|
|
| Господа подскажите пожалуйста, как избавиться от такого бага
имеем файл авторизации юзера:
Он вставлен в каждую страницу сайта по средствам require_once('auth.php');
<?
session_start();
require_once('config.inc.php');
function auth_denied () {
header("WWW-Authenticate: Basic realm=\"$addr\"");
header("HTTP/1.0 401 Unauthorized");
print("Чтобы войти в пользовательскую часть сайта, надо ввести имя и пароль!");
exit();
}
if (!$_SESSION['auth_done']) {
$login = substr(stripslashes(strip_tags(($PHP_AUTH_USER))),0,30);
$password = substr(stripslashes(strip_tags(($PHP_AUTH_PW))),0,30);
if (!$login || !$password) auth_denied();
else {
$res = mysql_query("SELECT * FROM users WHERE user_login='".mysql_escape_string($login)."' AND user_passwd='".mysql_escape_string($password)."' LIMIT 1");
if (mysql_num_rows($res)!=1) auth_denied();
$_SESSION = array();
$_SESSION = array_merge($_SESSION,mysql_fetch_assoc($res));
$_SESSION['user_ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['auth_done'] = true;
}
} else {
if ($_SESSION['user_ip'] != $_SERVER['REMOTE_ADDR']) auth_denied();
}
?>
|
так вот, он пускает в закрытую часть, но работает до тех пор пока не отработает следующая строка:
$rimelogin = mysql_query("SELECT * from users WHERE user_login = '$phone_login'") or die(mysql_error());
while($rowlogin = mysql_fetch_array($rimelogin)) {
extract($rowlogin);
}
|
После этого если нажать на ссылку на другую страницу сайта, юзера выбрасывает и требует логин с паролем, причем даже если вводишь правильные данные не пускает, до закрытия браузера | |
|
|
|
|
|
|
|
для: Ruthless
(21.12.2006 в 13:33)
| | Было бы не плохо увидеть структуру таблицы MySQL,
из которой вы считываете данные о пользователе. | |
|
|
|
|
|
|
|
для: Ruthless
(21.12.2006 в 13:33)
| | Что за поля в таблице users, они могут совпасть с именами переменных или сессий при extract($rowlogin)? | |
|
|
|
|
|
|
|
для: XPraptor
(21.12.2006 в 14:10)
| | Структура следующая:
`user_id` int(11) NOT NULL auto_increment,
`user_name`,
`user_ip`,
`user_login`,
`user_passwd`,
`user_rights`,
`user_place`,
`user_date_reg`,
`user_last_visit`,
`user_flag`,
PRIMARY KEY (`user_id`)
|
P.S. Но как эти переменные могут попасть в сессию? Ведь я их туда не загоняю :( | |
|
|
|
|
|
|
|
для: XPraptor
(21.12.2006 в 14:10)
| | Проблема решилась тем, что на сервере на директорию sessians стояли полные права 777, понизил права, все заработало. Спасибо всем. | |
|
|
|