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
wenn ich was ändern möchte steht da das Warning in .\libraries\classes\Dbal\DbiMysqli.php#273
mysqli::query(): (HY000/1030): Fehler 176 "Read page with wrong checksum" von Speicher-Engine Aria
Backtrace
DbiMysqli.php#273: mysqli->query(
string 'SELECT * FROM `mysql`.`db` WHERE `User` = \'shop\' AND `Host` = \'%\' ORDER BY `Db` ASC',
integer 0,
)
DatabaseInterface.php#213: PhpMyAdmin\Dbal\DbiMysqli->realQuery(
string 'SELECT * FROM `mysql`.`db` WHERE `User` = \'shop\' AND `Host` = \'%\' ORDER BY `Db` ASC',
,
integer 0,
)
DatabaseInterface.php#171: PhpMyAdmin\DatabaseInterface->tryQuery(
string 'SELECT * FROM `mysql`.`db` WHERE `User` = \'shop\' AND `Host` = \'%\' ORDER BY `Db` ASC',
integer 256,
integer 0,
boolean true,
)
Privileges.php#1881: PhpMyAdmin\DatabaseInterface->query(string 'SELECT * FROM `mysql`.`db` WHERE `User` = \'shop\' AND `Host` = \'%\' ORDER BY `Db` ASC')
Privileges.php#1969: PhpMyAdmin\Server\Privileges->getUserSpecificRights(
string 'shop',
string '%',
string 'database',
string '',
)
Privileges.php#3284: PhpMyAdmin\Server\Privileges->getHtmlForAllTableSpecificRights(
string 'shop',
string '%',
string 'database',
)
PrivilegesController.php#473: PhpMyAdmin\Server\Privileges->getHtmlForUserProperties(
boolean false,
string '',
string 'shop',
string '%',
string '',
string '',
)
Routing.php#191: PhpMyAdmin\Controllers\Server\PrivilegesController->index(array)
index.php#18: PhpMyAdmin\Routing::callControllerForRoute(
string '/server/privileges',
,
,
)