Began to learn PHP. Got a question. There is the following code:

if ($_GET['page']=="post") { // Приводим символы к хтмль и переводим в нижний регистр $login = htmlspecialchars($_POST['name']); $login = strtolower($login); $pass = htmlspecialchars($_POST['password']); if (empty($login)) {echo "Вы не заполнили поле логин";} if (strlen($login) > 33) {echo "Логин длинее 32 символов, не допустим";} if (empty($pass)) {echo "Поле пароль не может быть пустым";} if (strlen($pass) > 65) {echo "Пароль должен содержать не более 64 символов";} if (strlen($pass) < 5) {echo "Пароль должен содержать более 5 символов";} } 

I need to do the following. If all the IF checks are successful, execute this code:

 //Выполнить если все IF проверки прошли успешно $query = "INSERT INTO users (`user`, `password`) VALUES ('$login', '$pass')"; $result = mysqli_query($link, $query); // Проверяем записалось ли в БД if ($result==true) { echo "<br>Информация в базу добавлена успешно."; } else echo mysqli_error($link); //Выполнить если все IF проверки прошли успешно 
  • add a variable flag to the block of all checks, and if the condition in the check is not passed, assign to it, for example, false and add a check of this flag at the end and if it is not false then execute the code. - Dmitry Nail
  • $login = htmlspecialchars($_POST['name']) function is superfluous here. Skip the text through htmlspecialchars() should be only when outputting it to the browser. - AndryG

2 answers 2

The question is horror, did you even write this code yourself? There are a lot of shortcomings in terms of muscle and html. + Your error text will stick together at the conclusion :)

 if(isset($_GET['page'])){ if($_GET['page'] == 'post') { // Приводим символы к хтмль и переводим в нижний регистр $login = htmlspecialchars($_POST['name']); //WHAT? $login = strtolower($login); $pass = htmlspecialchars($_POST['password']); //WHAT?? $ok = true; if (empty($login)) { $ok = false; echo 'Вы не заполнили поле логин'; } if (strlen($login) > 33) { $ok = false; echo 'Логин длинее 32 символов, не допустим'; } if (empty($pass)) { $ok = false; echo 'Поле пароль не может быть пустым'; } if (strlen($pass) > 65) { $ok = false; echo 'Пароль должен содержать не более 64 символов'; } if (strlen($pass) < 5) { $ok = false; echo 'Пароль должен содержать более 5 символов'; } if($ok){ //Выполнить если все IF проверки прошли успешно $query = 'INSERT INTO users (`user`, `password`) VALUES ('.$login.', '.$pass.');'; //Вы слыхали о SQL ИНЬЕКЦИЯХ? $result = mysqli_query($link, $query); // Проверяем записалось ли в БД //Чтоза странность:) if ($result==true) { echo '<br></br>Информация в базу добавлена успешно.'; } else echo mysqli_error($link); //Выполнить если все IF проверки прошли успешно } } } //УЧИТЕСЬ PHP //ПОТОМ ДЕЛАЙТЕ РЕГИСТРАЦИИ // // 
  • Of course myself) I’m saying that I’m learning) - Igor
 if ($_GET['page']=="post") { $login = strtolower($_POST['name']); $pass = $_POST['password']; $err = []; if(empty($login)){ $err[] = "Вы не заполнили поле логин"; }elseif(strlen($login) > 32){ $err[] = "Логин длинее 32 символов, не допустим"; } if(empty($pass)){ $err[] = "Поле пароль не может быть пустым"; }elseif(strlen($pass) > 64){ $err[] = "Пароль должен содержать не более 64 символов"; }elseif(strlen($pass) < 6){ $err[] = "Пароль должен содержать более 5 символов"; } if(!empty($err)){ # здесь вывод ошибок return; } # здесь код, если нет ошибок } 
  • And watch for 32/33, 64/65, etc. - AndryG
  • If the password is 32 characters, the check> 32 will be correct in this case? - Igor
  • if (strlen($login) > 33) {echo "Логин длинее 32 символов, не допустим";} in your version, 33 characters is a valid login. and in the text write "no more than 32". Read your own words. "more than 32 is unacceptable" is 30,31,32) - AndryG