За последние 24 часа нас посетили 18975 программистов и 1635 роботов. Сейчас ищут 835 программистов ...

Не работает аутентификация php

Тема в разделе "PHP для новичков", создана пользователем Samir, 12 янв 2018.

  1. Samir

    Samir Новичок

    С нами с:
    12 янв 2018
    Сообщения:
    48
    Симпатии:
    1
    Ребят не первый день работаю с php, но эта проблема поставила вообще в ступор. Вроде стандартная программа(файл прикрепил и вот такая выскакивает ошибка. Не пойму в чем проблема, уже неделю мучаюсь с этим. Стоит WAMP на компьютере, вроде все как надо установил, но аутентификация все равно правильно не работает.
     

    Вложения:

  2. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    1) Не выкладывай текст в виде скриншотов. Не надо.
    2) Не первый день в PHP, а не знаешь, что пробел в ключе массива тоже считается. У тебя в пятой строке ключ с пробела начинается.
    3) Раз уж не первый день в PHP, то начинай кодить не в блокноте, а в IDE настоящей.
     
  3. Samir

    Samir Новичок

    С нами с:
    12 янв 2018
    Сообщения:
    48
    Симпатии:
    1
    1) На этом форуме впервые. А как надо загружать?
    2) Да, действительно, есть ошибка ее исправил, теперь все равно коректнj не работает, вот что выдает:

    Screenshot_3.png
     
  4. Samir

    Samir Новичок

    С нами с:
    12 янв 2018
    Сообщения:
    48
    Симпатии:
    1
    Как будто кодировка не та, но вроде обычные выводы с echo работают, очень странно
     
  5. Samir

    Samir Новичок

    С нами с:
    12 янв 2018
    Сообщения:
    48
    Симпатии:
    1
    Все разобрался, всем спасибо. Дело действительно оказалось в кодировке, только работал в Editra, там непонятно как устанавливать эту кодировку, скачал Notepad - все заработало!
     
  6. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    upload_2018-1-12_12-39-25.png
     
  7. Samir

    Samir Новичок

    С нами с:
    12 янв 2018
    Сообщения:
    48
    Симпатии:
    1
    Спасибо! Кстати рано обрадовался, теперь часть else не работает почему-то. То есть вне зависимости того, что введено в форму, срабатывает только echo в блоке if. Вот код:

    <?php
    if (isset($_SERVER['PHP_AUTH_USER']) &&
    isset($_SERVER['PHP_AUTH_PW']))
    {
    echo "Добро пожаловать, пользователь: " . $_SERVER['PHP_AUTH_USER'] .
    " , имеющий пароль: " . $_SERVER['PHP_AUTH_PW'];
    }
    else
    {
    header('WWW-Authenticate: Basic realm=\"Restricted Section\"');
    header(' HTTP/1.0 401 Unauthorized');
    die("Пожалуйста, введите имя пользователя и пароль");
    }
    ?>
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    @Samir, и опять кнопочку не нажал. Ну так isset не гарантирует, что правильный пароль введён.
     
  9. karmay

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

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    ща вот он должен выйти, сказать: "Пожалуйста, но все равно не работает".
    PHP:
    1. BB code - это вот о чем Вас просили, выложите сюда код формы и обработчика формы.
    2. Что за переменная такая PHP_AUTH_USER от массива SERVER
     
  10. Samir

    Samir Новичок

    С нами с:
    12 янв 2018
    Сообщения:
    48
    Симпатии:
    1
    почему нажал. Всмысле не гарантирует? Я так это понимаю: если что-то введено в поля имя пользователя и пароль, то должно вывести приветствие, а если нет, то код в else
    ТО есть вы хотите сказать, что код else вообще не сработает?
     
  11. karmay

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

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    ... пользователь имеющий пароль, как эпично звучит, я тоже так хочу
    Samir, а Вы случайно массив $_SERVER и $_POST не перепутали?
     
  12. Samir

    Samir Новичок

    С нами с:
    12 янв 2018
    Сообщения:
    48
    Симпатии:
    1
    Что за переменная такая PHP_AUTH_USER от массива SERVER
    -это переменная,
    нет, не перепутал. и я не говорил: "пользователь, имеющий пароль"
    --- Добавлено ---
    Возможно не совсем понимаю как тут else работает. Если можешь, объясни пожалуйста
     
  13. karmay

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

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    У вас в первом сообщение на скрине 2 есть запись Notice: Undefined index: PHP_AUTH_USER in .... что она значит?
     
  14. Samir

    Samir Новичок

    С нами с:
    12 янв 2018
    Сообщения:
    48
    Симпатии:
    1
    Возможно не совсем пон
    она значит, что я случайно допустил отступ при выводе этой переменной в ее написании, вот вылезла такая ошибка. С ней уже справился, сейчас не понимаю как работает else
     
  15. karmay

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

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    Эта ошибка значит, что интерпретатор встрел неопределенный индекс, понимаете что это такое? Это значит что он не был создан, а Вы к нему пытаетесь обратиться. Попробуйте добавить в свой код
    Код (Text):
    1. echo '<pre>'; print_r($_SERVER ); echo '</pre>';
    2. echo '<pre>'; print_r($_POST); echo '</pre>';
    первая строка покажет Вам все, что есть в массиве $_SERVER;
    вторая все - что есть в массиве $_POST;
    поищите там данные из формы
     
  16. Samir

    Samir Новичок

    С нами с:
    12 янв 2018
    Сообщения:
    48
    Симпатии:
    1
    с этой ошибкой я уже справился, c else тоже вроде получилось, спасибо за развернутый ответ)
     
  17. karmay

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

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    Для спасибо есть спец. кнопка ))
     
  18. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Samir
    Я думаю примерно надо было написать так тебе, вместо $_SERVER написать $_POST, как и выше обсуждали ребята.
    Которые так и не дождались от тебя ответа и ихний вопрос, на счет $_SERVER от куда берешь значения которые подставляешь в переменную $_SERVER, надеюсь это из полей из формы!!!
    Да я тоже повторюсь оформляй код правильно, с верху есть полоса с выбором всяких инструментов, ну так вот нажми на: </> и выбирай код пункт который надо, то ли php или html.
    PHP:
    1. <?php
    2. $err = [];
    3. if(isset($_POST['submit']))
    4. {
    5.   if (empty($_POST['PHP_AUTH_USER']))
    6.   {
    7.     if(empty($_POST['PHP_AUTH_PW']))
    8.     {
    9.       echo "Добро пожаловать, пользователь: " . $_POST['PHP_AUTH_USER'] ." , имеющий пароль: " . $_POST['PHP_AUTH_PW'];
    10.     }
    11.     $err['PHP_AUTH_USER'] = 'Введите имя пользователя';
    12.   }
    13.   $err['PHP_AUTH_PW'] = 'Введите пароль пользователя';
    14. }
     
  19. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
  20. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Спасибо читаю, я много чего не знаю)
    теперь понимаю от куда этот код, с мануалом не поспоришь)
     
  21. Samir

    Samir Новичок

    С нами с:
    12 янв 2018
    Сообщения:
    48
    Симпатии:
    1
    Ребят, спасибо большое!
    @_ne_scaju_я вроде так и оформлял как надо, честно говоря не знаю почему в неправильной форме отправился)
     
  22. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Samir
    Да не чего бывает у всех, проблемы с которыми нужна помощь, у профессионалов php тоже они есть, но редко) и нужно задавать вопросы тем кто знает ответ на этот вопрос.
     
  23. Samir

    Samir Новичок

    С нами с:
    12 янв 2018
    Сообщения:
    48
    Симпатии:
    1
    В данном случае массив $_SERVER[''] играет роль массива $_POST[''], то есть массив на сервере грубо говоря. Почему то все зациклились на этом, но вопрос не в этом был совсем)
     
  24. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    ООО. пришли люди, которые нифига не разобравшись, советуют. @_ne_scaju_, @karmay - ТС базовую аутентификацию пытается сделать. https://php.ru/manual/features.http-auth.html
    Это когда браузер окошко выводит
    upload_2018-1-12_22-8-50.png

    @Samir, пустые строки - они тоже isset, если что. Если тебе всё равно, какой пароль, проверяй empty, а не isset