Добрый вечер. Написал админку для сайта, используя механизм авторизации описанный в книгах Д.Колесниченко (может кто сталкивался). Есть меню с таким кодом Код (Text): if (!isset($_POST['submit'])) {//выводим форму входа;} else { $login = $_POST['login']; fast_connect_to_bd(); //моя функция $query = "SELECT * FROM admin_users WHERE username = '".$login."'"; $r = mysql_query($query) or die('error'); $f = mysql_fetch_assoc($r); $password = $_POST['password']; if (coder($password)===$f[userpass]) //coder - моя функция { mt_srand(time() + (double)microtime()*55); $N = mt_rand(0, 999); $sname = "MySession$N"; session_name($sname); session_start(); session_register("auth","username","pass"); $auth = 1; $username = $login; $pass = coder($password); //выводим меню со ссылками вида a href="edit_text.php?sname=$sname unset ($_POST['submit']); } else {//сообщение об ошибке} } По ссылке открывается сценарий авторизации Код (Text): if (!isset($_GET['sname']))) die ('Сначала пройдите авторизацию!'); //подключение к сессии session_name($sname); session_start(); //проверка переменных сессии if ($auth !=1) die ('Ошибка аутентификации'); fast_connect_to_bd() or die ('Ошибка доступа к Базе данных'); //моя функция $r = select_line_from_db ("*","admin_users","username",$username); //моя функция if ($r[userpass] === $pass) {// текст скрипта Это всё дело превосходно работало на домашнем компе и на хостинге. Сегодня перенес на другой хостинг, и появилась ошибка И не работает....пишет всё время 'Ошибка аутентификации'. Получается, не передаются переменные сессии... В чем же дело?? PHP Version 5.2.11 register_globals off
$r[userpass] - элемент массива, из базы данных $pass - переменная сессии. Извини, но я немного не понимаю, что именно ты имеешь ввиду...$pass - в первом файле регистрируется как переменная сессии. А if ($r[userpass] === $pass) - проверка во втором файле
поэтому это неверно. переменная сессии у тебя в $_SESSION['pass'] но ругается именно на наличие $pass (почему - это отдельный разговор или можешь почитать описание session.bug_compat_42 )
т.е. если я правильно понял - мне и надо тут сделать Код (Text): session_register("auth","username","pass"); $_SESSION['auth'] = 1; $_SESSION['username'] = $login; $_SESSION['pass'] = coder($password); и при проверке использовать массив $_SESSION ???
session_register не использовать. Поскольку эта функция deprecated. Если хочешь что-то сохранить или достать из сессии обращайся к $_SESSION точно так же как к $_POST/$_GET