PHP Code leitet nicht auf eine andere PHP datei weiter?
Wie im Titel schon beschreiebn funktioniert bei meinem Login COde die weiterleitung nicht auf mein Dashboard.php . Auf eine Internetseite leitet es jedoch ohne Probleme weiter. Es kommt auch keine Fehlermeldung oder so. Man sieht das was pasiert, da es die Daten aus den Eingabefeldern entfernt. Anbei mein Code, ich ich nicht weiß was ihr braucht, habe ich den Kompletten PHP teil mitgeschickt. Wenn ihr noch mehr Infos braucht, sagt bescheid.
Danke im vorraus
<?php
session_start();
include 'db.php'; // Datenbankverbindung einbinden
// Initialisierung einer Fehlermeldung
$error_message = '';
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Benutzereingaben sicher verarbeiten
$username = mysqli_real_escape_string($mysqli, $_POST['username']);
$password = mysqli_real_escape_string($mysqli, $_POST['password']);
// SQL-Abfrage, um den Benutzer zu suchen
$stmt = $mysqli->prepare("SELECT id, is_admin, password_hash FROM users WHERE username = ?");
if (!$stmt) {
die("Fehler bei der Vorbereitung der Abfrage: " . $mysqli->error);
}
$stmt->bind_param('s', $username);
$stmt->execute();
$result = $stmt->get_result();
$user = $result->fetch_assoc();
if ($user) {
// Passwort-Hash aus der Datenbank holen
$stored_hash = $user['password_hash'];
// Debugging: Passwort-Hash und eingegebenes Passwort
echo '<pre>';
echo "Gespeicherter Hash: " . htmlspecialchars($stored_hash) . "<br>";
echo "Eingegebenes Passwort: " . htmlspecialchars($password) . "<br>";
echo '</pre>';
// Passwort-Hash überprüfen
if (password_verify($password, $stored_hash)) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['is_admin'] = $user['is_admin'];
// Ermittlung der paramedic_id
$stmt_paramedic = $mysqli->prepare("SELECT id FROM paramedics WHERE username = ?");
if (!$stmt_paramedic) {
die("Fehler bei der Vorbereitung der Abfrage: " . $mysqli->error);
}
$stmt_paramedic->bind_param('s', $username);
$stmt_paramedic->execute();
$result_paramedic = $stmt_paramedic->get_result();
$paramedic = $result_paramedic->fetch_assoc();
$_SESSION['paramedic_id'] = $paramedic['id'] ?? null;
// Weiterleitung zum Dashboard
header("Location: dashboard.php");
exit;
} else {
$error_message = "Falsches Passwort.";
}
}
}
?>
1 Antwort
Die Umleitung muss als allererstes passieren - es handelt sich ja um einen HTTP-Header, der gesetzt werden muss. Wenn auch nur ein Byte vom Body geschickt wird, bevor der Header bekannt ist, ist keine Umleitung mehr möglich.
Das sagt auch die Doku ganz klar: https://www.php.net/manual/en/function.header.php