[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Использование сессии при входе в режим админа
}{-key
Имеется следующий код. Я новичок в сессиях, попробовал сделать по примеру, но где-то ошибся.
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 = ""; - очистил перед тем как выложить на всякий случай =)

smile.gif


Спустя 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 написал(а):
dry.gif
Ладно, поставлю вопрос по-другому: почему после нажатия по ссылке на тот же файл после создания сессии не отображается содержимое находящееся после проверки 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 написал(а):

Цитата
но и ответить можно было кратко и ясно

Можно сразу написать готовый скрипт. Или весь сайт. Зачем демагогию разводить, зачем думать заставлять людей, самим ошибки искать учить... Важен же результат, а то что в голове пусто останется и лень никуда не пропадет, так это фигня. Так ведь зато понятнее всего будет.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.