Autor |
Nachricht |
345speedy
Threadersteller
Dabei seit: 29.05.2008
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Mi 11.06.2008 14:28
Titel Problem mit Loginscript |
|
|
Hallo..
Habe eben mal ein Loginscript, das über Session und MySQL arbeitet, ausprobiert..
Jedoch bekomm ich folgende Fehlermeldung wenn ich absichtlich falsche Daten eingebe.
Zitat: | Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /data/apache/users/kilu.de/ddlworld/www/Speedhosting/login.php on line 18 |
Hier mal die Login.php
Zitat: | $username = $_POST["username"];
$passwort = md5($_POST["password"]);
$abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
if($row->passwort == $passwort)
{
$_SESSION["username"] = $username;
echo "Login erfolgreich. <br> <a href=\"geheim.php\">Geschützer Bereich</a>";
}
else
{
echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>";
}
?> |
Was ist hier falsch?
|
|
|
|
|
Snifferdog
Dabei seit: 08.03.2007
Ort: Düsseldorf
Alter: 35
Geschlecht:
|
Verfasst Mi 11.06.2008 14:58
Titel Re: Problem mit Loginscript |
|
|
345speedy hat geschrieben: | Hallo..
Habe eben mal ein Loginscript, das über Session und MySQL arbeitet, ausprobiert..
Jedoch bekomm ich folgende Fehlermeldung wenn ich absichtlich falsche Daten eingebe.
Zitat: | Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /data/apache/users/kilu.de/ddlworld/www/Speedhosting/login.php on line 18 |
Hier mal die Login.php
Zitat: | $username = $_POST["username"];
$passwort = md5($_POST["password"]);
$abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
if($row->passwort == $passwort)
{
$_SESSION["username"] = $username;
echo "Login erfolgreich. <br> <a href=\"geheim.php\">Geschützer Bereich</a>";
}
else
{
echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>";
}
?> |
Was ist hier falsch? |
Überprüfe am besten mal das Senden des Querys mit "OR die(mysql_error())"; Wahrscheinlich läuft da was falsch und deswegen bekommt dann mysql_fetch_object kein brauchbares Ergebnis.
Gruß
|
|
|
|
|
Anzeige
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 11.06.2008 15:00
Titel
|
|
|
Bevor du da weiter machst, google: "sql injection"
|
|
|
|
|
345speedy
Threadersteller
Dabei seit: 29.05.2008
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Mi 11.06.2008 15:21
Titel
|
|
|
So, habe mir das durchgelesen... aber mir ist keine andere Lösung zum Login eingefallen, da ich, wie du wohl oben sehn kannst, noch wenig ahnung von PHP habe... Wenn du mir natürlich ein gutes FUNKTIONIERENDES Script empfehlen kannst, was dann dazu auch nichts kostet währe es natürlich klasse, denn bei google findet man nur scheißdreck dazu, entweder geht kein Downloadlink oder das Script ist veraltet und geht auf dem server nicht ^^
|
|
|
|
|
Smooth-Graphics
Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 11.06.2008 16:30
Titel
|
|
|
Code: | $abfrage = "SELECT username, passwort FROM login WHERE username='".$username."'"; |
So sollte es (vorrausgesetzt die Tabellen und Attribute stimmen) funktionieren. LIKE brauchst du hier nicht. LIMIT auch nicht, es sollte eigentlich nur ein Ergebnis herauskommen, sonst läuft eh was falsch.
Kostenlose Scripte findest du doch massenhaft im Netz. Eine gute Alternative ist das Paket HTTP_AUTH, da kann man rel. viel selbst anpassen und es ist ziemlich sicher.
//edit:
BTW sollte man wie m schon gesagt hat POST/GET Daten nie unmaskiert verwenden. mysl_real_escape_string(); und htmlentities(); helfen hier weiter...
Es gab hier letztens auch einen Thread dazu, indem diese Thematik beschrieben wurde.
Zuletzt bearbeitet von Smooth-Graphics am Mi 11.06.2008 16:32, insgesamt 2-mal bearbeitet
|
|
|
|
|
pRiMUS
Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht:
|
Verfasst Mi 11.06.2008 17:57
Titel
|
|
|
und wieso ist in der where klausel nur der username? wieso nicht gleich nach username und passwort prüfen? dann ersparst du dir das anschliessende prüfen mit php.
Code: |
$sql = "select id from tabelle where username = '". mysql_real_escape_string($username) ."' and passwort = '". md5($passwort) ."'";
$query = mysql_query($sql);
if (mysql_num_rows($query) == 1) {
// do some login sh*t here
} else {
// do some error sh*t here
}
|
|
|
|
|
|
Smooth-Graphics
Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 11.06.2008 18:05
Titel
|
|
|
pRiMUS hat geschrieben: | und wieso ist in der where klausel nur der username? wieso nicht gleich nach username und passwort prüfen? dann ersparst du dir das anschliessende prüfen mit php. |
Stimmt, das hab ich ja ganz übersehn... pRiMUS so gehörts natürlich!
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 11.06.2008 19:20
Titel
|
|
|
Smooth-Graphics hat geschrieben: | LIMIT auch nicht, es sollte eigentlich nur ein Ergebnis herauskommen, sonst läuft eh was falsch. |
LIMIT 1 und korrekte Indizies (beim Login z.B. auf email adresse / benutzername und passwort) kann zur
Performance Optimierung genutzt werden.
|
|
|
|
|
|
|
|
Ähnliche Themen |
[PHP] Problem mit weiterleitung in Loginscript
Suche - Loginscript mit Userverwaltung
Loginscript funktioniert nicht unter PHP 4
Formmailer-Problem-neues problem
CSS-Problem im IE7
CSS Problem
|
|