Здравствуйте, я начинающий программист по php. У меня возникла проблема в коде.Ввожу данные в строки (Фамилия,Имя,емаил,Телефон и Пароль), но почему-то не добавляется в phpmyadmin в базу данных. Все строки на месте, а пароль сбрасывается. Помогите, пожалуйста! PHP: <? $dbc = mysqli_connect('localhost','root','','registra'); require_once 'connection.php'; if(isset($_POST['submit'])) { $err = array(); //===========Фамилия===========// # Фамилия $Фамилия = $_POST['Фамилия']; # Проверка ввода фамилии if (empty($Фамилия)) { $err[]='<font color="red">Не введена фамилия!</font>'; } # Проверка длины фамилии if (!empty($Фамилия) && (strlen($Фамилия) < 3 || strlen($Фамилия) > 32)) { $err[]='<font color="red">Фамилия должна содержать от 3 до 32 символов!</font>'; } # Проверка символов в фамилии if(preg_match('|/[^a-z0-9\-\_\.]+/i|',$_POST['Фамилия'])){ $err[]='<font color="red">Ваша фамилия сожержит недопустимые символы!</font>'; } //===========Имя===========// # Имя $Имя = $_POST['Имя']; # Проверка ввода имени if (empty($Фамилия)) { $err[]='<font color="red">Не введено имя!</font>'; } # Проверка длины имени if (!empty($Имя) && (strlen($Имя) < 3 || strlen($Имя) > 32)) { $err[]='<font color="red">Имя должно содержать от 3 до 32 символов!</font>'; } # Проверка символов в имени if(preg_match('|/[^a-z0-9\-\_\.]+/i|',$_POST['Имя'])){ $err[]='<font color="red">Ваше имя сожержит недопустимые символы!</font>'; } //===========Email===========// # Email $Email = $_POST['Email']; # Проверка ввода Email if (empty($Email)) { $err[]='<font color="red">Не введен Email!</font>'; } # Проверка длины Email if (!empty($Email) && (strlen($Email) < 3 || strlen($Email) > 32)) { $err[]='<font color="red">Email должен содержать от 3 до 32 символов!</font>'; } # Проверка символов в Email if(preg_match("|/^[-0-9a-z_\.]+@[-0-9a-z^\.]+\.[a-z]{2,4}$/i|",$_POST['Email'])){ $err[]='<font color="red">Ваш Email сожержит недопустимые символы!</font>'; } //===========Телефон===========// # Телефон $Телефон = $_POST['Телефон']; # Проверка ввода телефон if (empty($Телефон)) { $err[]='<font color="red">Не введен телефон!</font>'; } # Проверка длины телефон if (!empty($Телефон) && (strlen($Телефон) < 16 || strlen($Телефон) > 32)) { $err[]='<font color="red">Телефон должен содержать от 16 до 32 символов!</font>'; } # Проверка символов в телефон if(preg_match("|([+][375][0-9]{9,14})/i|",$_POST['Email'])){ $err[]='<font color="red">Ваш Email сожержит недопустимые символы!</font>'; } //===========Пароль===========// # Пароль $Пароль = $_POST['Пароль']; # Проверка ввода пароля if (empty($Пароль)) { $err[]='<font color="red">Не введен пароль!</font>'; } # Проверка символов в пароле if(preg_match('|/[^a-z0-9\-\_\.]+/i|',$_POST['Пароль'])){ $err[]='<font color="red">Ваш пароль сожержит недопустимые символы!</font>'; } # Проверка длины пароля if (!empty($Пароль) && (strlen($Пароль) < 6 || strlen($Пароль) > 32)) { $err[]='<font color="red">Неверная длина пароля. Допустимо от 6 до 32 символов!</font>'; } # Повторный пароль $Пароль1 = $_POST['Пароль1']; # Проверка ввода повторного пароля if (empty($Пароль1)) { $err[]='<font color="red">Не введен повторный пароль!</font>'; } # Проверка совпадения паролей if (!empty($Пароль1) && $Пароль != $Пароль1){ $err[]='<font color="red">Пароли не совпадают!</font>'; } //=========== Проводим регистрацию ===========// if (!count($err)) { # Запрос на регистрацию $result = mysqli_query( $dbc," INSERTINTO `регистрация`(Фамилия,Имя,Email,Телефон,Пароль) VALUES( '".$_POST['Фамилия']."', '".$_POST['Имя']."', '".$_POST['Email']."', '".$_POST['Телефон']."', '".$_POST['Пароль']."', '".md5($Пароль)."', )"); # Выводим уведомление if ($result=='TRUE') { header("Location:success.php");// регистрация успешно создано!!! } } if(count($err)) { $_SESSION['msg']['reg-err'] = implode('<br />',$err); } } ?> ..... <?php if($_SESSION['msg']['reg-err']) { echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>'; unset($_SESSION['msg']['reg-err']); } if($_SESSION['msg']['reg-success']) { echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>'; unset($_SESSION['msg']['reg-success']); } echo' <form action="" method="post" > <input name="Фамилия" type="text" placeholder="Ваша фамилия..." required value="'.$_POST["Фамилия"].'"/> <br> <input name="Имя" type="text" placeholder="Ваше имя..." required value="'.$_POST["Имя"].'"/> <br> <input name="Email" type="email" placeholder="Ваш email..." required value="'.$_POST["Email"].'"/> <br> <input name="Телефон" type="tel" placeholder="Ваш телефон..." required value="'.$_POST["Телефон"].'"/> <br> <input name="Пароль" type="password" placeholder="Ваш пароль..." /> <br> <input name="Пароль1" type="password" placeholder="Введите пароль еще раз..." /> <br> <input type="submit" name="submit" value="Отправить"> </form> ' ?>
Никогда так не делайте. Единственное, где более/менее допустимы русские идентификаторы - разбор XML-ек типа от 1С через SimpleXML. Идентификаторы должны быть только латиницей, и только полноценными словами английского языка. Заодно будете много новых слов узнавать. У меня всегда рядом словарь открыт С таблицами тоже самое. Только полноценные английские слова. Если вы мне на собеседовании такой код покажите, я дальше даже слушать не стану. Читайте про подготовленные выражения, нельзя вот так подставлять данные в запрос. По проблеме - не очевидно. Выведете ваш запрос на экран, что получается. То есть вместо mysqli_query($dbc, напишите die(, гляньте, что вывелось на экран, и что не так с запросом, который составила ваша программа.
Кол-во полей не совпадает с количеством вставляемых значений, вы зачем то вставляете пароль а потом его хеш.. . Хеш только надо. Ну всё ужасно, начиная от кириллицы везде и заканчивая жуткими проверками которые реально не помогут, ну и sql интекции
Я тоже это начала замечать))) --- Добавлено --- Я решила убрать хеш и оставить обычный пароль. С помощью die выводит все строки как надо(т. е пишут всю информацию, которую я хочу).Дальше идет постоянно вот такое сообщение: Код немножко так: PHP: <? mysqli_connect('localhost','root','','registra'); require_once 'connection.php'; if(isset($_POST['submit'])) { $err = array(); //===========Фамилия===========// # Фамилия $Fa = $_POST['Familia']; # Проверка ввода фамилии if (empty($Fa)) { $err[]='<font color="red">Не введена фамилия!</font>'; } # Проверка длины фамилии if (!empty($Fa) && (strlen($Fa) < 3 || strlen($Fa) > 32)) { $err[]='<font color="red">Фамилия должна содержать от 3 до 32 символов!</font>'; } # Проверка символов в фамилии if(preg_match('|/[^a-z0-9\-\_\.]+/i|',$_POST['Familia'])){ $err[]='<font color="red">Ваша фамилия сожержит недопустимые символы!</font>'; } //===========Имя===========// # Имя $Im = $_POST['Ima']; # Проверка ввода имени if (empty($Im)) { $err[]='<font color="red">Не введено имя!</font>'; } # Проверка длины имени if (!empty($Im) && (strlen($Im) < 3 || strlen($Im) > 32)) { $err[]='<font color="red">Имя должно содержать от 3 до 32 символов!</font>'; } # Проверка символов в имени if(preg_match('|/[^a-z0-9\-\_\.]+/i|',$_POST['Ima'])){ $err[]='<font color="red">Ваше имя сожержит недопустимые символы!</font>'; } //===========Email===========// # Email $Email = $_POST['Email']; # Проверка ввода Email if (empty($Email)) { $err[]='<font color="red">Не введен Email!</font>'; } # Проверка длины Email if (!empty($Email) && (strlen($Email) < 3 || strlen($Email) > 32)) { $err[]='<font color="red">Email должен содержать от 3 до 32 символов!</font>'; } # Проверка символов в Email if(preg_match("|/^[-0-9a-z_\.]+@[-0-9a-z^\.]+\.[a-z]{2,4}$/i|",$_POST['Email'])){ $err[]='<font color="red">Ваш Email сожержит недопустимые символы!</font>'; } //===========Телефон===========// # Телефон $Tel = $_POST['Telefon']; # Проверка ввода телефон if (empty($Tel)) { $err[]='<font color="red">Не введен телефон!</font>'; } # Проверка длины телефон if (!empty($Tel) && (strlen($Tel) < 16 || strlen($Tel) > 32)) { $err[]='<font color="red">Телефон должен содержать от 16 до 32 символов!</font>'; } # Проверка символов в телефон if(preg_match("|([+][375][0-9]{9,14})/i|",$_POST['Telefon'])){ $err[]='<font color="red">Ваш Email сожержит недопустимые символы!</font>'; } //===========Пароль===========// # Пароль $Par= $_POST['Parol']; # Проверка ввода пароля if (empty($Par)) { $err[]='<font color="red">Не введен пароль!</font>'; } # Проверка символов в пароле if(preg_match('|/[^a-z0-9\-\_\.]+/i|',$_POST['Parol'])){ $err[]='<font color="red">Ваш пароль сожержит недопустимые символы!</font>'; } # Проверка длины пароля if (!empty($Par) && (strlen($Par) < 6 || strlen($Par) > 32)) { $err[]='<font color="red">Неверная длина пароля. Допустимо от 6 до 32 символов!</font>'; } # Повторный пароль $Par1 = $_POST['Parol1']; # Проверка ввода повторного пароля if (empty($Par1)) { $err[]='<font color="red">Не введен повторный пароль!</font>'; } # Проверка совпадения паролей if (!empty($Par1) && $Par != $Par1){ $err[]='<font color="red">Пароли не совпадают!</font>'; } //=========== Проводим регистрацию ===========// if (!count($err)) { # Запрос на регистрацию $result = mysqli_query(" INSERT INTO `registratsia`(Familia,Ima,Email,Telefon,Parol) VALUES( '".$_POST['Familia']."', '".$_POST['Ima']."', '".$_POST['Email']."', '".$_POST['Telefon']."', '".$_POST['Parol']."', )"); # Выводим уведомление if ($result=='TRUE') { header("Location:success.php");// регистрация успешно создано!!! } } if(count($err)) { $_SESSION['msg']['reg-err'] = implode('<br />',$err); } } ?> ..... <?php if($_SESSION['msg']['reg-err']) { echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>'; unset($_SESSION['msg']['reg-err']); } if($_SESSION['msg']['reg-success']) { echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>'; unset($_SESSION['msg']['reg-success']); } echo' <form action="" method="post" > <input name="Familia" type="text" placeholder="Ваша фамилия..." required value="'.$_POST["Familia"].'"/> <br> <input name="Ima" type="text" placeholder="Ваше имя..." required value="'.$_POST["Ima"].'"/> <br> <input name="Email" type="email" placeholder="Ваш email..." required value="'.$_POST["Email"].'"/> <br> <input name="Telefon" type="tel" placeholder="Ваш телефон..." required value="'.$_POST["Telefon"].'"/> <br> <input name="Parol" type="password" placeholder="Ваш пароль..." /> <br> <input name="Parol1" type="password" placeholder="Введите пароль еще раз..." /> <br> <input type="submit" name="submit" value="Отправить"> </form> ' ?> Если честно я уже весть интернет облазила, и толку почти не было( --- Добавлено --- Я попробую чуть по другому код написать, может как раз из за того, что здесь много не нужного
Попробуйте просто спокойно прочесть сообщение, перевести, прочесть документацию по данной функции... Не все ответы есть в интернете, это как книгами пользоваться - информацию найти можно, но надо потом уметь применить Никогда не будет истиной... Читайте азы - типы данных, что такое строки, что такое логическое
Это тоже плохо. Чуть лучше, чем кириллица, но плохо. Должно быть lastName, name, email, phone, password. Потом, потеряли первый аргумент, о чём вам и сообщил интерпретатор. Видимо, когда с die меняли обратно на mysqli_query/ --- Добавлено --- Покажите запрос, который вывелся, когда die делали. https://www.php.net/manual/ru/mysqli.prepare.php - и почитайте вот это. Нельзя то, что пришло от пользователя, сразу в запрос вставлять. Хранить пароль в открытом виде - сойдёт разве что для учебного задания. Пароль надо хешировать, причём не md5, а https://www.php.net/manual/ru/function.password-hash