Member 14720048 Ответов: 3

Может ли кто-нибудь помочь мне, пожалуйста, потому что я не знаю, где ошибка !


Notice: Undefined index: First Name in C:\xampp\htdocs\egx\code2.php on line 3

Notice: Undefined index: Second Name in C:\xampp\htdocs\egx\code2.php on line 4

Notice: Undefined index: Email in C:\xampp\htdocs\egx\code2.php on line 5

Notice: Undefined index: password in C:\xampp\htdocs\egx\code2.php on line 6
Error:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Name,Second Name,Email,Password) VALUES('','','','')' at line 1


Что я уже пробовал:

<?php
require_once('connection.php');
$n1=$_POST['First Name'];
$n2=$_POST['Second Name'];
$e=$_POST['Email'];
$p=$_POST['password'];
$ins="INSERT INTO signup(First Name,Second Name,Email,Password)
VALUES('$n1','$n2','$e','$p')";
if(!mysqli_query($conn,$ins)) {die("Error:" . mysqli_error($conn));}
else echo "your information was inserted successfully";
?>

0x01AA

1.) из того, что я помню, пробелы в значении ключа будут автоматически заменены подчеркиванием. Следовательно $n1=$_POST['First Name']; становится $n1=$_POST['First_Name']; Но это не объясняет ошибок в строках 5 и 6 . :(

2.) Ваш код опасен. Используйте параметризованные запросы вместо построения SQL непосредственно с помощью пользовательского ввода

Richard MacCutchan

Проблема, как отмечается в строках 3,4,5 и 6, заключается в том, что эти имена индексов никогда не были определены на веб-странице. Эти сообщения не относятся к ошибке в SQL, то есть к последнему сообщению.

0x01AA

Да, я знаю об этом. Но я думаю, что когда это будет решено, пространство в некоторых ключевых значениях будет следующей проблемой?

Richard MacCutchan

Вы правы, но обратите внимание, что @Email' и 'password' также не определены.

Richard MacCutchan

В коде, который вы показали выше, чего-то не хватает. Где находятся предметы, упомянутые в $_POST массив?

Richard Deeming

Исправьте уязвимости SQL-инъекций в вашем коде:
PHP: SQL-инъекция - руководство пользователя[^]

Затем исправьте хранение паролей, используя встроенные функции PHP:
PHP: password_hash[^]
РНР: функцию password_verify[^]

3 Ответов

Рейтинг:
13

ashid das11

$n1=$_POST['First_Name'];
$Н2=$_POST, где['Second_Name'];
Регистрация

Цитата:
$_ПОСТ
Массив


Рейтинг:
0

Wendelius

Хотя этот вопрос был связан с ошибкой во время выполнения, важно отметить, что текущий код имеет серьезную проблему, поскольку он хранит пароли в виде обычного текста в базе данных.

Правильный способ обработки паролей-это хэширование их и сохранение результата в базе данных. Таким образом, пароли не будут скомпрометированы, даже если произойдет утечка данных.

Например, взгляните на Хранение паролей: как это сделать.[^]


Richard Deeming

И не только это, но и то, что он уязвим для SQL-инъекция[^] тоже.

Похоже, что массивный штраф GDPR ждет своего часа. :)

Wendelius

Да, и подумайте обо всех беднягах, которые потеряли свой единственный пароль :~

Рейтинг:
0

Patrice T

Цитата:
Я не знаю, где ошибка !

Вам нужно научиться читать сообщения об ошибках!
Вам говорят где
Notice: Undefined index: First Name in C:\xampp\htdocs\egx\code2.php on line 3

Вам говорят почему
Notice: Undefined index: First Name in C:\xampp\htdocs\egx\code2.php on line 3

Вам говорят, что 'First Name' не существует в массиве $_POST
$n1=$_POST['First Name'];


Чтобы увидеть, что происходит, когда вы rin свой код, единственное решение-это отладчик.
-----
Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

phpdbg | php отладчик[^]
Методы отладки для PHP-программистов[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.