Система входа в систему с использованием PHP и PDO вызывает ошибку сервера «в настоящее время не удается обработать этот запрос».

#php #mysql #forms #pdo

Вопрос:

Я создал систему входа в систему с целью входа в систему пользователя, найдя соответствующий хэшированный пароль в базе данных, но когда страница запущена, она не работает и показывает ошибку сервера «в настоящее время не в состоянии обработать этот запрос». Цель состоит в том, чтобы успешно войти в систему пользователя и распечатать приветственное сообщение, как только я увижу этот результат, я планирую перенаправить его на измененную домашнюю страницу. При попытке отладки я вижу, что проблема заключается в коде, который я сделал, пытаясь подключиться к таблице в моей базе данных с помощью метода PDO. **ОБНОВЛЕНИЕ: Я отредактировал свой код, и теперь он работает, но когда я ввожу правильные данные для входа из своей базы данных, все равно появляется сообщение об ошибке «Сведения об ошибке входа» * * Ниже приведен мой код

PHP-код:

     <?php
session_start();
  global $email;
  global $emailErr;
  global $pswError;


if(isset($_POST ['login'])) {
include("connectdb.php"); //connecting to Database
$email = $_POST['email']; //creating email and password variable from the form
$psw = $_POST['psw'];





  if (empty($email) || empty($psw)) {
 $err = "<p class = error > Please enter your personal email and your password </p>";


} else {
 try{

                    $query = "SELECT * FROM organiser WHERE email = ?";
                    $result = $db->query($query);
                   $result->execute(array($email));
                   $user_info = $result->fetchAll();
                   // $staff = $user_info['staff'];

                 if (!empty($user_info)) {
           
                       if (password_verify($_POST['psw'], $user_info['password']) {
                           $_SESSION['name'] = $user_info['name'];
                           //$_SESSION["loggedIn"]=true;
                           $welcome = "<p class = success> success </p>";
                           header("location: home.php")
                         
                           exit();
                       } else {
                           $message = "<p class = error> Email Or Password is wrong </p> ";
                           echo $message;
                       }
                   } else {
                      $message = "<p class = error> Email Or Password is wrong </p> ";
                      echo $message;
                   }
                } catch (PDOException $ex){
                    //this catches the exception when it is thrown
                    echo "Login Error details:". $ex->getMessage();
                }
                }
              }
 

мой connectdb.php код:

 <?php # connectdb.php
$host = "localhost";
$dbname="u_180014367_db";
$username = "";
$password = "";
// Creates a PDO object called $db and establishes the MySQL database connection
try{
    $db = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch (PDOException $ex) {
    ?>
    <p>Sorry, a database error occurred.</p>
    <p> Error details: <em> <?= $ex->getMessage() ?> </em></p>
<?php
}
?>
 

Комментарии:

1. Проверьте журналы вашего сервера для получения дополнительной информации. Однако вы используете неопределенный $sth для выполнения запроса вместо $result , который вы выполнили вместо подготовленного в предыдущей строке.

2. спасибо, я отредактировал его, но логин не работает, когда я ввел правильные данные для входа

3. Предупреждение: Будьте осторожны с вашим кодом, следуйте этому руководству по ПРЕДОТВРАЩЕНИЮ SQL-ИНЪЕКЦИЙ , вам не хватает защиты для вашего $_POST['email']; и $psw = $_POST['psw'];

4. @bolaOyetade $result = $db->query($query); должно быть $result = $db->prepare($query); . Поскольку вы не готовите запрос, PDO не знает, как заполнить заполнитель.