| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

15-01-2011, 14:55
|
|
jeansofive
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 35
|
|
Datum beim Login speichern
Hallo ich bin neu in Sachen PHP und MySQL,
ich habe folgendes Problem: Ich habe folgendes Login Script für meine HP möchte gern beim anmelden die Zeit in meiner MySQL DB sichern und sie beim nächsten mal ausgeben damit derjenige weiß wann er sich zuletzt angemeldet hat. Könntet ihr mir einen Rat geben wie ich das mache?
PHP-Code:
<?php session_start (); require_once ("../../../db/dbconnect.php"); $connectionid = mysql_connect ($dbhost,$dbuser,$dbpass); if (!mysql_select_db ("$dbname", $connectionid)) { die ("Keine Verbindung zur Datenbank"); }
$sql = "SELECT ". "id, username, vorname, nachname ". "FROM ". "user ". "WHERE ". "(username like '".$_REQUEST["username"]."') AND ". "(passwort = '".md5 ($_REQUEST["passwort"])."')";
$result = mysql_query ($sql);
if (mysql_num_rows ($result) > 0) { $data = mysql_fetch_array ($result); $_SESSION["user_id"] = $data["id"]; $_SESSION["user_username"] = $data["username"]; $_SESSION["user_nachname"] = $data["nachname"]; $_SESSION["user_vorname"] = $data["vorname"];
header ("Location: ../../../"); } else { header ("Location: index.php?false=1"); } ?>
Für Antworten wäre ich sehr dankbar
|

15-01-2011, 15:00
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Du musst eine neue Spalte anlegen (zB: last_login) und beim Login ein UPDATE machen und den Wert in dieser Spalte aktualisieren.
In der Location des Headers muss übrigens eine absolute URL stehen. "index.php", "../../.." usw. sind nicht zulässig, auch wenn sie häufig funktionieren (aber nicht immer).
String-Werte, die du in Datenbankabfragen einbaust, müssen immer escaped werden, da ein Angreifer sonst beliebigen Code einschleusen und Allerlei Schaden anrichten könnte. Im Extremfall wird der Server gehackt und für kriminelle Tätigkeiten missbraucht (zB. Verbreitung von Kinderpornos).
PHP: SQL Injection - Manual
Beim Benutzername solltest du kein LIKE verwenden, da sich sonst jeder einloggen kann, der irgendein Passwort irgendeines Users errät.
Geändert von h3ll (15-01-2011 um 15:05 Uhr)
|

15-01-2011, 15:16
|
|
jeansofive
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 35
|
|
hey danke für die antwort  nur wo und wie (schreibe) setze ich dieses Update? meine spalte in mysql heißt "letzter_login". und wie geht das mit dem escapen? könnte man den login so jetzt hacken?
|

15-01-2011, 15:24
|
|
jeansofive
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 35
|
|
ich habe das "like" durch ein "=" ersetzt, so oder?
jetzt müssen beide übereinstimmen mit der sql tabelle?!
|

15-01-2011, 15:40
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von jeansofive
hey danke für die antwort  nur wo und wie (schreibe) setze ich dieses Update?
|
Nachdem du den Benutzer verifiziert hast.
Zitat:
Zitat von jeansofive
und wie geht das mit dem escapen?
|
Ich hab den Link nicht aus persönlichem Spaß gepostet.
Zitat:
Zitat von jeansofive
könnte man den login so jetzt hacken?
|
Ja, mit Leichtigkeit.
|

15-01-2011, 15:51
|
|
jeansofive
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 35
|
|
ok hab ich geändert mit escape. muss ich das auch auf der seite machen, wo ich neue benutzer hinzufüge? alle unterseiten werden durch eine checkuser.php überprüft ob derjenige auch angemeldet ist und eine gültige session besitzt die ja nur über das login geht und die ist ja geschützt. kannst du mir bitte noch einmal mit dem update helfen? wie schreibe ich das? dafür wäre ich dir sehr sehr dankbar!
|

