Login-Skript in PHP und mit MySQL |
||
---|---|---|
#0
| ||
24.12.2005, 00:24
Member
Beiträge: 328 |
||
|
||
24.12.2005, 12:31
Member
Beiträge: 5291 |
#2
Zitat Info: Ich habe die Passwörter beim Anlegen der User per "PASSWORD()" verschlüsselt in der Datenbank abgelegt. Könnte es daran liegen?Dann musst du sie auch per PASSWORD() filtern. Erstmal $_REQUEST mit $_POST ersetzen, und dein coding ist bissl unsauber. Achte besser darauf das alles gleich ist also zb. sowas wie zwischen ) und ; leerzeichen das ist nicht schön sowas am besten vermeiden. All solche Kleinigkeiten. Zitat $sql_query = mysql_query("SELECT password FROM user WHERENicht gut, hab da ne bessere Idee Code $sql_query=mysql_query("SELECT * FROM user WHERE user like "'.$username.'" AND password like PASSWORD("'.$password.'")');So muss das sein. Als Referenz schau dir die an: http://www.ninth-art.de/files/phps/session.inc.phps http://www.ninth-art.de/files/phps/DB.inc.phps __________ E-Mail: therion at ninth-art dot de IRC: megatherion @ Freenode Dieser Beitrag wurde am 24.12.2005 um 12:35 Uhr von Xeper editiert.
|
|
|
||
24.12.2005, 12:56
Member
Themenstarter Beiträge: 328 |
#3
Hi!
Erst mal danke für die Antwort! Ich habe nun ein Teil des Skriptes, wie du vorgeschlagen hast: Codezeile 16 PHP Code
Nun wird mir aber ein Fehler in Codezeile 16 gemeldet: Zitat Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /*/login.php on line 16MfG J!M! |
|
|
||
24.12.2005, 13:02
Member
Beiträge: 5291 |
#4
Oh ja
Code $sql_query=mysql_query('SELECT password FROM user WHERE username like "'.$username.'" AND password like PASSWORD("'.$password.'")');Versuchs so __________ E-Mail: therion at ninth-art dot de IRC: megatherion @ Freenode |
|
|
||
24.12.2005, 13:15
Member
Themenstarter Beiträge: 328 |
#5
:-( :-( :-(
Jetzt bin ich wieder bei meinem alten Problem. Zwar kein Syntaxfehler etc., aber es wird nun wieder immer der Teil in "else{}" ausgeführt. Ich zweifle schon langsam daran, ob es Probleme gab, als ich die User angelegt habe. Aber eigentlich dürfte da nichts sein, denn ich habe den User schon mehrmals gelöscht und angelegt... Vielleicht noch mal das ganze Skript...: PHP Code
Mfg J!M! |
|
|
||
24.12.2005, 13:20
Member
Beiträge: 5291 |
#6
Code <?phpGehts so? __________ E-Mail: therion at ninth-art dot de IRC: megatherion @ Freenode |
|
|
||
24.12.2005, 13:27
Member
Themenstarter Beiträge: 328 |
#7
Habe so was ähnliches gestern auch im Inet gefunden... Hat nicht funktioniert...
Aber das von dir funktioniert!!! Danke!!! Merci!!! ;-) Wo wir gerade dabei sind, kannst du mir vielleicht das Prinzip (also mit "mysql_num_rows()>0") hier in Worten erläutern? Ich blicke da nämlich nicht durch, aber ich bin ja lerneifrig... ;-) Mfg J!M! |
|
|
||
24.12.2005, 13:31
Member
Beiträge: 5291 |
#8
Ganz einfach, die mysql Abfrage Sucht in der table password nach Übereinstimmungen in den Feldern username und password.
mysql_num_rows zählt die Ergebnesse von $sql_query wenn mehr als 0 gefunden wurde gibts true ansonsten false. Natürlich geh ich davon aus das jede username/password Kombination einzigartig ist - ansonsten ist diese if() Abfrage nicht mehr sicher. __________ E-Mail: therion at ninth-art dot de IRC: megatherion @ Freenode |
|
|
||
24.12.2005, 14:42
Member
Themenstarter Beiträge: 328 |
#9
Und dann noch eine kurze Frage.
Sie gehört zwar nicht mehr ganz so zum Thema, aber ich wollte keinen neuen Topic öffnen: Wie kann ich die Session-ID an eine IP-Nummer binden? und... Wie kann ich eine Fallunterscheidung machen, ob eine Session vorhanden ist? MfG J!M! Dieser Beitrag wurde am 24.12.2005 um 14:56 Uhr von J!M! editiert.
|
|
|
||
24.12.2005, 18:07
Member
Beiträge: 5291 |
#10
Zitat Wie kann ich eine Fallunterscheidung machen, ob eine Session vorhanden ist? Code session_name("foo");Halt so wie in den link den ich dir gegeben hatte. Zitat Wie kann ich die Session-ID an eine IP-Nummer binden? Code session_id(getenv("REMOTE_ADDR")); __________ E-Mail: therion at ninth-art dot de IRC: megatherion @ Freenode |
|
|
||
25.12.2005, 12:05
Member
Themenstarter Beiträge: 328 |
#11
Zitat Wie kann ich die Session-ID an eine IP-Nummer binden?Die Frage war ein bisschen missverstädnlich gestellt von mir. Ich meinte eigenltich etwas anderes. Also, wenn du z.B. sagen wir mal in deinem Postfach drinne bist. Dann kappt irgendwie die Inet-Verbindung, aber du hast die Seite noch auf. Dann verbindest du dich wieder mit dem Inet, dann hat sich ja deine IP geändert. Wenn ich jetzt noch eine Aktion ausführen will, dann wird bei mir z.B. angezeigt, dass die Session an eine andere IP gebunden ist. Ich muss mich dann wieder neu anmelden. Sowas möchte ich auch machen. Dies soll als zusätzliche Sicherheitsvorkehrung agieren. Es kann ja mal sein, dass irgendwie die Session-ID "ausgespannt" wird. Wenn ich aber die SID noch mit einer IP verbinde, dann nützt ihm die SID auch nicht viel. Und ich glaube nicht, dass er die SID hat, und noch die zugehörige IP gespooft hat. In diesem Fall ist die SID wie ein Benutzername und die IP-Nummer das zugehörige Passwort. So denke ich mir es zumindest... hehe ;-) MfG J!M! |
|
|
||
25.12.2005, 23:16
Member
Beiträge: 5291 |
#12
Zitat Also, wenn du z.B. sagen wir mal in deinem Postfach drinne bist. Dann kappt irgendwie die Inet-Verbindung, aber du hast die Seite noch auf. Dann verbindest du dich wieder mit dem Inet, dann hat sich ja deine IP geändert. Wenn ich jetzt noch eine Aktion ausführen will, dann wird bei mir z.B. angezeigt, dass die Session an eine andere IP gebunden ist. Ich muss mich dann wieder neu anmelden.Oh ja das is ja sowieso klar wenn du kein logout machst gibts nen timeout auf der session oder gar keinen - dass kann man einstellen - da solltest du dich am besten selbst auf www.php.net informieren. Solche Einstellungen kann man per ini_set() manipulieren, oder direkt in der php.ini des servers. __________ E-Mail: therion at ninth-art dot de IRC: megatherion @ Freenode |
|
|
||
26.12.2005, 11:40
...neu hier
Beiträge: 3 |
#13
Hallo!
Schau Dir mal diesen Link an, da findest du unter anderem die Bindung der Session an eine IP http://www.phptuts.de/18/sessions.html Gruß Philipp |
|
|
||
03.01.2006, 01:25
Member
Beiträge: 30 |
#14
hi j!m!,
so sollte dein code wahrscheinlich funktionieren (ich hab nur den fehler korrigiert, den ich grad sah, keine ahnung obs noch mehr hat :-P): PHP Code Dies:PHP Code macht einen array aus der obersten zeile die aus der datenbank kommt. Das ganze kannst du dann eben so abrufen:PHP Code __________ greez honk |
|
|
||
04.01.2006, 01:35
...neu hier
Beiträge: 2 |
#15
Moin
War grad auch auf der suche nach so einem Login, nur mein problem ist das es bei mit nicht funktioniert. Bein Brwoser gibt immer Zitat Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in E:\Xampp\xampp\htdocs\login\login.php on line 15aus. Woran kann das liegen?? Mein php code sieht z.ZT. so aus $username=$_POST['username']; $password=$_POST['password']; $sql_query=mysql_query('SELECT password FROM user WHERE username like "'.$username.'" AND password like PASSWORD("'.$password.'")'); if (mysql_num_rows($sql_query)>0) { echo "Willkommen, $username!"; $SQL = "INSERT INTO member (online) VALUES ( NOW (''))"; } else if (($username!=$test->nick) || ($password!=$test->passwort)) { echo"Der User und/oder das Passwort wurden nicht gefunden!"; } MFG -=TeWeS=- |
|
|
||
Ich sitze schon an einem Tag an einem Login-Skript!
Ich verzweifle...
Also, erst mal das Skript:
PHP Code
Das Skript ist schon so einigen Stadien durchlaufen... Es hatte nie richtig funktioniert.
Die Datenbankverbindungen und Datenbankabfragen waren immer fehlerfrei, denn das habe ich schon öfters durch else{]-Anweisungen bzw. mit der Funktion "or die()" kontrolliert.
Ich habe schon gegoogelt: Entweder waren die Login-Skripts auch fehlerhaft, oder sie waren nicht für mich geeignet.
Ich weiß nicht ob es nun an der Syntax liegt oder an der Logik/Funktionsweise.
Ich habe es auch schon mit "mysql_fetch_object" und "mysql_fetch_assoc" statt "mysql_fetch_array" probiert. But nothing is workin' !
Info: Ich habe die Passwörter beim Anlegen der User per "PASSWORD()" verschlüsselt in der Datenbank abgelegt. Könnte es daran liegen?
Mfg J!M!