Пытаюсь сделать не сложную авторизацию. Не получается, локейшен не перекидывает в админ панель. Код (Text): $connect = mysql_connect('localhost', 'cdd', 'rrrrr') or die(); mysql_select_db('cdd'); if($_POST['submit2']){ $admin == $_POST['user']; $pass == md5($_POST['pass']); $query = mysql_query("SELECT * FROM users WHERE login = '$admin'"); $user_data = mysql_fetch_array($query); if($user_data['pass'] == $pass){ session_start(); $_SESSION['admin']; header("Location: admin/admin.php"); } } Почему не перебрасывает в залогиненую админку? Что я сделал не так? Спасибо.
debug http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html https://php.ru/forum/threads/howto-...i-po-shagam-i-s-kartinkami.58974/#post-474550
Заголовок может не выполнится, если был уже какой-либо вывод, или если страница в кодировке UTF-8, а не в UTF-8(Без BOM). Или быть может, у тебя ошибки в коде. Я не понимаю смысл $_SESSION['admin']; строки
а поконкретнее в тему что нибудь можно --- Добавлено --- utf-8 без бом .тот кусок кода , он с самого начала страницы. ничего не выводится перед ним.
utf-8 без бом .тот кусок кода Рудимент. Я сам не до конца понимал зачем это вставил... удалю.. а дальше?
Гы... Это не рудимент. Это вы не понимаете, а вообще подобная строчка должна быть, только выглядеть, например, так: PHP: $_SESSION['admin'] = true; Называется, скопипастили откуда-то, а чего такое - не разобрались. А дальше, отладка по шагам, вам уже описали. Проверить, попадает ли в $userData то, что должно. Посмотреть, что за код в admin.php. В приведённом фрагменте очевидных ошибок, кроме этой с $_SESSION нету. Придраться можно к устаревшему расширению, отсутствию экранирования. Дальше, можно посмотреть, действительно ли в браузер приходит статус 302 при открытии этой страницы. Можно сделать в инструментах разработчика => сеть. Если приходит не 302, смотреть, есть ли вывод до header, есть ли в логах Can't modify header information. Короче, делать пациенту вскрытие.
изначально было так: PHP: $_SESSION['admin'] = $admin; а по всем остальным пунктам, учитывя мои знания, могу задать вопрос "шо?" ТО есть, не так много я понял... но любуюсь, приятно когла пишет умный человек... Из того что я умею - я проверил, что без хедера логинится а с хедером нет...
Есть два типа людей - те, у кого вечная беда с хедерами и проверками, выводилось ли что-нибудь до них или нет, и те, кто знают, что такое output buffer. Если кратко - выплевывай данные не напрямую в поток "как есть", а в буфер вывода. О сам разберется, где там хедеры, где контент, и в каком порядке их отдавать. Как это сделать написано в документации, ссылка выше. Лайвхак - буферов может быть много, они могут быть вложенными друг в друга и позволяют творить удивительные вещи с потоком вывода.
Надеюсь когда нибудь я познаю сей манускрипт, но пока что смысл его мне не доступен. Интересно, что если я делаю тоже самое но примитивнее, вот так: PHP: $connect = mysql_connect('localhost', 'cddosvi15890', '5c8f9acc59') or die(); mysql_select_db('cddosvi15890'); session_start(); $admin = 'dosvid'; $pass = '6d6bc76b5b32c11c7a609c2b9e977129'; if($_POST['submit2']){ if($admin == $_POST['user'] AND $pass == md5($_POST['pass'])){ $_SESSION['admin'] = $admin; header("Location: admin/admin.php"); exit; }else echo'<h3> Логин или пароль не верны </h3>'; } всё нормально логинится. То есть , если логин и пароль вписаны прям в код. Но хочется , чтоб как у людей, чтоб из базы данных.
@viktor72 я давал тебе ссылки на отладку, тебе просто нужно перепроверить каждый шаг программы, пару часов изучать и понять как её делать, потом ещё нудно перепроверять свою программу. Тебе всё понятно как это сделать?
Конечно я читал высланную информацию, но, блин, там так много не понятных для меня слов... которые бы хотелось понимать. Прочитаю ещё раз, может со вторго раза что то понятно будет. Спасибо.
Дальше нет смысла двигаться, пока не разберёшься в отладке, потому что ты не сможешь определить проблему. Ты по какой книге изучаешь PHP?
Признаюсь, ни по каким... смотрел видео на ютубе... отталкиваясь от интересуемого . То что я хотел бы сделать на сайте, ту информацию и ищу... слегка продвинулся. Но чем дальше , тем информация сложнее.
@viktor72 могу посоветовать курсы Игоря Борисова "Специалист". Три уровня. Вполне хорошо объясняет и проходится по всем азам, если конечно тебя не выбесит его голос
Потому что первым делом, было бы быстрее понять основы, там в книгах пару тысяч страниц наберётся. Понять и попрактиковаться на пару недель, зато потом сложностей почти не будет. Как минимум ты будешь задавать правильные вопросы на форуме и наши ответы тебе помогут.
@viktor72, а ты не спеши. Если тебе нужно срочно сайт, то закажи профи, если тебе нужно научиться программировать, то будь усидчив и терпелив. Прочитал, но не понял, что прочитал? Перечитай снова, просмотри, что именно непонятно. Почему непонятно. Погугли непонятные моменты на предмет более простого описания. Если все равно ничерта не понятно, то, скорее всего, ты забегаешь вперед, не зная основ. Значит надо немного назад вернуться, подтянуть базу. Главное - не спешить.
Вот посмотрите: http://gency.ru/authorization (правда, это больше для обычного ЛК пользователя, чем для админки, но, думаю, будет полезно).
Код (Text): $query = mysql_query("SELECT * FROM users WHERE login = '".$admin."'); Да у него не логинится потому, что запрос ищет в базе пользователя "$admin" его там скорее всего нет . В PHP есть оператор конкатенации "." (точка). Т.е. Код (Text): $query = mysql_query("SELECT * FROM users WHERE login = '".$admin."'"); [/QUOTE]
Мимо. Весь запрос заключен в двойные кавычки. Это PHP а не JS, тут двойные и одинарные кавычки отличаются не только номером в кодировке, но и тем, что у двойных кавычек расширенная логика обработки содержимого. И переменные, написанные как есть, без конкатенаторов, внутри строк в двойных кавычках, автоматом меняются на их содержимое. Но, тем не менее, писать так не стоит, имхо. Читаемость падает в разы. Лучше бить строку конкатенаторами.
Дайте ссылку, буду благодарен. --- Добавлено --- Полностью согласен, без базового знания даже не возможно определить что ты хочешь... Когда только начал, так и было..я даже не могу описать что я хочу --- Добавлено --- Разработка мне очень нраивтся и хочется изучить... но это не основная деятельность, поэтому к сожалению не хватает времени... а жаль. Я для своей работы разрабатываю сайт.. постопенно развиваю его --- Добавлено --- Спасибо. Посмотрю, может подойдет. я даже не знаю, чем отличется админка от личного кабинета.