Satish_zende Ответов: 2

Как я удаленно замечаю ошибку: неопределенный индекс: uname in C:\xampp\htdocs\phplearn\registration1.php на линии 7


Обратите внимание: неопределенный индекс: uname in C:\xampp\htdocs\phplearn\registration1.php на линии 7

Краткое описание электронной почты в C:\xampp\htdocs\phplearn\registration1.php на линии 8

Обратите внимание: неопределенный индекс: pass in C:\xampp\htdocs\phplearn\registration1.php на линии 9

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

  1  <?php
  2  include('connection.php');
  3  //insert code
  4  
  5  if(isset($_REQUEST['add']))
  6  {
  7  	$u =$_REQUEST['uname'];
  8  	$e =$_REQUEST['email'];
  9  	$p =$_REQUEST['pass'];
 10  	$g =$_REQUEST['gender'];
 11  	$h =implode(",",$_REQUEST['chk']);
 12  	$c =$_REQUEST['city'];
 13  	$ad =$_REQUEST['address'];
 14  	$ins = "INSERT INTO tbl_user(uname,email,pass,gender,hobby,city,address) values ('$u','$e','$p','$g','$h','$c','$ad')";
 15  	$ex =$con->query($ins);
 16  }
 17  ?>

0x01AA

выглядит как $_REQUEST['uname'], $_REQUEST['email']and $_REQUEST['pass'] не определены. Поэтому вам нужно выяснить, почему.

Richard Deeming

В дополнение к уязвимости SQL-инъекции в вашем коде вы храните пароли в виде обычного текста. Не делай этого!

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

0x01AA

+5 даже это не считается

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Обратите внимание: неопределенный индекс: uname in C:\xampp\htdocs\phplearn\registration1.php на линии 7
Краткое описание электронной почты в C:\xampp\htdocs\phplearn\registration1.php на линии 8
Обратите внимание: неопределенный индекс: pass in C:\xampp\htdocs\phplearn\registration1.php на линии 9

Это означает, что эти индексы не существуют в переменной $_REQUEST- У нас нет способа узнать причину. Только вы можете увидеть реальное содержание $_REQUEST с помощью отладчик.
$ins = "INSERT INTO tbl_user(uname,email,pass,gender,hobby,city,address) values ('$u','$e','$p','$g','$h','$c','$ad')";

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Рейтинг:
2

Sandeep Mewara

Вам нужно понять, что означает эта ошибка, чтобы решить ее. Здесь: Обратите внимание: неопределенная ошибка индекса в PHP[^]

Цитата:
Эта ошибка означает, что в вашем коде есть переменная или константа, которой не присвоено никакого значения. Но вы можете попытаться использовать значения, полученные через форму пользователя в вашем PHP-коде.

Этой ошибки можно избежать с помощью функции isset (). Эта функция проверит, присвоено ли индексным переменным значение или нет, прежде чем использовать их.


Вот, проверьте на наличие uname, email, pass для isset перед его использованием. Похоже, ваша идущая вперед логика тоже зависит от этого, так что все должно быть скорректировано.


ОБНОВЛЕНИЕ:
Некоторые детали по коду:
PHP $_REQUEST[^]
Цитата:
PHP $_REQUEST-это супер глобальная переменная PHP, которая используется для сбора данных после отправки HTML-формы.


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