1. Нигде не инициализирована переменная email. 2. Нефиг отправлять заголовки после вывода чего-либо на экран, не должно быть даже пробела перед <?php, не должно быть BOMa куда уж подробней то.
@acho Ах ну да, проверю, файлы, ну вряд ли у меня пробелы есть, и кодировка utf8 стоит на всех файлах. А вот на счет заголовки я не понял. Можно хотя бы пример показать?
PHP: session_start (); $_SESSION['porno'] = 'porno'; header ('Location: //www.porno.net') Выдаст ошибку что заголовки уже отправлены.
Чёт тупонул. Ну что-то в этом роде. Хотя я после эко создаю сессию, создаю кукисы и делаю хедер локейшн, и у меня ошибка не падает...
@SamyRed Ну и пример, можно было бы и лучше что то показать. Можно хотя с формой полностью и куском кода показать. нет показал как он запустил сессию что то ввел в сессию, и header() ввел ... Пример прям для новичка. Покажите пожалуйста, по лучше пример.
@_ne_scaju_, держи PHP: session_start (); $_SESSION['porno'] = 'porno'; echo "пример получше"; header ('Location: //www.porno.net') --- Добавлено --- @SamyRed, буфер
@SamyRed, у тебя скорее всего инфа идёт сначала в буфер, а не выбрасывается сразу. Где-то можно так настроить php. И только по заполнению буфера инфа выбрасывается. Т.е. вывод всё равно происходит после отправки заголовков. Либо, если используешь единую точку входа, в ней может быть объявлен ob_start(), и вся генерируемая страница в нём. Либо ты тупо прикрыл ошибки =D В любом случае отправки заголовков после вывода невозможен. Это не php такой плохой так решил и "где-то может и прокатит". Это явление происходит от принципа работы протокола HTTP
Я на виртуальном хостенге. У меня нет доступа к php.ini. А тестирую я на левой, спеиально созданной странице. Там точно нет ob_start ()))
@SamyRed @acho Так народ а обязательно ли указывать на странице ob_start() просто когда я его указываю у меня ошибка исчезает) И сразу второй вопрос, например регаю юзера, потом делаю вход в систему ну или на сайт при этом пароль 12345 в коде добавляю вывод сессии print_r($_SESSION); и мне этот вывод сессии выдает именно пароль в зашифрованном виде, правильно ли это? Или это глюк? Мне кажется он должен вывести был именно, 12345 а не зашифрованный пароль.
@SamyRed Ахаха спасибо, а что на счет второго вопроса? Делаю вход на сайт пароль 12345 на этой странице делаю проверку сессии print_r($_SESSION); мне выводят так: [login] => userlogin [pass] => здесь цифры зашифрованный пароль А случайно не должно быть так: [login] => admin [pass] => userlogin Ответьте мне пожалуйста.
да какой правильно. Извините, у меня не хватает терпения. Нихера не правильно. Правильно оно будет тогда, когда разработчик будет понимать что и для чего, как оно работает. Зачем ob_start? да хрен знает. Ошибка то пропала. А что дальше делать? да хрен его знает. Пойду на форуме ещё один тупой вопрос задам. Почему пароль зашифрованный? Да глюк. Мне же пофиг, как оно работает и откуда берётся. Это ведь глюк. В общем не будешь ты программистом. Никогда. Забудь про это.
Начну с другого, пароль в сессии хранить не надо, потому что если ты в сессию логин записал только при случаи что пароль пользователь ввёл правильно, то ты можешь сессии доверять если там есть только логин пользователя, потому что есть только один способ туда прописать логин, это при входе вписать правильный логин и пароль На вопрос как должно быть, это не соответствие того что ты себе придумал и работы кода, тут нужно просто вникнуть в свой код, по шагам с ним пройтись и посмотреть когда и как всё формируется и записывается
@acho Тебе спасибо, что сказал, что не стать мне программистом))) Но не тебе решать, кем мне не стать. Да и учусь я на программиста))) Только мы не изучаем php mysql js css это я сам начал учить. @denis01 Теперь тебе отвечу) Пароль я в сессии не храню, я просто хочу его проверить, что выводится когда какой то пользователь ввел логин и пароль. Вот сам код приложу, и укажите мне где я сессию для пароля храню. --- Добавлено --- @denis01 @acho @SamyRed Укажите где я ошибся в скрипте, и сохраняю пароль в сессии, спасибо.
PHP: $_SESSION['login'] = $_POST['login']; $_SESSION['pass'] = $rows[0]['pass']; ещё PHP: md5(md5($_POST['pass']).$rows[0]['salt']) не надо так делать, вот читай https://habrahabr.ru/post/194972/
@denis01 Так у меня уже созданы 2 таблицы в базе для соли и хеша, а что теперь как исправлять, для начала? Вот у меня функция такая для соли PHP: function salt() { $salt = substr(md5(uniqid()), -8); return $salt; } Можете на этом примере показать другой способ хранения пароля, который вы предложили))) Спасибо.
Тебе целую статью дали, где подробно разжевывается для тех, кому документация слишком сложна. * забил себя фэйспалмом от прочтения топика *
@romach Я прочитал, и не фига не понял, как и в каких случаях его применять. Ну если я понял мою функцию можно изменить на: PHP: function salt() { if (password_needs_rehash($hash, PASSWORD_DEFAULT, ['cost' => 12])) { $hash = password_hash($password, PASSWORD_DEFAULT, ['cost' => 12]); } echo $hash; }
$hash = password_hash($passwod, PASSWORD_DEFAULT); С такой хеш создается, а пароль нет не в зашифрованном не в каком в базу не записывается что делать?
Объясните по поводу сессии что я храню. И по поводу второй строки, что я не так делаю? На счет первой строки я вроде как не как проверяю логин а вторая я проверяю пасс который в сессии.
@denis01 @romach Без этих переменных почему то не хочет авторизовываться PHP: $_SESSION['login'] = $_POST['login']; $_SESSION['pass'] = $rows[0]['pass']; Когда я их комментирую не заходит на сайт, а когда ставлю их опять заходит, в чем такая ошибка может заключаться?