Ich bin ziemlich neu in PHP.Der richtige Weg, um Sitzungen zu verwenden?
Ich habe ein Login-System für meine Website gemacht und ich frage mich, ob ich das richtig mache. Auf meinem login.php
, der die Anmeldeanforderung verarbeitet, habe ich Sitzungsvariablen erstellt, die auf meiner Site verwendet werden können. Ich frage mich, ob dies der effizienteste/sicherste Weg ist, die Benutzerdaten zu speichern.
Diese Methode scheint für mich recht gut zu funktionieren. Nehmen wir an, ich benötige Daten aus einer anderen Tabelle, die in meiner Benutzertabelle nicht enthalten ist. Wie würde ich diese Informationen abrufen und in einer Sitzung speichern? Bleibt dies für meine Benutzer anfällig, da der Browser all diese Informationen enthält? oder bekomme ich ein völlig falsches Verständnis von Sitzungen.
<?php
/* User login process, checks if user exists and password is correct */
// Escape email to protect against SQL injections
$email = $mysqli->escape_string($_POST['email']);
$result = $mysqli->query("SELECT * FROM users WHERE email='$email'");
if ($result->num_rows == 0) { // User doesn't exist
$_SESSION['message'] = "User with that email doesn't exist!";
header("location: error.php");
} else { // User exists
$user = $result->fetch_assoc();
if (password_verify($_POST['password'], $user['password'])) {
$_SESSION['email'] = $user['email'];
$_SESSION['user_name'] = $user['user_name'];
$_SESSION['active'] = $user['active'];
$_SESSION['paid'] = $user['paid'];
$_SESSION['bitaddress'] = $user['bitaddress'];
$_SESSION['id'] = $user['id'];
$_SESSION['firstName'] = $user['firstName'];
$_SESSION['lastName'] = $user['lastName'];
// This is how we'll know the user is logged in
$_SESSION['logged_in'] = true;
header("location: checksum.php");
} else {
$_SESSION['message'] = "You have entered wrong password, try again!";
header("location: error.php");
}
}
Sie sollten 'session_start() 'vor dem Zugriff auf' $ _SESSION'-Variablen hinzufügen, damit eine Sitzung fortgesetzt werden kann (falls sie noch nicht abgelaufen ist) –
Allgemeine Hinweise in späteren Versionen von PHP bestehen darin, NICHT auf superglobale Arrays zuzugreifen direkt. Nur ein f.y.i. –
@chade_ Ich benutze session_start() am Anfang jeder Seite Ich benötige Zugriff auf die Daten. Mein Fehler hätte ich hinzufügen sollen. –