Ich kann den TE versehen wenn er schnell eine Lösung brauch weil er keine Zeit/Lust oder sonst irgendwas hat.
Dann brauch er eine Lösung und will nicht Stundenlang suchen und dikutieren.
Nanana... Dann sollte man lieber die Finger davon lassen. Das was Du da schreibst impliziert, dass der Fragen stellende Anfänger Lösungscode einfach in seine Projekte kopiert ohne diese zu verstehen. Das ist so ziemlich das Dümmste, was man machen kann.
Gerade bei einem Login, der ja komplett auf Sicherheit basiert, sollte man schon verstehen, was man da tut. Wenn man meint, die Zeit dafür nicht zu haben, sollte man das auch nicht selber machen!
Zu Deinem Script: Es sind keine zwei SQL-Queries nötig.
session_start();
if ( isset($_POST['login']) ) {
$oPDO = new PDO(
'mysql:host=localhost;dbname=database_name;charset=utf8'
, 'database_user'
, 'database_passwd'
, [
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]
);
$aUserData = filter_input_array( INPUT_POST, ['email', 'passwort'] );
$oStmnt = $oPDO->prepare("SELECT user_name, user_password, is_admin FROM testuser WHERE email = :email");
$oStmnt->execute( ['email' => $aUserData[0]] );
$oUserDataSet = $oStmnt->fetch();
if ( $oUserDataSet && password_verify($aUserData[1], $oUserDataSet->user_password)) {
$_SESSION['userid'] = $user['id'];
$_SESSION['is_admin'] = (boolean)$oUserDataSet->is_admin;
} else {
echo 'fehlerhafte Daten';
}
// header Umleitung auf Bereich admin.php oder user.php, abhängig von $_SESSION['is_admin']
exit;
}
Alles anzeigen
ungeteset, aber der Aufbau/Ablauf sollte klar sein, denke ich...