@Rasul_El-Sheikh

Почему не отправляется сабмит?

почему не отправляется сабмит?
<?php
  require_once('db.php');
  
  
  if(!isset($_POST['submit'])){
    echo "Fill the form";
  } else{
    $login = $_POST['login'];
    $password = $_POST['password'];
    
    $check_user = "SELECT * FROM users WHERE login = '{$login}' AND password = '{$password}'";
    $query = mysqli_query($db_connect, $check_user);
    
    if(mysqli_num_rows($query) == 1){
      header("Location: order_pas.php");
      $users = mysqli_fetch_array($query);
      if($password != $users['password']){
        echo "Login or password failed";
      }
    } elseif(mysqli_num_rows($query) == 0){
      header("Location: index.php");
    }
  }
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <header>
    <title></title>
  </header>
  <body>
    <form action="" method="POST">
      <p>Mobile number:</p>
      <input type="text" name="login">
      <p>Password:</p>
      <input type="text" name="password">
        <p><input type="submit" name="submit"></p>
    </form>
  </body>
  <footer></footer>
</html>
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ответы на вопрос 3
Feaxer
@Feaxer
Программист-фрилансер
  1. <header> исправить на <head>
  2. <footer></footer> перенести над </body>(да и вообще пустой footer не нужен)
  3. doctype поменять на <!DOCTYPE html>
  4. echo "Fill the form"; - не корректно, т.к. выведет перед doctype'ом
  5. данные напрямую идут в базу данных, нужна обработка, иначе SQL инъекция
  6. if($password != $users['password']) - эта проверка не нужна, т.к. всегда будет верна, вместо этого "login or password failed" нужно выводить, когда не одной записи не нашлось, т.е. mysqli_num_rows($query) == 0
  7. action у формы желательно явно указать
  8. Вместо тега p использовать тег label
Ответ написан
wladyspb
@wladyspb
Программист
Попробуйте заменить
<p><input type="submit" name="submit"></p>
на
<p><button type="submit">submit button</button></p>


а выше поменять проверку
if(!isset($_POST['submit'])){
на
if($_SERVER['REQUEST_METHOD'] != 'POST'){
Ответ написан
Комментировать
@SergeyZelensky-Rostov
лучше проверять не сабмит, а скрытое поле hidden в качестве идентификатора формы
Ответ написан
Ваш ответ на вопрос

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

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