@Rasul_El-Sheikh

Почему не работает форма входа?

Нужна помощь камрады. Не осуществляется вход. Вот логин.рнр с формой входа
<?php
  session_start();
  require_once('includes/header.php');
  require_once('db.php');
  
  if($_GET['act'] == 'exit'){
	unset($_SESSION['login']);
	}
?>
<div class="login_form">
      <h3>Чтобы заказать поездку войдите или <a href="regist.php">зарегистрируйтесь</a></h3>
      <form action="login_form.php" method="POST">
      <p>Мобильный номер:</p>
      <input type="text" name="login">
      <p>Пароль:</p>
      <input type="text" name="password">
        <p><input type="image" src="images/login_button.png" name="submit"></p>
    </form>
</div>
<?require_once('includes/footer.php');?>

Вот логин_форм.рнр с обработчиком формы входа -
<?php
  session_start();
  require_once('functions.php');
  require_once('db.php');

  if(isset($_POST['submit'])){ 
    $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){
      $_SESSION['login'] = $login;
      redirect_to('order_pas.php');
      exit;
    } elseif(mysqli_num_rows($query) == 0){
      echo "Неверный логин или пароль";
    }
  }
?>

После заполнения полей формы и отправки ее, переадресует на логин_форм.рнр, где белая, пустая страница: не происходит редиректа и не выводится ехо "неверные логин или пароль", что по задумке должно было быть. Надежда на вас.
  • Вопрос задан
  • 393 просмотра
Решения вопроса 1
zualex
@zualex
Senior Software Engineer
Все дело в том что не существует $_POST['submit'], так как кнопка имеет type="image", то передается не "submit", а "submit_x" и "submit_y".
Чтобы удостоверится попробуй изменить login_form.php на вот этот код:
<?php
  session_start();
  require_once('functions.php');
  require_once('db.php');

  print '<pre>';
  print_r($_POST);
  print '</pre>';

  if(isset($_POST['submit'])){ 
    $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){
      $_SESSION['login'] = $login;
      redirect_to('order_pas.php');
      exit;
    } elseif(mysqli_num_rows($query) == 0){
      echo "Неверный логин или пароль";
    }
  }
?>

После отправки формы будет следующая информация:
Array
(
    [login] => login
    [password] => pass
    [submit_x] => 31
    [submit_y] => 5
)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы