Sallam Mhamad El-Tanna Ответов: 2

Как предотвратить показ пустой страницы?


Привет Я начинающий студент php. У меня есть код для входа в систему, который проверяет правильность имени пользователя и пароля.
все в порядке, но если имя пользователя или пароль неверны, код генерирует сообщение об ошибке, а затем показывает пустую страницу. Как я могу предотвратить показ этой пустой страницы?

 <?php 
 
 
$username = $_POST['u'];
$password = $_POST['p'];

$username = stripcslashes($username);
$password = stripcslashes($password);
 
$username = mysql_real_escape_string($username); 
$password = mysql_real_escape_string($password);

mysql_connect("localhost","root","0598985166sallam");
mysql_select_db("project");

$result = mysql_query("select * from employees where username = '$username' and password = '$password' ") or die("faild");

$row = mysql_fetch_array($result);


if($row['username'] == $username && $row['password']==$password)
{ $NoOFLetter = strlen($username);
  $result = substr($username, $NoOFLetter-3,  $NoOFLetter);
  if($result == "doc"){header('Location: tabeeb.html'); exit;}
  if($result == "sec"){header('Location: sec.html'); exit;}}

 
else{  } // what to add here? 
 
?>


Что я уже пробовал:

Я попробовал этот код

echo '<script language="javascript">';
    echo 'alert("Error in Username or Password!")';
    echo '</script>';
    exit;


но появляется и пустая страница.

2 Ответов

Рейтинг:
2

Peter Leow

Подумайте об использовании Ajax. С вашей страницы входа пара имени пользователя и пароля может быть отправлена в PHP-скрипт через Ajax, таким образом, ваша страница входа остается, пока аутентификация обрабатывается на стороне сервера. В зависимости от возвращенного ответа вы можете отобразить сообщение об ошибке или перенаправить его на другие страницы. Следуйте этому руководству Ajax Login Script с jQuery, PHP MySQL и Bootstrap | Coding Cage[^].
Однако у вас здесь есть более серьезные проблемы:
Во-первых, то, как вы строите SQL, является привлекательным SQL-инъекция[^], использовать подготовленное заявление[^] вместо.
Далее, похоже, что вы добавляете имена пользователей с помощью "doc" и "sec", чтобы определить страницу, которую пользователь должен посетить после успешного входа в систему. Управление доступом на основе ролей в PHP[^]


Sallam Mhamad El-Tanna

Спасибо.

Рейтинг:
1

Jochen Arndt

У вас есть несколько вариантов.

Вы можете создать HTML-файл и показать его, как показано при успешном входе в систему:

header('Location: loginerr.html'); exit;

Или вы можете создать содержимое HTML-страницы и распечатать его:
$loginerr = <<<EOT
<html>
<head>
<title>Login error</title>
</head>
<body>
<p>Error in username or password.</p>
</body>
</html>
EOT;
echo $loginerr;
exit;
В приведенном выше примере используется heredoc синтаксис многострочных строк (см. PHP: Strings-Manual[^]). Вы можете добавлять любой HTML-контент, включая скрипты.


Sallam Mhamad El-Tanna

Я попробовал первое решение, но оно снова показывает страницу входа в систему без сигнала тревоги, мне нужно, чтобы было показано тревожное сообщение!