Ich habe tausend Fragen über mein Problem gesucht und gefunden, ich habe versucht zu lösen, aber habe nicht geholfen. Also öffne ich diesen Thread für meinen speziellen Fall und ich hoffe du kannst mir helfen.Login-System mit Remember, wie?
Ich komme auf den Punkt, ich bin ein Login-System in PDO erstellen, sind ein Anfänger, aber ich wünschte, es würde sich über Cookies für eine Gesamtzeit einloggen.
Ich habe mehrere Tests, aber kein Ergebnis. Der Browser ist geschlossen, sie mussten erneut Anmeldeinformationen eingegeben werden.
Ich wiederhole, ich habe bereits auf der Website gesucht, aber nicht geschafft, zu lösen.
login.php
if (empty($_POST) === false) {
$username = trim($_POST['username']);
$password = trim($_POST['password']);
if (empty($username) === true || empty($password) === true) {
$errors[] = 'Sorry, but we need your username and password.';
} else if ($users->user_exists($username) === false) {
$errors[] = 'Sorry that username doesn\'t exists.';
} else if ($users->email_confirmed($username) === false) {
$errors[] = 'Sorry, but you need to activate your account. Please check your email.';
} else {
$login = $users->login($username, $password);
if ($login === false) {
$errors[] = 'Sorry, that username/password is invalid';
} else {
$_SESSION['id'] = $login; // The user's id is now set into the user's session in the form of $_SESSION['id']
$_SESSION['username'] = $usr;
$cookie_name = '_name_cookie_';
$hash = password_hash($password, PASSWORD_BCRYPT, ["cost" => 12]); // will result in a 32 characters hash
$cookie_time = (3600 * 24 * 30); // 30 days
setcookie($cookie_name, 'usr='.$usr.'&hash='.$hash, time() + $cookie_time);
header('Location: home.php');
exit();
}
}
}
Klasse: users.php
public function login($username, $password) {
$this->db->query("SELECT * FROM users WHERE username = :username");
$this->db->bind(':username', $username);
$data = $this->db->single();
$hash = $data['password'];
$id = $data['id'];
#hashing the supplied password and comparing it with the stored hashed password.
if (password_verify($password, $hash)) {
return $id;
}else{
return false;
}
}
HINWEIS: in Form im Moment ist mir egal, Schach zu integrieren "Remember Me" , Ich werde es später machen.
Allerdings kann ich nicht wie eingeloggt Benutzer bleiben, der Cookie ist richtig eingefügt, aber sonst funktioniert es nicht. Wie repariere ich?
rufen Sie session_start() am Anfang jeder Datei auf? Mein Login-System funktioniert genau so, wie Sie es wollen. Ich kann Ihnen zeigen, wie ich Sitzungen behandle, aber ich weiß nicht, ob das ist, was Sie wollen – JRsz
Das ist nicht das Problem, session_start() wird auf jeder Seite aufgerufen, die Anmeldung wird dauern, jedoch begrenzt. Ich möchte Benutzerdaten aufzeichnen, damit ich nicht immer Ihre Daten eingeben muss. –