}{-key
28.08.2009 - 13:17
Имеется следующий код. Я новичок в сессиях, попробовал сделать по примеру, но где-то ошибся.
index.php :
PHP |
<body> <div id="content"> <div id="center"> <?php session_start(); error_reporting(E_ALL); if (isset($_GET["p"])) $p = $_GET["p"]; else $p = '';
if (isset($_SESSION['passed'])) { //получили доступ к меню админа } else if ($p == 1) { if ($_POST["pass"]) $pass = $_POST["pass"]; else $pass = ''; if ($pass == '') { echo("<h2>Режим администратора</h2><br><br><br><br><center> <p>Вернитесь назад и введите пароль!</p></center><br><br><br><br>"); } else { $mshost = "localhost"; $msuser = "root"; $mspassword = ""; $msname = ""; $mstamblename = ""; $msconnect = mysql_connect($mshost, $msuser, $mspassword); mysql_select_db($msname, $msconnect); $result = mysql_query("SELECT * FROM $mstamblename WHERE id = 2"); $row=mysql_fetch_array($result); mysql_close($msconnect); if ($pass == $row["pass"]) { $_SESSION['passed'] = 'checked'; echo("<h2>Режим администратора</h2><br><br><br><br><center> Идентификация успешно пройдена!<br> <a href='adm.php'>Перейти к меню администратора</a> </center><br><br><br><br>"); } else echo("<h2>Режим администратора</h2><br><br><br><br><center> Идентификация не пройдена!<br> Вернитесь назад и попробуйте ввести пароль повторно </center><br><br><br><br>"); } } else //---------------------------ИДЕНТИФИКАЦИЯ echo(" <h2>Режим администратора</h2><br><br><br><br><center> <p>Для дальнейшей работы введите пароль и нажмите кнопку 'Войти':</p> <form action='adm.php?p=1' method='post' > <input type='password' name='pass' size='10'><br><br> <input type='submit' name='bsubmit' value='Войти'></center><br><br><br><br> </form><br/>"); </div> </body> |
По-ходу, Сессия не создается или я не правильно сделал, что после создания сессии дал ссылку на тот же пхп-файл? При нажатии на ссылку при удачной проверке пароля возвращает к исходной странице с вводом пароля.
Помогите разобраться пожалуйста.
Спустя 36 минут, 1 секунда (28.08.2009 - 12:53) xPoint написал(а):
а таблицу в $mstamblename не забыли указать?
Спустя 21 минута, 8 секунд (28.08.2009 - 13:14) }{-key написал(а):
Не забыл.
$msname = "";
$mstamblename = ""; - очистил перед тем как выложить на всякий случай =)
Спустя 28 минут, 31 секунда (28.08.2009 - 13:42) glock18 написал(а):
Цитата |
Не забыл. $msname = ""; $mstamblename = ""; - очистил перед тем как выложить на всякий случай =) |
Спустя 6 минут, 31 секунда (28.08.2009 - 13:49) }{-key написал(а):
ну так что не так с сессией или с ссылкой?
Спустя 2 часа, 38 минут, 9 секунд (28.08.2009 - 16:27) Guest написал(а):
А где же ошибка которую вам должен показывать php?
Спустя 15 часов, 11 минут, 27 секунд (29.08.2009 - 07:39) }{-key написал(а):
Ладно, поставлю вопрос по-другому: почему после нажатия по ссылке на тот же файл после создания сессии не отображается содержимое находящееся после проверки
if (isset($_SESSION['passed'])) ?
Спустя 18 минут, 15 секунд (29.08.2009 - 07:57) twin написал(а):
Потому что нельзя отключать вывод ошибок. Особенно при отладке. Если бы уровень ошибок был выставлен как положено, то интерпретатор выдал бы что то вроде
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent .....
Потому что до старта сессии нелзя ничего отдавать в поток.
Спустя 2 часа, 20 минут, 11 секунд (29.08.2009 - 10:17) }{-key написал(а):
такое сообщение есть...
HTML |
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started |
Цитата |
Потому что до старта сессии нелзя ничего отдавать в поток. |
Этого не понял... Что я отдал в поток до старта сессии?
Спустя 4 минуты, 52 секунды (29.08.2009 - 10:22) anonymouse написал(а):
Любой вывод текста,отправки Header и т.д. считается текстом.
даже <html> и после него если поставить session_start() уже даст ошибку.
Если ты где-то сделаешь ошибку и она выведется - то опять это ошибка даже вышла до твоей сессий
mysql_query($dasdsa);
session_start();
Выдаст ошибку.
PHP |
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ......< |
session_start() - Всегда должен загружаться самым первым.
Спустя 1 час, 23 минуты, 6 секунд (29.08.2009 - 11:45) }{-key написал(а):
так как правильно написать?
Спустя 17 минут, 56 секунд (29.08.2009 - 12:03) Гость_hara написал(а):
Во первых вы с самого начала не указали что есть ошибка,
во вторых когда про неё спросили то вы не отреагировали.
в третьих эта проблема всплывает раз в две недели и ответ на неё можно найти самому на этом форуме.
но всё же ответили
session_start() - Всегда должен загружаться самым первым.
- а что здесь не понятного ? anonumous написал всё, добавить просто нечего. прочти его топик ещё раз, попробуй уже наконецто сам.
Спустя 24 минуты, 14 секунд (29.08.2009 - 12:27) }{-key написал(а):
Можно было написать проще: в начале файла пиши *<? session_start(); ?>* и всё.
Для меня, например, это было бы понятнее всего =\
Демогогию разводить не обязательно. Мб я и поленился копаться в темах, но и ответить можно было кратко и ясно. Все равно спс. =)
Спустя 1 час, 41 минута, 3 секунды (29.08.2009 - 14:08) twin написал(а):
Цитата |
но и ответить можно было кратко и ясно |
Можно сразу написать готовый скрипт. Или весь сайт. Зачем демагогию разводить, зачем думать заставлять людей, самим ошибки искать учить... Важен же результат, а то что в голове пусто останется и лень никуда не пропадет, так это фигня. Так ведь зато понятнее всего будет.