За последние 24 часа нас посетили 37958 программистов и 1734 робота. Сейчас ищут 886 программистов ...

Подскажите по авторизации

Тема в разделе "Прочие вопросы по PHP", создана пользователем gix, 16 ноя 2014.

  1. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    есть вот такая штука(смотри ниже). Короч цель проста- авторизовался и получаешь доступ к контенту, ну и данные пользователя пишу в сессию. Но не могу понять почему при нажатии на любую ссылку меня возвращает на форму авторизации??? вроде ж записал пользователя в сессию, вообщем подскажите если не сложно в чем бок. Пишу я недавно, так что это только первые шаги, так сказать.
    <?php
    header('Content-Type: text/html; charset=cp1251');
    session_start();
    include_once "connect.php";
    echo "<div align='center' style='font-size: large'>Мой сайт</div><body bgcolor=#ffebcd>";
    if(isset($_POST['login']) && isset($_POST['password'])) {
    $login = trim($_POST['login']);
    $password = md5(trim($_POST['password']));
    $sql = "select login,password from users where login='$login' and password='$password'";
    mysql_query($sql) or die(mysql_error());
    if (mysql_affected_rows() == 1) {
    $_SESSION['login'] = $login;
    $_SESSION['password'] = $password;
    echo "<center>Добро пожаловать $login</center>";
    include_once "r.html";
    if (isset($_REQUEST['backbond'])) include_once "..\mygb\guestbook2.php";
    if (isset($_REQUEST['contacts'])) echo <<<star
    Наш адрес: проспект К. Маркса 112 <br>
    тел. 678-34-23
    star;
    }
    else {
    echo "<center>Пользователь не существует</center>";
    }
    }
    else
    {
    include_once "auth_form.html";
    }
    ?>
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Запиши в тегах [ code=php] [/code]

    На какую ссылку нажимаешь?
     
  3. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    ссылки которые в r.html
    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="cp1251">
    <title></title>
    </head>
    <body bgcolor="#ffebcd">
    <div style="background:skyblue ">
    <h3>Меню</h3><br>
    <a href="?main">Главная</a><br>
    <a href="?products">Продукты</a><br>
    <a href="?contacts">Контакты</a><br>
    <a href="?backbond">Обратная связь</a><br>
    </div>
    </body>
    </html>
     
  4. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Расскажи по пунктам всю логику твоей программы и все варианты её работы
     
  5. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    Логика такова-когда я захожу на сайт, мне отображается форма регистрация и ничего больше. Когда я регаюсь форма должна исчезнуть и появляется меню с ссылками, при нажатии на которые через глоб. Массив request я получаю данные и запускаю какой либо скрипт.ну на например нажав на обратная связь, я подключаю гостевую книгу.

    Добавлено спустя 1 минуту 25 секунд:
    то есть сейчас чтобы мне получить доступ к какому либо пункту меню, мне надо каждый раз регаться. тут либо с сессиями что то напутал либо хз....
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    как с сессией работаете?
     
  7. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    всмысле?
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    в прямом. ну вот видим мы тут сейшн старт, ок. запись в суперглобальный массив видим ок. это единая точка входа? после прохождения авторизации как идентифицируется браузер клиента? успешно ли клиент и сервер обмениваются нужными заголовками?
     
  9. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    О, к сожаления мои познания пока далеки от в/у вопросов(

    Добавлено спустя 18 минут 12 секунд:
    немного поменял структуру кода и вроде работает НО, когда я авторизуюсь мне выдает пустую страницу на которой только отображено "мой сайт" и только если я выделю заголовок и нажимаю enter, тогда отображается содержимое сайта.
    <?php
    header('Content-Type: text/html; charset=cp1251');
    session_start();
    include_once "connect.php";
    echo "<div align='center' style='font-size: large'>Мой сайт</div><body bgcolor=#ffebcd>";
    if(!empty($_POST['login']) && !empty($_POST['password'])) {
    $login = trim($_POST['login']);
    $password = md5(trim($_POST['password']));
    $sql = "select login,password from users where login='$login' and password='$password'";
    mysql_query($sql) or die(mysql_error());
    if (mysql_affected_rows() == 1) {
    $_SESSION['login'] = $login;
    $_SESSION['password'] = $password;
    }
    else {
    echo "<center>Пользователь не существует</center>";
    }
    }
    elseif(isset($_SESSION['login']))
    {
    echo "<center>Добро пожаловать ".$_SESSION['login']."</center>";
    include_once "r.html";
    if (isset($_REQUEST['backbond'])) include_once "..\mygb\guestbook2.php";
    if (isset($_REQUEST['contacts'])) echo <<<star
    Наш адрес: проспект К. Маркса 112 <br>
    тел. 678-34-23
    star;
    }
    else
    {
    include_once "auth_form.html";
    }
    if(isset($_REQUEST['reg'])) include_once"reg_form.html";
    ?>

    Добавлено спустя 24 минуты 55 секунд:
    вообщем решился вопрос следующим образом. код авторизации и сессии был вынесен в отдельный файл auth_form.php и получается index теперь вот такой
    Код (Text):
    1. <?php
    2. header('Content-Type: text/html; charset=cp1251');
    3. echo "<div align='center' style='font-size: large'>Мой сайт</div><body bgcolor=#ffebcd>";
    4. include_once "auth_form.php";
    5. if(isset($_SESSION['login']))
    6. {
    7.     echo "<center>Добро пожаловать ".$_SESSION['login']."</center>";
    8.     include_once "r.html";
    9.     if (isset($_REQUEST['backbond'])) include_once "..\mygb\guestbook2.php";
    10.     if (isset($_REQUEST['contacts'])) echo <<<star
    11.         Наш адрес: проспект К. Маркса 112 <br>
    12.         тел. 678-34-23
    13. star;
    14. }
    15. else
    16. {
    17.     include_once "auth_form.html";
    18. }
    19. ?>
    Добавлено спустя 4 минуты 52 секунды:
    Признаться раньше думал что include используется только для того чтобы не наводить срачь в основном файле, а получается разница не только в этом. Я так понимаю если я подключаю файл то его код выполняется независимо от основного файла или в чем тогда разница? почему так не работала. а так работает?!
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    я вот честно не читал ваши коды после объявления о том что работает. и после того как прочитал фразу "я выделю заголовок и нажимаю enter"... вы адрес в браузере выделяете? ну реально. терминология не ок
    по подводу инклюда. это подключение стороннего файла в момент интерпретации. придумано по большей части для возможности создания библиотек кода. то есть чтоб не декларировать функции одни и те же постоянно а сложить их в один большой файл. ну то есть чтоб срача в коде не было, да. и интерпретатор выполняет инструкцию подключения только если столкнулся с ней. то есть если в в компилируемых языках заявленный код будет подключен на этапе компиляции и может быть никогда не выполнится - в пхп он будет подключен только если нужен. речь о конструкциях типа if(1){ include '1.php'; } else { include '2.php' } - элс никогда не выполнится потому что единица всегда истинна. следовательно два-пхп никогда не выполнится. более того его не будет трогать транслятор, то есть этого файла может физически не существовать и на работе программы это никак не скажется. как-то так.
     
  11. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    спасибо большое за помощь!

    Добавлено спустя 1 минуту 12 секунд:
    но на примитивном уровне я так и не понял почему оно заработало после преобразования кода в отдельный файл