Почему кнопка отправки формы реагирует только на двойной щелчок? - PullRequest
0 голосов
/ 06 сентября 2011

поэтому у меня есть простая страница входа в систему:

   <fieldset>
    <legend>Verification</legend>
   <form method="post" action="authentication.php">


<?php if($_GET['error']==1){
      echo "<p style=\"float: left; \" class=\"criticMsg\">Username or password are wrong</p>";  
    }
    ?>


 <br /><br /> <br /><br />
 <label style="float: left; margin-top: 15px;" for="username">User</label><input    type="text" name="username"></input><br />
 <label for="password">Password</label><input type="password" name="password"></input>  <br />
  <input type="submit" class="globalBtn" value="Enter"></input>
  </form>

    </fieldset>

, тогда файл authenticate.php выглядит так:

 include ('functions.php');

if(valid_details($_POST['username'], $_POST['password'])){
header("Location: ../../storage_update.php?message=1");
}else{
header("Location: login.php?error=1");
}

наконец, файл functions.php выглядит так1007 *

include("../connection.php");


$sql = "SELECT user, pass FROM users";
$back = "There is an error. <a href=\"login.php\">Back</a>";
$result = $conn->query($sql) or die($back);

while($row = $result->fetch_object()){

//validates user input

function valid_details($username, $password){
if(isset($username) && $username == $row->user){
   if(isset($password) && $password == $row->pass){
   return true;}
   }


  };
 }

Когда я ввожу правильное имя пользователя и пароль, предоставленные в базе данных, я получаю переменную error = 1 в URL, что не соответствует ожиданиям при правильных учетных данных.Однако, если я быстро дважды нажму кнопку отправки, я попаду на ожидаемую страницу, возвращая сообщение = 1 в URL, так что это означает, что функция valid_credentials работает нормально, но почему кнопка реагирует так? РЕДАКТИРОВАТЬ На странице storage_update.php (целевой странице) я реализовал плагин fancybox jquery.

1 Ответ

1 голос
/ 06 сентября 2011

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

include("../connection.php");

function valid_details($username, $password){
    $sql = "SELECT user, pass FROM users";
    $sql .= "WHERE user='".$username."' AND pass='".$password."'"; 
    $back = "There is an error. <a href=\"login.php\">Back</a>";
    $result = $conn->query($sql) or die($back);

    return count( $result ) > 0             
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...