PHP MySQL login-Funktion
Ich bin mit diesem:
function authUser($username, $password){
connectDB();
$sql = "SELECT id, username FROM users where username = '".$username."' and password = '".$password."'";
$result = mysql_query($sql);
$num_rows = mysql_num_rows($result);
if ($num_rows > 0){
while ($row = mysql_fetch_array($result)){
$username = $row['username'];
session_start();
session_register('username');
return $username;
}
}
closeConn();
}
Mit einer Kombination aus diesen:
$auth = authUser($username, $password);
if (isset($username)){
header( "Location: index.php" );
}
Und dann auf die index.php (wo ich Sie umzuleiten, wenn ein erfolgreicher login) ich versuche echo $username. Aber nichts angezeigt? Irgendwelche Ideen? Ist diese Funktion das problem?
EDIT:
nun geändert haben ist es so:
if ($num_rows > 0){
while ($row = mysql_fetch_array($result)){
$_SESSION['username'] = $row['username'];
return true;
}
}
Ist das richtig?
Bitte nicht die Speicherung der Passwörter im Klartext in der Datenbank. Jedes mal, wenn Sie das tun, eine niedliche kleine Kätzchen stirbt.
Ich bin immer grundlegende Funktionen dann werde ich mit md5...Kätzchen gerettet.
Ich bin immer grundlegende Funktionen dann werde ich mit md5...Kätzchen gerettet.
InformationsquelleAutor benhowdle89 | 2011-02-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich ändern würde:
in:
weil Sie sich anmelden möchten, und Holen Sie sich EINE person aus
InformationsquelleAutor Yoram de Langen
Bitte beachten Sie, dass Sie immer wieder lenken zu
index.php
, nicht nur auf einem erfolgreichen login;$username
festgelegt ist, die beide auf eine erfolgreiche und eine nicht erfolgreiche login.Ich weiß nicht, ob Sie noch ein problem haben, aber Sie brauchen, um jede Seite mit
session_start()
bevor irgendetwas ausgegeben wird, an den browser.InformationsquelleAutor jeroen
Müssen Sie
session_start()
auf der index-Seite als auch.InformationsquelleAutor Kristoffer Sall-Storgaard
Stellen Sie sicher, index.php hat ein
session_start()
genannt, am Anfang des Skripts, und versuchen Sie auch, mit$_SESSION['username']
statt nur$username
. Viele Server sind heutzutage so eingerichtet, dass Sie rufen Sie die voll-variable ($_SESSION) anstatt nur die verkürzte version. Lesen Sie über die Register Globals auf http://php.net/manual/en/security.globals.php. Wenn Sie weiterhin Probleme haben, nehmen Sie diesession_start()
aus dem authUser-Funktion und bewegen Sie es, um die erste Zeile, die im Skript als gut.InformationsquelleAutor Mitch Grande
Variablen sind nicht global zwischen Seite Instanzen, die Sie benötigen, um die variable in $_SESSION wenn Sie es wollen, zugänglich sein, die sich über mehrere Seiten.
InformationsquelleAutor Chris
Erste, session_register ist veraltet. benutze $_SESSION:
Zweite, Ihre authUser () - Funktion gibt entweder einen Benutzernamen (wenn erfolgreich) - oder-nichts -. Dann diesen code:
sollte geändert werden, um
Und eine weitere Sache, die überprüfung für die Kennworte im Klartext ist eine sehr, sehr schlechte Sache 🙂 Denke Hashen mit MD5().
Glück!
InformationsquelleAutor Cristian Radu
Wenn Sie
mysql_fetch_array
dann sollten Sie array wie dieses:$row[0]
Können Sie
mysql_fetch_assoc()
Tabelle Spalte name ($row['username']
)-1 Späte Antwort abgeben: Diese Antwort ist sachlich falsch. Wie durch @RichardTheKiwi, kann man sich entweder
mysql_fetch_array($result, MYSQL_ASSOC)
odermysql_fetch_array($result, MYSQL_BOTH)
gibt ein assoziatives array mit Indizes (basierend auf Spaltennamen) - und der Standard istMYSQL_BOTH
ohnehin, so dass die OP ' s Gebrauch von der Funktion in Ordnung ist. Siehe php.net/manual/en/function.mysql-fetch-array.phpInformationsquelleAutor arrwynnn