Опыта в php и серверной части нет. Есть Денвер. Не могу разобраться с авторизацией при помощи сессий. Непонятные ошибки при работе скрипта. index.php - должен показывать успешную авторизацию. Не показывает. Код (PHP): <?php session_start(); if ($authorize!=1) die("Несанкционированный доступ"); ?> <html><body> Авторизация успешная </body></html> auth1.html - форма авторизации. Работает. Код (PHP): <html><body> <form action=enter.php> Логин: <input name=login type=text><br> Пароль: <input name=pass type=text><br> <input type=submit value="Войти"> </form> </body></html> enter.php - скрипт обрабатывающий данные формы, который должен устанавливать значение сессии. Работает наполовину. Код (PHP): <?php $login=@$_GET['login']; $pass=@$_GET['pass']; $result=0; foreach (file('User.dat',FILE_IGNORE_NEW_LINES) as $k) { if($k==$login."-".$pass) { $result=1; echo "res=true"."<br>"; break; } } if ($result!=1) die("Несанкционированный доступ"); session_start(); session_register("authorize"); $authorize=1; ?> user.dat - "база" логинов Код (PHP): Login1-Login11 Login2-Login12 Проблема. Когда ввожу в форму Login1 Login11, то скрипт успешно проверяет их и выдает res=true Но после этого пишет Я это не понимаю. Какие заголовки куда уже отосланы и как это все привести в рабочее состояние? Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделать? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т.д.
Код (PHP): session_start(); должно быть до HTML кода, до вообще какого-нибудь вывода текста в браузер. избавься от денвера, используй OpenServer.
Закрывать ?> в конце php-файла сейчас не рекомендуется!. Ну и следи нет ли у тебя пустой строки/пробела/BOM перед первым <?php Ну и если у тебя уже случился какой-то вывод ошибки перед header или session_start, то эта ошибка уже будет следствием первой.
С первым предупреждения я разобрался. Да, не надо было выводить ничего. А устаревшая функция session_register(), какую нужно использовать вместо ее?
artoodetoo, спасибо! Теперь разберусь. VLK, да, пока я не знаю что читать. Нашел пример в инете, чел пишет - так делать, так я и пытаюсь делать.
Все равно не работает. Я поправил enter.php Код (PHP): <?php $login=@$_GET['login']; $pass=@$_GET['pass']; $result=0; foreach (file('User.dat',FILE_IGNORE_NEW_LINES) as $k) { if($k==$login."-".$pass) { $result=1; break; } } if ($result!=1) die("Несанкционированный доступ"); session_start(); if (!isset($_SESSION['authorize'])) { $_SESSION['authorize'] = 1; session_write_close(); } Ошибок не выдает. Но index.php говорит: "Несанкционированный доступ" Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделать? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т.д.
ты ждешь, что мы за тебя поотлаживаем? ))) http://phpfaq.ru/debug нет, ты сам всё найдешь. как большой.
Спасибо. Нашел. В index.php переменная осталась со старого варианта, я ее не заменил на $_SESSION['authorize'] Подскажите по документации. Там есть такая непонятная строчка: "I have wrote this following piece of code that shows how to work with global sessions (global to all clients) and private sessions (private per browser instance i.e. session cookie)." session_name('Global'); - если так задавать сессию, то значения переменной будут доступны из любых броузеров в любое время, пока сессия не будет принудительно закрыта session_write_close(); ? session_name('Private'); - а так переменная будет существовать только до закрытия этого экземпляра броузера? А как же тогда это согласовывается с "Сессия обычно завершает свою работу, когда PHP заканчивает исполнять скрипт, но может быть завершена и вручную с помощью функции session_write_close()." Или это значит, что сессия завершается, но переменные в ней сохраняются? А клиент для сервера - это броузер со всеми вкладками, или каждая вкладка (окно) - это отдельный клиент?