За последние 24 часа нас посетили 17313 программистов и 1289 роботов. Сейчас ищут 1555 программистов ...

Система друзей и ее реализация php mysql

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

  1. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    1. Нигде не инициализирована переменная email.
    2. Нефиг отправлять заголовки после вывода чего-либо на экран, не должно быть даже пробела перед <?php, не должно быть BOMa
    куда уж подробней то.
     
  2. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @acho
    Ах ну да, проверю, файлы, ну вряд ли у меня пробелы есть, и кодировка utf8 стоит на всех файлах.
    А вот на счет заголовки я не понял. Можно хотя бы пример показать?
     
  3. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    PHP:
    1. $_SESSION['porno'] = 'porno';
    2. header ('Location: //www.porno.net')
    Выдаст ошибку что заголовки уже отправлены.
     
    #228 SamyRed, 28 мар 2017
    Последнее редактирование модератором: 28 мар 2017
  4. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
  5. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Чёт тупонул. Ну что-то в этом роде. Хотя я после эко создаю сессию, создаю кукисы и делаю хедер локейшн, и у меня ошибка не падает...
     
  6. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @SamyRed
    Ну и пример, можно было бы и лучше что то показать.
    Можно хотя с формой полностью и куском кода показать. нет показал как он запустил сессию что то ввел в сессию, и header() ввел ...
    Пример прям для новичка.
    Покажите пожалуйста, по лучше пример.
     
  7. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @_ne_scaju_, держи
    PHP:
    1. $_SESSION['porno'] = 'porno';
    2. echo "пример получше";
    3. header ('Location: //www.porno.net')
    --- Добавлено ---
    @SamyRed, буфер
     
  8. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    У меня всё работает)
     
  9. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @SamyRed, у тебя скорее всего инфа идёт сначала в буфер, а не выбрасывается сразу. Где-то можно так настроить php. И только по заполнению буфера инфа выбрасывается. Т.е. вывод всё равно происходит после отправки заголовков.
    Либо, если используешь единую точку входа, в ней может быть объявлен ob_start(), и вся генерируемая страница в нём.
    Либо ты тупо прикрыл ошибки =D
    В любом случае отправки заголовков после вывода невозможен. Это не php такой плохой так решил и "где-то может и прокатит". Это явление происходит от принципа работы протокола HTTP
     
  10. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Я на виртуальном хостенге. У меня нет доступа к php.ini. А тестирую я на левой, спеиально созданной странице. Там точно нет ob_start ()))
     
  11. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @SamyRed
    @acho
    Так народ а обязательно ли указывать на странице ob_start() просто когда я его указываю у меня ошибка исчезает)
    И сразу второй вопрос, например регаю юзера, потом делаю вход в систему ну или на сайт при этом пароль 12345 в коде добавляю вывод сессии
    print_r($_SESSION);

    и мне этот вывод сессии выдает именно пароль в зашифрованном виде, правильно ли это? Или это глюк? Мне кажется он должен вывести был именно, 12345 а не зашифрованный пароль.
     
    #236 _ne_scaju_, 28 мар 2017
    Последнее редактирование: 28 мар 2017
  12. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Не обязательно. Но если ошибка исчезает и всё работает правильно - оставляй.
     
  13. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @SamyRed
    Ахаха спасибо, а что на счет второго вопроса?
    Делаю вход на сайт пароль 12345 на этой странице делаю проверку сессии print_r($_SESSION); мне выводят так:
    [login] => userlogin
    [pass] => здесь цифры зашифрованный пароль
    А случайно не должно быть так:
    [login] => admin
    [pass] => userlogin
    Ответьте мне пожалуйста.
     
  14. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    да какой правильно. Извините, у меня не хватает терпения. Нихера не правильно. Правильно оно будет тогда, когда разработчик будет понимать что и для чего, как оно работает.
    Зачем ob_start? да хрен знает. Ошибка то пропала. А что дальше делать? да хрен его знает. Пойду на форуме ещё один тупой вопрос задам.
    Почему пароль зашифрованный? Да глюк. Мне же пофиг, как оно работает и откуда берётся. Это ведь глюк.

    В общем не будешь ты программистом. Никогда. Забудь про это.
     
    romach и valentinnew нравится это.
  15. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Начну с другого, пароль в сессии хранить не надо, потому что если ты в сессию логин записал только при случаи что пароль пользователь ввёл правильно, то ты можешь сессии доверять если там есть только логин пользователя, потому что есть только один способ туда прописать логин, это при входе вписать правильный логин и пароль

    На вопрос как должно быть, это не соответствие того что ты себе придумал и работы кода, тут нужно просто вникнуть в свой код, по шагам с ним пройтись и посмотреть когда и как всё формируется и записывается
     
  16. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @acho
    Тебе спасибо, что сказал, что не стать мне программистом)))
    Но не тебе решать, кем мне не стать. Да и учусь я на программиста)))
    Только мы не изучаем php mysql js css это я сам начал учить.
    @denis01
    Теперь тебе отвечу) Пароль я в сессии не храню, я просто хочу его проверить, что выводится когда какой то пользователь ввел логин и пароль.
    Вот сам код приложу, и укажите мне где я сессию для пароля храню.
    --- Добавлено ---
    @denis01
    @acho
    @SamyRed
    Укажите где я ошибся в скрипте, и сохраняю пароль в сессии, спасибо.
     

    Вложения:

    • inc.zip
      Размер файла:
      2 КБ
      Просмотров:
      4
    #241 _ne_scaju_, 29 мар 2017
    Последнее редактирование: 29 мар 2017
  17. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    PHP:
    1.         $_SESSION['login'] = $_POST['login'];
    2.                  $_SESSION['pass'] = $rows[0]['pass'];
    ещё
    PHP:
    1. md5(md5($_POST['pass']).$rows[0]['salt'])
    не надо так делать, вот читай https://habrahabr.ru/post/194972/
     
  18. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    Так у меня уже созданы 2 таблицы в базе для соли и хеша, а что теперь как исправлять, для начала?
    Вот у меня функция такая для соли
    PHP:
    1.  function salt()
    2. {
    3.     $salt = substr(md5(uniqid()), -8);
    4.     return $salt;
    5. }
    Можете на этом примере показать другой способ хранения пароля, который вы предложили)))
    Спасибо.
     
  19. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Тебе целую статью дали, где подробно разжевывается для тех, кому документация слишком сложна. * забил себя фэйспалмом от прочтения топика *
     
    mahmuzar и SamyRed нравится это.
  20. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @romach
    Я прочитал, и не фига не понял, как и в каких случаях его применять.
    Ну если я понял мою функцию можно изменить на:
    PHP:
    1.  function salt()
    2. {
    3.   if (password_needs_rehash($hash, PASSWORD_DEFAULT, ['cost' => 12])) {
    4.     $hash = password_hash($password, PASSWORD_DEFAULT, ['cost' => 12]);
    5. }
    6. echo $hash;
    7. }
     
  21. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    $hash = password_hash($passwod, PASSWORD_DEFAULT);
    С такой хеш создается, а пароль нет не в зашифрованном не в каком в базу не записывается что делать?
     
  22. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Зачем тебе пароль? У тебя есть хэш, его и храни.
     
  23. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @romach
    Лан покажу по другому, у меня хранится пароль, хеш и актив
    Ответьте хранить так безопасно?
    1.png
     
  24. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Объясните по поводу сессии что я храню.
    И по поводу второй строки, что я не так делаю?
    На счет первой строки я вроде как не как проверяю логин а вторая я проверяю пасс который в сессии.
     
  25. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    @romach
    Без этих переменных почему то не хочет авторизовываться
    PHP:
    1.  $_SESSION['login'] = $_POST['login'];
    2. $_SESSION['pass'] = $rows[0]['pass'];
    Когда я их комментирую не заходит на сайт, а когда ставлю их опять заходит, в чем такая ошибка может заключаться?