Hey,
ich habe mich nun endlich auch mal dazu entschieden von mysqli auf pdo umzusteigen. Nun habe ich aber ein paar schwierigkeiten mit dem umbauen meiner sql abfragen.
Ich habe mir dieses Tutorial angeschaut: https://phpdelusions.net/pdo und komme aber noch nicht ganz zurecht. Die verbindung zur Datenbank habe ich schonmal hergestellt und das scheint auch zu funktionieren.
Nun bin ich dabei meine Login Seite wieder ans laufen zu bekommen und da komme ich nicht weiter. Mich verwirrt dass man so wenige "funktionen" ausführen muss und keine close funktion hat.
Könnte sich das mal jemand ansehen und mir erklären auf was ich da verzichten kann? Oder wo ich noch etwas hinzufügen sollte?
Da ist auch noch ein fehler drin, aber ich kann den nicht finden.
Hier einmal die verbindung zur db:
Hier einmal der Aktuelle Code:
ich habe mich nun endlich auch mal dazu entschieden von mysqli auf pdo umzusteigen. Nun habe ich aber ein paar schwierigkeiten mit dem umbauen meiner sql abfragen.
Ich habe mir dieses Tutorial angeschaut: https://phpdelusions.net/pdo und komme aber noch nicht ganz zurecht. Die verbindung zur Datenbank habe ich schonmal hergestellt und das scheint auch zu funktionieren.
Nun bin ich dabei meine Login Seite wieder ans laufen zu bekommen und da komme ich nicht weiter. Mich verwirrt dass man so wenige "funktionen" ausführen muss und keine close funktion hat.
Könnte sich das mal jemand ansehen und mir erklären auf was ich da verzichten kann? Oder wo ich noch etwas hinzufügen sollte?
Da ist auch noch ein fehler drin, aber ich kann den nicht finden.
Hier einmal die verbindung zur db:
PHP-Code:
<?php
/* ========== Database ========== */
$whitelist = array('127.0.0.1', '::1', 'localhost');
if(!in_array($_SERVER['REMOTE_ADDR'], $whitelist)){
$servername = "";
$dBUsername = "";
$dBPassword = "";
$dBName = "";
$charset = 'utf8mb4';
echo '<script>console.log("Active Database: Work DB")</script>';
} else {
$servername = "";
$dBUsername = "";
$dBPassword = "";
$dBName = "";
$charset = 'utf8mb4';
echo '<script>console.warn("WARNING! Active Database: Testing")</script>';
}
//$conn = mysqli_connect($servername, $dBUsername, $dBPassword, $dBName);
$dsn = "mysql:host=$servername;dbname=$dBName;charset=$ch arset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $dBUsername, $dBPassword, $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
/*if(!$conn){
die("Connection failed: ".mysqli_connect_error());
}*/
PHP-Code:
//User Login
if (isset($_POST['submit_login'])){
require_once "dbh.inc.php";
$url = '../login.php?a=';
$mail_username = $_POST['mailuser'];
$password = $_POST['password'];
if(empty($mail_username) || empty($password)){
header("Location: $url" . 'info_empty');
exit();
}
else {
$sql = "SELECT * FROM users WHERE username=? OR email=?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$mail_username, $mail_username]);
$user = $stmt->fetch();
/*$sql = "SELECT * FROM users WHERE username=? OR email=?;";
$stmt = mysqli_stmt_init($conn);*/
if(!mysqli_stmt_prepare($stmt, $sql)){
header("Location: $url" . 'danger_sqlerror');
exit();
}
else {
//mysqli_stmt_bind_param($stmt, "ss", $mail_username, $mail_username);
//mysqli_stmt_execute($stmt);
//$result = mysqli_stmt_get_result($stmt);
if($row = mysqli_fetch_assoc($result)){
$passwordCheck = password_verify($password, $row['password']);
if($passwordCheck == false){
header("Location: $url" . 'warning_incorrectpassword');
exit();
}
else if($passwordCheck == true){
$userid_name = "userId";
$userid_value = $row['id'];
setcookie($userid_name, $userid_value, time() + (7200), "/"); // 7200 = 2 Stunden
$username_name = "userName";
$username_value = $row['username'];
setcookie($username_name, $username_value, time() + (7200), "/"); // 7200 = 2 Stunden
$useraccess_name = "userAccess";
$useraccess_value = $row['access'];
setcookie($useraccess_name, $useraccess_value, time() + (7200), "/"); // 7200 = 2 Stunden
$useremail_name = "userMail";
$useremail_value = $row['email'];
setcookie($useremail_name, $useremail_value, time() + (7200), "/"); // 7200 = 2 Stunden // 3600 = 1 Stunde
$usertheme_name = "userTheme";
$usertheme_value = $row['theme'];
setcookie($usertheme_name, $usertheme_value, time() + (7200), "/"); // 7200 = 2 Stunden
$date = date('Y-m-d H:i:s');
$date = date('Y-m-d H:i:s',strtotime($date));
/*$sql = "UPDATE users SET last_login = now() WHERE id=" . $row['id'];
$query = mysqli_query($conn,$sql);
mysqli_close($conn);*/
$sql = "UPDATE users SET last_login = now() WHERE id=?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$row['id']]);
if($_COOKIE['userAccess'] !== 775){
header("Location: ../index.php?a=" . 'success_login');
exit();
} else {
header("Location: ../manage_news.php?a=" . 'success_login');
exit();
}
}
else{
header("Location: $url" . 'warning_incorrectpassword');
exit();
}
}
else {
header("Location: $url" . 'danger_nouserfound');
exit();
}
}
}
//mysqli_stmt_close($stmt);
//mysqli_close($conn);
}
Kommentar