Как перенаправить и сообщить пользователю, если его пароль неверен? - PullRequest
1 голос
/ 25 марта 2011

Предполагается, что у меня есть такой блок кода на странице входа в систему:

<form action="login_action.php" method="post">
    <div id="account">
        <div class="form-label">Username:</div>
        <div class="form-input"><input name="username" type="text" /></div>
        <div class="form-label">Password:</div>
        <div class="form-input"><input name="password" type="password" /></div>
        <div class="form-submit"><input type="submit" value="Submit" /></div>
    </div>
</form>

Файл login_action запрашивает базу данных с заданными учетными данными и, если они верны, выполняет $_SESSION['username'] = $username;

Это отлично работает.Однако, если пользователь вводит неверные учетные данные, в идеале страница не будет перенаправлена ​​и вместо этого будет отображаться сообщение об ошибке на странице в строке перед именем пользователя.Это та часть, которую я запутался в том, как решать.

Нужно ли мне вместо этого захватывать нажатие кнопки отправки с помощью JQuery и публиковать учетные данные пользователя в файле php с помощью AJAX?Это тогда избавится от формы на странице входа в систему.Полагаю, тогда я мог бы вернуть строку, указывающую, действительны ли учетные данные, и если нет, то он добавит сообщение в div учетной записи, что учетные данные были неправильными.

Это будет стандартный подход к этому видупроблемы?С тех пор, как я недавно открыл AJAX, я использую его практически для всего, и я не уверен, что в этом случае это идеальное решение.Переопределение поведения кнопки «Отправить» по умолчанию и удаление формы кажется мне немного странным, но я не уверен.Это так, как бы решить эту проблему?

Ответы [ 5 ]

2 голосов
/ 25 марта 2011

Обычно я использую оператор условия и перенаправляю обратно в форму, если пароль неверный. Предположим, что ваша страница формы form.php, перенаправление может быть form.php? Status = пароль. Затем вы можете отобразить сообщение об ошибке в вашей форме

if ($_GET['status'] == 'password')
   echo "Incorrect Password";
0 голосов
/ 15 ноября 2012

// `

if(isset($_GET['msg']))
{  
 $message=$_GET['msg'];
}

?>` add following to ur login form  

// ---------------------- // добавляем этот код для отображения сообщения об ошибке, если пароль не совпадает

    <p id="m2">
                                <?php
                               if(isset($_GET['msg']))
{  
 echo $message;
}else{
                                   echo "enter password";
                                   }
                                   ?>
                                </p>




//------------------
add this code to your login.php script



$message="password do not match";
header("Location:index.php?msg=$message");
0 голосов
/ 25 марта 2011

Отправка значений из формы в php-скрипт через ajax - в значительной степени идеальное решение. Страница не будет перезагружена, и пользователь быстро получит ответ от сервера. Вот ваш JQuery:

$('#form').submit(function(e){
  // there are many ways to assemble this input data array, this is an easy clunky way, 
  // you could also use $.each to iterate over all input elements, get their
  // vals, and pop them into the inputVals array. 

  var inputVals = [$('#input_id1').val(), $('#input_id2').val()];

  $.ajax({
    url:"your_php_script.php",
    type: 'POST',
    data:inputVals,
    success:function(data){
      // data returned from php script as a 'json_encode' string

    }
  });

  return false;

})
0 голосов
/ 25 марта 2011

Метод, используемый большинством основных форм входа в систему, заключается в том, чтобы форма входа в систему возвращалась сама себе.Если есть проблема с именем пользователя или паролем, просто отправьте сообщение об ошибке на страницу с помощью PHP.

Если по какой-то причине вы действительно хотите отдельную страницу обработчика, вы можете использовать «мигает», где вы хранитесообщение об ошибке временно в сеансе.Страница входа в систему может затем отобразить это сообщение об ошибке и удалить его из сеанса.

0 голосов
/ 25 марта 2011

Вы можете делать это практически в любом случае, единственное преимущество метода AJAX (которое я вижу) - это, возможно, меньшая пропускная способность.

$("form").submit(function(e){
    e.preventDefault();
    //AJAX & other code here
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...