Kann mir da jemand sagen wo der Fehler liegt ? Ich bin da am verzweifeln.
Login, Registrierung, Fehlermeldung, SQL Struktur habe ich alles in die Frage gepackt damit ihr einen besseren überblick habt.
login.php:
<?php
$server = 'localhost';
$user = 'root';
$psw = null;
$dbName = 'TestApp';
try {
$conn = new PDO('mysql:host='.$server.';dbname='.$dbName.';charset=utf8', $user, $psw);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$username = htmlspecialchars(stripslashes(trim($_POST['username'])));
$password = htmlspecialchars(stripslashes(trim($_POST['password'])));
$statement = $pdo->prepare("SELECT * FROM user WHERE username = :username");
$result = $statement->execute(array('username' => $username
));
$user = $statement->fetch();
//Überprüfung des Passworts
if ($user !== false && password_verify($username, $password['passwort'])) {
$_SESSION['userid'] = $user['id'];
die('Login erfolgreich. Weiter zu <a href="geheim.php">internen Bereich</a>');
} else {
$errorMessage = "Nutzername oder Passwort war ungültig<br>";
}
}catch (PDOException $e) {
print "Error!: " . $e->getMessage() ;
exit;
}
Konsole :
<br />
<b>Warning</b>: Undefined variable $pdo in <b>C:\xampp\htdocs\Test\assets\php\login.php</b> on line <b>14</b><br />
<br />
<b>Fatal error</b>: Uncaught Error: Call to a member function prepare() on null in C:\xampp\htdocs\Test\assets\php\login.php:14
Stack trace:
#0 {main}
thrown in <b>C:\xampp\htdocs\Test\assets\php\login.php</b> on line <b>14</b><br />
register.php
<?php
$server = 'localhost';
$user = 'root';
$psw = null;
$dbName = 'TestApp';
try {
$conn = new PDO('mysql:host='.$server.';dbname='.$dbName.';charset=utf8', $user, $psw);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
// POST wird mit AJAX gesendet
$username = htmlspecialchars(stripslashes((trim($_POST["username"])))) ;
$password = password_hash(htmlspecialchars(stripslashes((trim($_POST["password"])))) ,PASSWORD_DEFAULT) ;
$cash = 100;
// Schreibt in die Datenbank
$sql = "INSERT INTO user (username,password,cash) VALUES (:username,:password,:cash) ";
$sqlvars = array("username" => $username,
"password" => $password,
"cash" => $cash);
$Abfrage = $conn->prepare($sql);
$Abfrage->execute($sqlvars);
}catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
exit;
}
SQL STRUKTUR :
Datenbankname : Test
Tabelle : user , 5 Spalten/Rows
- id | int , (auto increment)
- username | varchar , (unique)
- password | varchar, (gehasht mit salt sha512)
- cash | varchar
- time | datetime, (mit current time stamp)
und ich mache alles mit AJAX.
-PDO statt mysqli
Vielen Dank. Was für ein dummer Fehler von mir. :D Endlich kann ich weiterarbeiten.