За последние 24 часа нас посетили 22478 программистов и 1152 робота. Сейчас ищет 651 программист ...

Не получается создать авторизацию

Тема в разделе "PHP для новичков", создана пользователем viktor72, 14 авг 2016.

  1. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Пытаюсь сделать не сложную авторизацию. Не получается, локейшен не перекидывает в админ панель.

    Код (Text):
    1.  
    2. $connect = mysql_connect('localhost', 'cdd', 'rrrrr') or die();
    3. mysql_select_db('cdd');
    4. if($_POST['submit2']){
    5.                       $admin == $_POST['user'];
    6.                       $pass == md5($_POST['pass']);
    7.    
    8. $query = mysql_query("SELECT * FROM users WHERE login = '$admin'");
    9.     $user_data = mysql_fetch_array($query);
    10.    
    11.     if($user_data['pass'] == $pass){
    12.         session_start();
    13.         $_SESSION['admin'];
    14.         header("Location: admin/admin.php");
    15.     }
    16.     }
    Почему не перебрасывает в залогиненую админку? Что я сделал не так?
    Спасибо.
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    смени литературу по которой учишь РНР, это наверное самый дельный совет.
     
    denis01 нравится это.
  3. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
  4. SpikePHP

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

    С нами с:
    6 май 2015
    Сообщения:
    130
    Симпатии:
    23
    Заголовок может не выполнится, если был уже какой-либо вывод, или если страница в кодировке UTF-8, а не в UTF-8(Без BOM). Или быть может, у тебя ошибки в коде. Я не понимаю смысл $_SESSION['admin']; строки
     
    viktor72 нравится это.
  5. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    а поконкретнее в тему что нибудь можно
    --- Добавлено ---
    utf-8 без бом .тот кусок кода , он с самого начала страницы. ничего не выводится перед ним.
     
  6. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    А что должна делать строчка
    PHP:
    1. $_SESSION['admin'];
    ?
     
  7. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    utf-8 без бом .тот кусок кода
    Рудимент. Я сам не до конца понимал зачем это вставил... удалю.. а дальше?
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Гы... Это не рудимент. Это вы не понимаете, а вообще подобная строчка должна быть, только выглядеть, например, так:
    PHP:
    1. $_SESSION['admin'] = true;
    Называется, скопипастили откуда-то, а чего такое - не разобрались.
    А дальше, отладка по шагам, вам уже описали. Проверить, попадает ли в $userData то, что должно. Посмотреть, что за код в admin.php. В приведённом фрагменте очевидных ошибок, кроме этой с $_SESSION нету. Придраться можно к устаревшему расширению, отсутствию экранирования. Дальше, можно посмотреть, действительно ли в браузер приходит статус 302 при открытии этой страницы. Можно сделать в инструментах разработчика => сеть. Если приходит не 302, смотреть, есть ли вывод до header, есть ли в логах Can't modify header information. Короче, делать пациенту вскрытие.
     
  9. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    изначально было так:
    PHP:
    1. $_SESSION['admin'] = $admin;
    а по всем остальным пунктам, учитывя мои знания, могу задать вопрос "шо?"
    ТО есть, не так много я понял... но любуюсь, приятно когла пишет умный человек...
    Из того что я умею - я проверил, что без хедера логинится а с хедером нет...
     
  10. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Ну так почитайте, что такое header, зачем оно надо, что такое статусы ответов... Или к фрилансерам
     
  11. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Уже ведь ответили, что хедер не отправится, если на страницу уже что-то выводилось...
     
  12. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    до хедера ничего не выводится на страницу
     
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Есть два типа людей - те, у кого вечная беда с хедерами и проверками, выводилось ли что-нибудь до них или нет, и те, кто знают, что такое output buffer.

    Если кратко - выплевывай данные не напрямую в поток "как есть", а в буфер вывода. О сам разберется, где там хедеры, где контент, и в каком порядке их отдавать. Как это сделать написано в документации, ссылка выше. Лайвхак - буферов может быть много, они могут быть вложенными друг в друга и позволяют творить удивительные вещи с потоком вывода.
     
    viktor72 нравится это.
  14. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Надеюсь когда нибудь я познаю сей манускрипт, но пока что смысл его мне не доступен.
    Интересно, что если я делаю тоже самое но примитивнее, вот так:

    PHP:
    1. $connect = mysql_connect('localhost', 'cddosvi15890', '5c8f9acc59') or die();
    2. mysql_select_db('cddosvi15890');
    3.            
    4. $admin = 'dosvid';
    5. $pass = '6d6bc76b5b32c11c7a609c2b9e977129';
    6.  
    7. if($_POST['submit2']){
    8.     if($admin == $_POST['user'] AND $pass == md5($_POST['pass'])){
    9.         $_SESSION['admin'] = $admin;
    10.     header("Location: admin/admin.php");
    11.     exit;
    12.     }else echo'<h3>  Логин или пароль не верны  </h3>';
    13. }
    всё нормально логинится. То есть , если логин и пароль вписаны прям в код. Но хочется , чтоб как у людей, чтоб из базы данных.
     
  15. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @viktor72 я давал тебе ссылки на отладку, тебе просто нужно перепроверить каждый шаг программы, пару часов изучать и понять как её делать, потом ещё нудно перепроверять свою программу. Тебе всё понятно как это сделать?
     
    viktor72 нравится это.
  16. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Конечно я читал высланную информацию, но, блин, там так много не понятных для меня слов... которые бы хотелось понимать.
    Прочитаю ещё раз, может со вторго раза что то понятно будет.
    Спасибо.
     
  17. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Дальше нет смысла двигаться, пока не разберёшься в отладке, потому что ты не сможешь определить проблему.
    Ты по какой книге изучаешь PHP?
     
    viktor72 нравится это.
  18. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Признаюсь, ни по каким... смотрел видео на ютубе... отталкиваясь от интересуемого . То что я хотел бы сделать на сайте, ту информацию и ищу... слегка продвинулся. Но чем дальше , тем информация сложнее.
     
  19. SpikePHP

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

    С нами с:
    6 май 2015
    Сообщения:
    130
    Симпатии:
    23
    @viktor72 могу посоветовать курсы Игоря Борисова "Специалист". Три уровня. Вполне хорошо объясняет и проходится по всем азам, если конечно тебя не выбесит его голос :)
     
    viktor72 нравится это.
  20. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Потому что первым делом, было бы быстрее понять основы, там в книгах пару тысяч страниц наберётся. Понять и попрактиковаться на пару недель, зато потом сложностей почти не будет. Как минимум ты будешь задавать правильные вопросы на форуме и наши ответы тебе помогут.
     
    viktor72 и mr.akv нравится это.
  21. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    @viktor72, а ты не спеши. Если тебе нужно срочно сайт, то закажи профи, если тебе нужно научиться программировать, то будь усидчив и терпелив. Прочитал, но не понял, что прочитал? Перечитай снова, просмотри, что именно непонятно. Почему непонятно. Погугли непонятные моменты на предмет более простого описания. Если все равно ничерта не понятно, то, скорее всего, ты забегаешь вперед, не зная основ. Значит надо немного назад вернуться, подтянуть базу. Главное - не спешить.
     
    viktor72 и mr.akv нравится это.
  22. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Вот посмотрите: http://gency.ru/authorization (правда, это больше для обычного ЛК пользователя, чем для админки, но, думаю, будет полезно).
     
    viktor72 нравится это.
  23. Alex870

    Alex870 Новичок

    С нами с:
    8 дек 2013
    Сообщения:
    121
    Симпатии:
    2
    Код (Text):
    1. $query = mysql_query("SELECT * FROM users WHERE login = '".$admin."');
    Да у него не логинится потому, что запрос ищет в базе пользователя "$admin" его там скорее всего нет :). В PHP есть оператор конкатенации "." (точка). Т.е.
    Код (Text):
    1.  
    2. $query = mysql_query("SELECT * FROM users WHERE login = '".$admin."'");
    [/QUOTE]
     
    viktor72 нравится это.
  24. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Мимо. Весь запрос заключен в двойные кавычки. Это PHP а не JS, тут двойные и одинарные кавычки отличаются не только номером в кодировке, но и тем, что у двойных кавычек расширенная логика обработки содержимого. И переменные, написанные как есть, без конкатенаторов, внутри строк в двойных кавычках, автоматом меняются на их содержимое. Но, тем не менее, писать так не стоит, имхо. Читаемость падает в разы. Лучше бить строку конкатенаторами.
     
    viktor72 нравится это.
  25. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Дайте ссылку, буду благодарен.
    --- Добавлено ---
    Полностью согласен, без базового знания даже не возможно определить что ты хочешь... Когда только начал, так и было..я даже не могу описать что я хочу
    --- Добавлено ---
    Разработка мне очень нраивтся и хочется изучить... но это не основная деятельность, поэтому к сожалению не хватает времени... а жаль. Я для своей работы разрабатываю сайт.. постопенно развиваю его
    --- Добавлено ---
    Спасибо. Посмотрю, может подойдет. я даже не знаю, чем отличется админка от личного кабинета.