simple login-Funktion mit PDO
bin immer noch in der early learning Phasen, schlug meinen Kopf gegen die Wände auf der Suche nach hinweisen. Iv wurde das Handbuch zu Lesen ohne Erfolg.
im Gebäude ein Benutzer-log-in-system basiert auf der phpAcadamy tutorial "Register & Login'. Sie verwenden mysql_connect in der Anleitung, aber ich bin mit einem PDO-Verbindung zu mysql.
1) die Funktion user_id_from_username sollte den user_id
Eintrag für den gebuchten $username. mir nicht, im verwirrt, wie einfach die Eingabe, und ich brauche nur ein wenig Anleitung und Erklärung.
2) die login-Funktion arbeiten, ABER ich brauche Sie, um zurückzukehren, $user_id, wenn WAHR, so dass ich das session.
hier ist mein code:
<?php
function user_id_from_username(PDO $db, $username) {
$stmt = $db->prepare('SELECT `user_id` FROM `users` WHERE `username` = 1');
$stmt->bindParam(1, $username);
$stmt->execute();
return ($stmt->fetchColumn());
} //??? I NEED THIS FUNCTION TO RETURN THE `user_id` ENTRY FOR $username
function login(PDO $db, $username, $password) {
$user_id = user_id_from_username($db, $username);
$password = md5($password);
$stmt = $db->prepare('SELECT COUNT(`user_id`) FROM `users` WHERE `username` = ? AND `password` = ?');
$stmt->bindParam(1, $username);
$stmt->bindParam(2, $password);
$stmt->execute();
return (bool) $stmt->fetchColumn();
} //??? I NEED THIS FUNCTION TO RETURN $user_id IF TRUE (to set session)
//---------------------login.php-----------------------
if (empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) === true || empty($password) === true) {
$errors[] = 'You need to enter a username and password.';
} else if (user_exists($db, $username) === false) {
$errors[] = 'We can\'t find that username. Have you registered?';
} else if (user_active($db, $username) === false) {
$errors[] = 'You haven\'t activated your account!';
} else {
$login = login($db, $username, $password);
if ($login === false) {
$errors[] = 'That username/password combination is incorrect.';
} else {
die($login);
}
}
print_r($errors);
}
So, nach dieser login-Skript nach einem erfolgreichen login (gute Benutzername und Passwort ein, und aktives Konto) es sollte die Ausgabe des $user_id integer: "die($login)".
(Ich habe auch die anderen zwei Funktionen: user_exists und user_active, denn ich habe Sie richtig funktioniert)
Druckt es die Fehler-array richtig, es meldet ok, außer für diesen nächsten Schritt.
Dank im Voraus für die Hilfe!
InformationsquelleAutor mholberger | 2013-05-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen Sie
?
hiersollte
Bearbeiten
Verwenden Sie diese Funktion,
siehe Antwort bearbeitet.
es funktioniert! danke!
InformationsquelleAutor Yogesh Suthar
In prepared statements
?
verwendet wird. Die?
wird durch die angegebene variable inbind_param
. In Ihrem code?
ersetzt werden, mit$username
InformationsquelleAutor curious_coder
Mit user_id_from_username() im login-Funktion macht absolut keinen Sinn.
Sowie erste Zählung anstelle der eigentlichen id
Könnte man es machen, in eine Schritt:
InformationsquelleAutor Your Common Sense