15-01-2011, 16:00
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von jeansofive
ok hab ich geändert mit escape. muss ich das auch auf der seite machen, wo ich neue benutzer hinzufüge?
|
"String-Werte, die du in Datenbankabfragen einbaust, müssen immer escaped werden" ist doch ziemlich eindeutig, oder?
Zitat:
Zitat von jeansofive
alle unterseiten werden durch eine checkuser.php überprüft ob derjenige auch angemeldet ist und eine gültige session besitzt die ja nur über das login geht und die ist ja geschützt. kannst du mir bitte noch einmal mit dem update helfen? wie schreibe ich das? dafür wäre ich dir sehr sehr dankbar! 
|
Steht in jedem Grundlagen-Tutorial und auch im MySQL-Handbuch.
|

15-01-2011, 16:15
|
|
jeansofive
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 35
|
|
PHP-Code:
<?php session_start(); include ("../../../db/dbconnect.php");
$username = $_POST['username']; $passwort = $_POST['passwort'];
mysql_select_db($dbname); $sql = "SELECT * FROM user WHERE username= '". mysql_escape_string($username)."' AND passwort= '".md5 (mysql_escape_string($passwort))."'"; $result = mysql_query($sql); if(mysql_num_rows($result) > 0) { $data = mysql_fetch_array($result); $_SESSION["user_id"] = $data["id"]; $_SESSION["user_username"] = $data["username"]; header('Location: ../../../index.php'); exit(); } else { header('Location: index.php'); exit(); } ?>
 ist das so jetzt sicher(er) ?
oder soll ich anstatt md5 sha1 verwenden?
|

15-01-2011, 17:50
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Benutzer mysql_real_escape_string()!
Verwende absulote URLs for Location-Header!
Prüfe das Ergebnis von mysql_query()!
|

15-01-2011, 17:53
|
|
jeansofive
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 35
|
|
Zitat:
Zitat von onemorenerd
Prüfe das Ergebnis von mysql_query()!
|
tue ich dies nicht mit
PHP-Code:
if (mysql_num_rows($result) > 0)
?
und wenn nicht, wie muss ich es dann machen?
|

15-01-2011, 18:06
|
|
jeansofive
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 35
|
|
Update für Login Zeit in Login Script
Hallo
ich möchte gerne die Einlogg Zeit eines Users speichern, damit er nachschauen kann wann er sich eingeloggt hat. Leider funktioniert das nicht mit meinem Script. Kann mir jemand sagen wo der Fehler liegt? 
PHP-Code:
<?php session_start(); include ("../../../db/dbconnect.php"); $username = $_POST['username']; $passwort = $_POST['passwort']; mysql_select_db($dbname);
mysql_query("UPDATE user SET letzter_login = '22323232' WHERE id= '". mysql_escape_string($id)."' AND username= '". mysql_escape_string($username)."';
$sql = "SELECT * FROM user WHERE username= '". mysql_escape_string($username)."' AND passwort= '".sha1 (mysql_escape_string($passwort))."'"; $result = mysql_query($sql); if(mysql_num_rows($result) > 0) { $data = mysql_fetch_array($result); $_SESSION["user_id"] = $data["id"]; $_SESSION["user_username"] = $data["username"]; header('Location: ../../../'); exit(); } else { header ("Location: index.php?false=1"); exit(); } ?>
|

15-01-2011, 18:47
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Reicht ein Thread nicht?
|

16-01-2011, 01:41
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Ein Thread muss reichen! *merge* *verwarn*
|

16-01-2011, 03:06
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Schon das Syntax Highlighting sagt mir, dass du einen Parse Error bekommst, weil du die Anführungszeichen verwechselst. Die exakte Fehlermeldung zu erwähnen gehört in jedem Forum dazu, das steht auch in den Forenregeln, die du jetzt bitte sofort liest.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|