Показано с 1 по 5 из 5

Тема: Авторизация с сессиями и кукисами!

  1. #1

    Регистрация
    08.11.2007
    Сообщений
    8

    Стрелка

    Написал тут после долгих дум скрипт авторизации... фууу... трудно же это делать. И всё равно какие-то ошибки выводит. Тоесть он работает, но вверху страницы выводятся вот такие ошибки:

    Warning: session_start(): Cannot send session cookie - headers already sent by (output started at x:homeace-lighting.net.ruwwwadminindex.php:2) in x:homeace-lighting.net.ruwwwadminindex.php on line 3

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at x:homeace-lighting.net.ruwwwadminindex.php:2) in x:homeace-lighting.net.ruwwwadminindex.php on line 3

    Notice: Undefined index: login in x:homeace-lighting.net.ruwwwadminindex.php on line 20
    [ убрать подсказку | никогда больше не показывать ]

    Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля ошибок в PHP, по умолчанию установленного в Денвере (E_ALL). Такой режим вывода ошибок является рекомендуемым и сильно помогает при отладке скриптов. Однако множество готовых скриптов требуют более низкого уровня ошибок.

    Вы можете установить более слабый контроль ошибок одним из следующих способов:

    * * * Впишите в скрипты строчку:

    * * * Error_Reporting(E_ALL & ~E_NOTICE);

    * * * Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными.
    * * * Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания:

    * * * php_value error_reporting 7

    * * * Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым и может привести к серьезным неудобствам при отладке!

    [Денвер: показать возможную причину ошибки]
    Notice: Undefined index: action in x:homeace-lighting.net.ruwwwadminindex.php on line 27
    А текст скрипта такой:
    Код:
    <?
     session_start();
     $password = &#39;202cb962ac59075b964b07152d234b70&#39;; // хеш правильного пароль
     $login = &#39;admin&#39;; // правильный логин
     if (!session_is_registered(&#39;logged&#39;))
     *$_SESSION[&#39;logged&#39;] = 0;
    
     if ($_SESSION[&#39;logged&#39;] == 1) // если уже осуществлен вход
     *if ($_GET[&#39;a&#39;] == &#39;logout&#39;) // если нажата ссылка выхода
     *{
     * $_SESSION[&#39;logged&#39;] = 0; // тогда сбрасываем переменную $_SESSION[&#39;logged&#39;] в ноль
     * unset($_COOKIE[&#39;login&#39;]);
     * unset($_COOKIE[&#39;password&#39;]);
     * setcookie(&#39;login&#39;,&#39;&#39;,time(),&#39;/admin/&#39;);
     * setcookie(&#39;password&#39;,&#39;&#39;,time(),&#39;/admin&#39;);
     *}
    
     // попытка захода через переменные cookie
     if ($_COOKIE[&#39;login&#39;] == $login && $_COOKIE[&#39;password&#39;] == $password)
     {
     *$_SESSION[&#39;logged&#39;] = 1;
     *setcookie(&#39;login&#39;,$login,time()+60*60*24*14,&#39;/admin/&#39;);
     *setcookie(&#39;password&#39;,$password,time()+60*60*24*14,&#39;/admin/&#39;);
     }
    
     if ($_POST[&#39;action&#39;] == &#39;login&#39;)
     {
     *if ($_POST[&#39;login&#39;] == $login && md5($_POST[&#39;pass&#39;]) == $password)
     *{
     * $_SESSION[&#39;logged&#39;] = 1;
     * setcookie(&#39;login&#39;,$login,time()+60*60*24*14,&#39;/admin/&#39;);
     * setcookie(&#39;password&#39;,md5($_POST[&#39;pass&#39;]),time()+60*60*24*14,&#39;/admin/&#39;);
     *}
     }
    
     if ($_SESSION[&#39;logged&#39;] == 0)
     {
    ?>
    <div align="center"><form action="index.php" method="post">
    <input type="hidden" name="action" value="login" />
    Логин:
    <input type="text" name="login" value="" />
    
    
    Пароль:
    <input type="password" name="pass" value="" />
    
    
    <input type="submit" value="вход" />
    </form></div>
    <?
     }
     else
     {
     *echo "Секретная информация!!!
    <a href="/admin/?a=act1">Действие 1</a>";
     *echo "
    <a href="/admin/?a=act2">Действие 2</a>";
     *echo "
    <a href="/admin/?a=act3">Действие 3</a>";
     *if ($_GET[&#39;a&#39;] == &#39;act1&#39;)
     * echo "
    Вы нажали Действие один";
     *if ($_GET[&#39;a&#39;] == &#39;act2&#39;)
     * echo "
    Вы нажали Действие два";
     *if ($_GET[&#39;a&#39;] == &#39;act3&#39;)
     * echo "
    Вы нажали Действие три";
     *echo "
    <a href="/admin/?a=logout">Выход</a>";
     }
    ?>
    Что здесь не так? Уже всю голову сломал... Застрелиться можно с этим PHP
    P.S. Там пароль:123 в md5.

  2. #2
    Apok
    Гость
    не надо стреляться. лучше учите язык

    Код:
    <?php
    session_start();
    ****$password = &#39;202cb962ac59075b964b07152d234b70&#39;; // хеш правильного пароль
    ****$login = &#39;admin&#39;; // правильный логин
    
    if ($_GET[&#39;a&#39;] == &#39;logout&#39;) // если нажата ссылка выхода
    {
     *$_SESSION[&#39;logged&#39;] = 0; // тогда сбрасываем переменную $_SESSION[&#39;logged&#39;] в ноль
     *unset($_COOKIE[&#39;login&#39;]);
     *unset($_COOKIE[&#39;password&#39;]);
     *setcookie(&#39;login&#39;,&#39;&#39;,time(),&#39;/admin/&#39;);
     *setcookie(&#39;password&#39;,&#39;&#39;,time(),&#39;/admin&#39;);
    }
    
    // попытка захода через переменные cookie
    if ($_COOKIE[&#39;login&#39;] == $login && $_COOKIE[&#39;password&#39;] == $password)
    {
     *$_SESSION[&#39;logged&#39;] = 1;
     *setcookie(&#39;login&#39;,$login,time()+60*60*24*14,&#39;/admin/&#39;);
     *setcookie(&#39;password&#39;,$password,time()+60*60*24*14,&#39;/admin/&#39;);
    }
    
    if ($_POST[&#39;action&#39;] == &#39;login&#39; && $_POST[&#39;login&#39;] == $login && md5($_POST[&#39;pass&#39;]) == $password)
    {
     *$_SESSION[&#39;logged&#39;] = 1;
     *setcookie(&#39;login&#39;,$login,time()+60*60*24*14,&#39;/admin/&#39;);
     *setcookie(&#39;password&#39;,md5($_POST[&#39;pass&#39;]),time()+60*60*24*14,&#39;/admin/&#39;);
    }
    
    if ($_SESSION[&#39;logged&#39;] == 1)
    {
     *echo "Секретная информация!!!
    <a href=\"index.php?a=act1\">Действие 1</a>";
     *echo "
    <a href=\"index.php?a=act2\">Действие 2</a>";
     *echo "
    <a href=\"index.php?a=act3\">Действие 3</a>";
     *if ($_GET[&#39;a&#39;] == &#39;act1&#39;)
     * echo "
    Вы нажали Действие один";
     *if ($_GET[&#39;a&#39;] == &#39;act2&#39;)
     * echo "
    Вы нажали Действие два";
     *if ($_GET[&#39;a&#39;] == &#39;act3&#39;)
     * echo "
    Вы нажали Действие три";
     *echo "
    <a href=\"index.php?a=logout\">Выход</a>";
    }
    else
    {
    ?>
    ****<div align="center"><form action="index.php" method="post">
    ****<input type="hidden" name="action" value="login" />
    ****Логин:
    <input type="text" name="login" value="" />
    
    
    ****Пароль:
    <input type="password" name="pass" value="" />
    
    
    ****<input type="submit" value="вход" />
    ****</form></div>
    <?php
    }
    ?>
    вы этого добивались?
    если есть КОНКРЕТНЫЕ вопросы - спрашивайте. по поводу толкования уведомлений об ошибках читайте инет. очень всего много.

  3. #3

    Регистрация
    08.11.2007
    Сообщений
    8
    Спасибо вам! вы уж простите меня - такого бестолкового

  4. #4

    Регистрация
    08.11.2007
    Сообщений
    8
    Вот я закачал для примера сайт:
    monolitiki.hut2.ru/index.php
    Вставил туда исправленный вами скрипт и всё равно ошибки...
    В чём дело-то? Пожалуйста, не сердитесь... просто я новичёк и прошу помочь добрых людей...

  5. #5

    Регистрация
    30.11.2007
    Адрес
    Симферополь
    Сообщений
    34
    читайте мануалы ей-богу. или хотябы переведите сообщения ошибки на великий и могучий.
    если так уж неимется выводить текст и слать заголовки до кук и сессий то используйте "Output Handling Functions".
    что надо могу объяснить. стучите

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •