В настоящее время у меня есть система входа в систему, которую я хотел бы преобразовать в PDO из Mysqli.
В настоящее время у меня есть веб-сайт с базой данных, прикрепленной с помощью phpMyAdmin / MySQL.
Я попытался преобразовать все, и теперь я покажу вам часть системы LOGIN.php, так как я еще не коснулся части регистрации.
Это то, что у меня есть.
LOGIN.INC.PHP
<?php
require_once 'dbh.inc.php';
try {
$handler = new PDO("mysql:host=$servername;dbname=$dbname",
$username,
$password,
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch(PDOException $e){
echo $e->getName();
die();
}
//first we start a session
session_start();
//We then check if the user has clicked the login button
if (isset($_POST['submit'])) {
//Then we require the database connection
//require_once 'dbh.inc.php';
//And we get the data from the login form
$name = $_POST['name'];
$password = $_POST['password'];
//Error handlers
//Error handlers are important to avoid any mistakes the user might have made when filling out the form!
//Check if inputs are empty
if (empty($name) || empty($password)) {
header("Location: ../index.php?login=empty");
exit();
}
} else {
$stmt = $db->prepare("SELECT * FROM users WHERE user_name=:name");
$stmt->bindParam(':name', $name, PDO::PARAM_STR);
if ($stmt->execute()) {
header("location: ../index.php?login=error");
exit();
} else {
if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
//de-hashing the password
$hashedpasswordCheck = password_verify($password, $row['user_password']);
if ($hashedpasswordCheck == false) {
header("location: ../index.php?login=error");
exit();
} elseif ($hashedpasswordCheck == true) {
//Log in the user here
$_SESSION['u_id'] = $row['user_id'];
$_SESSION['u_name'] = $row['user_name'];
header("location: ../index.php?login=success");
exit();
}
} else {
header("location: ../index.php?login=error");
exit();
}
}
}
DBH.INC.PHP
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "loginsystem";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname",
$username,
$password,
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$stmt = $conn->prepare("SHOW DATABASES;");
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$result = $stmt->fetchAll();
print_r($result);
}
catch(PDOException $e) {
echo $e->getMessage();
}
$conn = null;
Когда я пытаюсь войти в систему, меня перенаправляют на этот URL:
http://localhost/php44/includes/login.inc.php
и получите это распечатанное сообщение / ошибка.
Array ([0] => Array ([База данных] => imgupload) [1] => Массив ([База данных] => information_schema) [2] => Массив ([База данных] => Логическая система) [3] => Массив ([База данных] => mysql) [4] => Массив ([База данных] => performance_schema) [5] => Массив ([База данных] => phpmyadmin) [6] => Массив ([База данных] = > тест))
Что мне сделать, чтобы это исправить, чтобы мой логин работал?