Задать вопрос
@l1ku4

Авторизация PHP. Как исправить Warning: Undefined array key «login» in?

Сделал регистрацию / авторизацию на сайте по видео из интернета. Регистрация проходит успешно, в бд все приходит, вопросов нет. А вот при авторизации, выдает ошибку:
Warning: Undefined array key "login" in D:\xampp\htdocs\login.php on line 4
Warning: Undefined array key "pass" in D:\xampp\htdocs\login.php on line 5
Помогите, пожалуйста.

Вот полный код:
<?php
require_once('db.php');

$login = $_POST['login'];
$pass = $_POST['pass'];

if(empty($login) || empty($pass))
{
echo "Ошибка: заполните все поля";

}else {
$sql = "SELECT * FROM `user` WHERE login = '$login' AND pass='$pass'";
$result=$conn->query($sql);

if ($result->num_rows > 0){
while($row=$result->fetch_assoc()){
echo "Успешная авторизация!". $row ['login'];
}
} else {
echo "Ошибка: пользователь не существует.";
}
}
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Данная ошибка может возникать в двух случаях:
- если вы обращаетесь к этому скрипту напрямую, а не как к обработчику формы
- если в форме были ошибки, и она тупо не передаёт поля login и pass методом POST.

Чтобы исправить первый вариант, и вообще для порядка, надо добавить проверку на метод POST.
Чтобы получить помощь для второго варианта, надо догадаться добавить в свой вопрос код формы.

В целом же, эта авторизация будет бессмысленной, даже когда заработает. Поскольку любой придурок легко авторизуется без пароля, тупо через SQL инъекцию. Очердной пример того, что учить программирование "по видео из интернета" - это пустая трата времени
Ответ написан
Комментировать
@artem-dainov
Php, java, js. Boot spring, jquery, git
У вас походу php 8.

Ошибка говорит, в $_POST login не существует. вы пытаетесь обратиться к ключам, которых нет.
1. Проверяйте, отправляется ли форма.
2. Если форма отправлена, попробуйте выводить $_POST['login'] в echo.
3. Если в echo будет результат, тогда вам нужно подавить ошибку, но это не самый лучший вариант.
4. Нужно убедиться в том, что отправляется действительно форма, а не json данные.
5. Если вы отправляете форму через js, нужно проверить, не конвертируете ли вы её в json.
6. Если вы отправляете форму как json данные, тогда $_POST будет всегда пуст. Вам нужно будет обратиться к php://input.

Помните, подавление ошибок не всегда выход из ситуации.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы