показать ошибки при входе в систему - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть рабочая форма входа в систему, которая появляется при нажатии кнопки, я могу войти в систему, но она не показывает ошибки

Кнопка

, которая показывает форму входа в систему с функцией (в отдельном файле):

<button type="button" class="btn btn-lg btn-success" name="button" onclick="signin()" id="signin">Login</button>

function signin()
  {
    jQuery('#login-form').css("display","block");
    jQuery('#reg-form').css("display","none");
    jQuery('#signin').css("display","none");
    jQuery('#signup').css("display","block");
  }

модал с php (входит в файл, где находится кнопка):

<?php

$email = ((isset($_POST['Email']))?$_POST['Email']:'');
$password = ((isset($_POST['Password']))?$_POST['Password']:'');
$errors = array();
?>

<div class="" id="login-form" style="display:none">
  <img class="Lpic" src="img/loginpic.png">
  <br>
  <div class="fieldtext">
    <h2 class="text-center">Login</h2>
  </div>
  <br>
  <div>

    <?php
      if($_POST)
      {
        //form validation
        if(empty($_POST['Email']) || empty($_POST['Password']))
        {
          $errors[] = 'Please enter email and password';
        }

        //check if email exists
        $query = $db->query("SELECT * FROM users WHERE Email = '$email'");
        $user = mysqli_fetch_assoc($query);
        $userCount = mysqli_num_rows($query);
        if($userCount < 1)
        {
          $errors[] = 'Unknown email, pleas verify';
        }

        if(password_verify($password, $user['Password']))
        {
          $errors[] = 'Password doesn\'t match, try again';
        }


        if(!empty($errors))
        {
          echo display_errors($errors);
        }else{
          //log user in
          $user_id = $user['ID'];
          login($user_id);
        }
      }
    ?>

  </div>
  <form action="Login.php" method="post">
    <div class="inputfield">
      <div class="form-group">
        <label for="Email">Email</label>
        <input type="email" name="Email" id="Email" value="<?=$email;?>">
      </div>
      <div class="form-group">
        <label for="Password">Password</label>
        <input type="password" name="Password" id="Password" value="<?=$password;?>">
      </div>
    </div>
    <div class="form-group">
      <input type="submit" value="Login" class="btn btn-success btn-block">
    </div>
  </form>
</div>

PS: login () - это функция, которая регистрирует пользователя, какие-либо предложения о том, как показывать ошибки без использования оповещения ??? ТИА

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Что ж, это определенно не самое красивое решение, но вы можете вместо использования функции display_errors() отображать сообщения проверки формы в html всякий раз, когда массив $errors не пуст.Примерно так:

if(!empty($errors)) {
   echo ‘<div id=“errors”>’;

   foreach ($error in $errors) {
     echo $error . “<br>”;
   }

   echo ‘</div>‘;

}

Извините, что не смог полностью написать код, его сложно написать на телефоне ... Надеюсь, вы поняли идею.

0 голосов
/ 13 сентября 2018

попробуйте установить следующее в верхней части вашего php-файла

ini_set('display_errors', 1);
error_reporting(E_ALL);

надеюсь, это поможет.Вы также можете посмотреть на этот ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...