Слушай, попробуй следующий пост написать не самостоятельно, а через google-переводчик. Есть вероятность, что он даст более правильный результат.
Я обидеть не хотел тебя. Просто эксперимента ради. Не пойми неправильно, но читать тебя несколько сложно.
Лови комменты по коду, для начала. Код (PHP): <? $connect=mysql_connect("localhost", "root", "")or die(mysql_error()); // mysql устарел, сразу учись на mysqli. // В будущем, не желательно использовать or die(mysql_error()) - не нужно ошибки, если будут, показывать пользователю mysql_select_db('mysite'); $u_login = $_POST['login']; $u_password = $_POST['password']; // Ты копируешь значения переменных из $_POST, но больше ничего не делаешь. // Почитай про проверку данных перед вставкой в БД, мало просто скопировать их в другие переменные. $query = mysql_query("SELECT * FROM `users` WHERE `password` = md5('$u_password')") or die(mysql_error()); //Делать выборку только по паролю - не правильно. Одинаковых паролей может быть много. //Делать просто хэширование пароля - мало. Нужно добавлять к нему так называемую "соль". Про нее гугли отдельно. //Окей, ты сделал выборку, но...она никуда не идет. Так и было задумано? if(isset($_POST['auth'])){ $u_login = $_POST['login']; $u_password = $_POST['password']; //Ты и так уже переприсвоил эти переменные, зачем еще раз это делать? :) //И да, все равно потом ты их не используешь. if(isset($_POST['login']) and isset($_POST['password'])){ echo "Oki !"; //Наличия данных в POST не должно быть достаточно, чтобы подтвердить вход. } else{ echo "ohh sorry error"; } } //напиши в коде, внизу var_dump($_POST); И напиши, что показано будет в браузере, после того, как ты //введешь логин и пароль. Потому и советую попробовать через гугл. Он корректнее переведет. И тебе будет полезно, для качества.
после var_dump написанно пустой массив вот так array(0) { } Добавлено спустя 1 минуту 47 секунд: не у меня в коде <?php ?> написанно
У него изначально их вообще не было в посте, я добавил для себя, чтобы блокнотик синтаксис подсветил, расставлять отступы и комментить в форме на форуме не удобно А так да, я тоже против шорттегов. Покажи код формы, раз так. Добавлено спустя 24 секунды: Да, тут претензий нет, все ок. Так и пиши всегда.
ребят вот весь документ <?php $connect=mysql_connect("localhost", "root", "")or die(mysql_error()); mysql_select_db('mysite'); $u_login = $_POST['login']; $u_password = $_POST['password']; $query = mysql_query("SELECT * FROM `users` WHERE `password` = '$u_password'") or die(mysql_error()); var_dump ($_POST); if(isset($_POST['auth'])){ $u_password = md5('password'); if(isset($_POST['login']) and isset($_POST['password'])){ echo "Oki !"; } else{ echo "ohh sorry error"; } } ?> <form method="post" action="auth.php"> <input type="text" name="u_login" placeholder=" | Логин" required/><br> <input type="password" name="u_password" placeholder=" | Пароль" required/><br> <input type="submit" name="auth" value="Войти"/> <a href="reg.php">Регистрация</a> </form> Добавлено спустя 1 минуту 10 секунд: не знаю почему но мне кажется что надо сессию написать Добавлено спустя 4 секунды: не знаю почему но мне кажется что надо сессию написать Добавлено спустя 1 минуту 5 секунд: <form method="post" action="auth.php"> auth.php это тот же документ Добавлено спустя 4 секунды: <form method="post" action="auth.php"> auth.php это тот же документ
форма даже сама не правильно оформлена... вот отсюда и косяки тогда поля в форме должны быть такими <input type="text" name="login" placeholder=" | Логин" required/><br> <input type="password" name="password" placeholder=" | Пароль" required/><br>
потому что в $_POST ты запрашиваешь $u_login = $_POST['login']; $u_password = $_POST['password']; а их соответственно нет, потому что они не приходят ))
ну неет по имени login, password уже в регистрации написанно разве можно их исползьовать при авторизации тоже ? Добавлено спустя 1 минуту 22 секунды: ты имееш виду что надо так $u_login = $_POST['u_login']; $u_password = $_POST['u_password']; ? Добавлено спустя 4 секунды: ты имееш виду что надо так $u_login = $_POST['u_login']; $u_password = $_POST['u_password']; ?
одну и туже переменную можно - где угодно и сколько угодно использовать... что бы не было путаницы - необходимо правильно реализовать логику )) Если не менять поля твоей формы - то получается что так )
ладно по понятему у меня есть две документи reg.php, auth.php код auth.php уже отправил у меня в базе таблици такие id, username, login, password, active в регистрации в форме html имя инпутов написанно login password а в авторизации как уже я знаю не надо использовать снова name="login" name="password" а место этого я написал u_login, u_password Добавлено спустя 4 минуты 19 секунд: когда я напишу логин и пароль которие есть в базе и нажму войти вот создается такой массив array(3) { ["u_login"]=> string(7) "k.karen" ["u_password"]=> string(9) "karenchik" ["auth"]=> string(10) "Войти" } ohh sorry error
в html формах можно использовать одинаковые имена инпутов, всё равно твой обработчик будет выдергивать нужные ему поля, то есть в твоем случае reg.php и в auth.php не страшно использовать )) Добавлено спустя 4 минуты 1 секунду: Код (Text): array(3) { ["u_login"]=> string(7) "k.karen" ["u_password"]=> string(9) "karenchik" ["auth"]=> string(10) "Войти" } такой массив возвращается потому что у тебя в html форме есть поля <input type="text" name="u_login" placeholder=" | Логин" required/><br> <input type="password" name="u_password" placeholder=" | Пароль" required/><br>
вот изменил на это <?php $connect=mysql_connect("localhost", "root", "")or die(mysql_error()); mysql_select_db('mysite'); $login = $_POST['login']; $password = $_POST['password']; $query = mysql_query("SELECT * FROM `users` WHERE `login` = '$login'") or die(mysql_error()); var_dump ($_POST); if(isset($_POST['auth'])){ $u_password = md5('password'); if(isset($_POST['login']) and isset($_POST['password'])){ echo "Oki !"; } else{ echo "ohh sorry error"; } } ?> <form method="post" action="auth.php"> <input type="text" name="login" placeholder=" | Логин" required/><br> <input type="password" name="password" placeholder=" | Пароль" required/><br> <input type="submit" name="auth" value="Войти"/> <a href="reg.php">Регистрация</a> </form> и получилось....а если бы оба коди написать в одном документе уже в этом надо изменить имена инпутов или снова нет ?
понятно а тут $login = $_POST['login']; $password = $_POST['password']; я правильно понял что переманная например логин ровно логин бази ?