проверка проверки на страницу входа не работает - PullRequest
0 голосов
/ 14 октября 2018

Я работаю над подтверждением моего входа, используя php для стороннего проекта.Сейчас у меня есть один пользователь - admin, а пароль - 123.Если пользователь введет неправильный пароль или имя пользователя, он выдаст сообщение «1004» или «1005».На данный момент это тоже не сработает, и я пытаюсь понять, почему.Ниже я опубликую html и php.

Обновление: я добавил method = post.Не уверен, куда идти отсюда.

<?php
$uname = $_POST['uname'];
$passwd = $_POST['psw'];
$error = "";
$success ="";

if(isset($_POST['submit'])){
if($uname == 'admin'){
if($passwd == '123'){
  $error = "";
  $success = "Welcome Admin";
}
else{
  $error = " Wrong Password!!";
  $success = "";
   } 
}
 else{
   $error = " Wrong Username!";
  $success = "";
    }   
  }
 ?>





 <html lang="en">

  <head>
  <title>Hangman Home Page</title>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device- 
 width, initial-scale=1">
 <link rel="stylesheet" type="text/css" 
 href="home.css">
 </head>

 <body>

 <div class="header">
  <div class="a">Hangman</div>

 <br>
 <br>
 <br>
<!--column start here -->
<div class="hi">
<table id="leader">
  <tr>
    <th><img src="crown.gif"></th>
  </tr>
  <tr>
    <td>Leader Board</td>
  </tr>
  <tr>
    <td>1st. John : 4 guess</td>
  </tr>
  <tr>
    <td>2nd. Smith : 6 Guesses</td>
  </tr>
  <tr>
    <td>3rd. Tom : 7 Guesses</td>
  </tr>
  <tr>
    <td>4th. Allen : 8 Guesses</td>
  </tr>
  </table>
  </div>
 <!-- form start here -->
 <br><br>
 <div class="b">Think You Can Beat #1 ?</div>

  <center><button 

 onclick=
"document.getElementById('id01').
 style.display='block'"
 style="width:auto;">Play Now!!! 
 </button></center>

 <div id="id01" class="modal">

<form class="modal-content animate" action="/action_page.php">
  <div class="imgcontainer">
    <span onclick="document.getElementById('id01').style.display='none'" class="close" title="Close Modal">&times;</span>
    <img src="hang1.gif" alt="logo" class="avatar">
  </div>

  <div class="container">
    <p class="error">
      <?php echo 'error'; ?>
    </p>
    <p class="success">
      <?php echo 'success'; ?>
    </p>
    <label for="uname"><b>Username</b></label>
    <input type="text" placeholder="Enter Username" name="uname" required>

    <label for="psw"><b>Password</b></label>
    <input type="password" placeholder="Enter Password" name="psw" required>

    <button type="submit">Login</button>
    <label>
      <input type="checkbox" checked="checked" name="remember"> Remember me
    </label>
  </div>

  <div class="container" style="background-color:#f1f1f1">
    <button type="button" onclick="document.getElementById('id01').style.display='none'" class="cancelbtn">Cancel</button>
    <span class="psw">Forgot <a href="#">password?</a></span>
  </div>
</form>

Ответы [ 3 ]

0 голосов
/ 14 октября 2018

В вашем сценарии есть некоторые ошибки.Во-первых, давайте проверим вашу форму:

<form action="/action_page.php">
  <input type="text" placeholder="Enter Username" name="uname" required>
  <input type="password" placeholder="Enter Password" name="psw" required>
  <button type="submit">Login</button>
  <input type="checkbox" checked="checked" name="remember"> Remember me
</form>

Этот код при заполнении и отправке приведет к тем переменным в вашем PHP-скрипте:

$_GET["uname"], $_GET["psw"] and $_GET["remember"].

You 'мы пытаемся получить доступ к данным, используя $_POST, но это произойдет, только если вы добавите атрибут method = "post" в свой тег .

Вы также можете получить доступ к смешанным массивам $_GET и $_POST, используя $_REQUEST.

Другая ошибка заключается в том, что вы проверяете, были ли данные отправлены вверху кода.Там нет переменной $_POST["submit"] (ни $_GET["submit"], ни $_REQUEST["submit"]), потому что в форме нет переменной с этим именем, и вы, вероятно, думаете о кнопке отправки.Чтобы проверить, была ли отправлена ​​форма, лучше всего проверить, не были ли имя пользователя и пароль пустыми.

Кроме того, вы повторяете «ошибка» и «успех» в форме, и вывероятно пытается повторить результат $ error и $ success.

0 голосов
/ 14 октября 2018

Потому что вы не отображаете ни сообщение об ошибке, ни сообщение об успехе.Вот код, который должен решить вашу проблему:

..............

<!-- in your form tag add attribute method="POST" -->

<!-- Your code -->
<!-- in your div class="container"> -->
<?php if($success) { ?>
    <p class="success"><?php echo $success; ?></p>
<?php } else if ($error) { ?>
<p class="error">
  <?php echo $error; ?>
</p>
<!-- Your code -->

Happy coding ;)
0 голосов
/ 14 октября 2018

вы выводите строку с именем success и error <?php echo 'success'; ?>, что вы должны сделать, это отобразить переменные:

<?php echo $error; ?>

и:

<?php echo $success; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...