Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » Frage zu PHP-Sessions Antworten
Frage zu PHP-Sessions

ramon
Pixelschubser


Beiträge: 2


Habe mich mal ein wenig damit beschäftigt, da ich eine mysql datenbank anwendung in Verbindung mit PHP habe, und dieses über ein Login-System steuern möchte.

Dazu verwenden will ich die PHP-Session, und habe eigentlich auch schon geschafft was ich wollte,nur sieht man das ein bissl zu "einfach" aus, und ich wollte mal fragen ob da jetzt noch irgendwas fehlt, oder alles stimmt, oder wie !?


hier mal meine login.php - ist denke ich selbterklärend:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58:
<?

require "dbconnect.php";
connectToMyDatabase();
?>
<html>
    <head>
        <title>...please log in !!!</title>
    </head>
    <body>




 <form method="POST" action="<?=$PHP_SELF; ?>">
  <p>user:
  <input type="text" name="userName" size="20"></p>
  <p>password:
  <input type="password" name="password" size="20"></p>
  <p><input type="submit" value="senden" name="send"></p>
</form>

<?


$userName = $_POST['userName'];
$password = $_POST['password'];

$query = "SELECT  user_name, password
FROM  vm_user
WHERE user_name = '$userName'";

$result=mysql_query($query);
while ($daten=mysql_fetch_array($result, MYSQL_ASSOC))
{
	  $user = "$daten[user_name]";
	  $pw = "$daten[password]";
}

if (isset($_POST['password'])) {

						if(("$user" == "$userName") && ("$pw" == "$password")) {
							session_start();
							$_SESSION["user"] = $_POST['userName'];
							header("LOCATION: vinyl_own.php?".strip_tags(SID) );		
						}
						else
							
							header("LOCATION: login_failt.php");

}

?>

</body>
</html>


und in den anderen, nächsten dateien mache ich nur n session_start() und hole mir den gespeicherten namen mit

$user = $_SESSION["user"];

und die $user nehme ich dann für die datenbankbefehle als usernamen halt, wo entsprechende db-einträge editiert oder gelöscht werden können und so.

mehr ist das nicht, und das is so ein korrektes login system ? Oder muss ich doch noch irgendwo was vergleichen oder so.


zu der datei oben habe ich auch eine frage noch:

die variablen $user und $password kann er ja erst korrekt belegen,wenn das formular abgeschickt wird, und dann macht er mit den variablen noch die db-abfrage um die die daten für den vergleich zu bekommen ? Ich meine,es geht ja,verstehe nur nicht ganz warum, weil die variablen ja erst belegt werden können,wenn das formular abgeschickt wird !?

  Profil   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


Üblicherweise arbeitet man intern mit ids - der Benutzername kann sich "theoretisch" auch ändern.

Fehlen tut das Absichern der Formularwerte für das SQL mit mysql_real_escape_string(). Wenn du Pech hast, gibt ein Angreifer einfach SQL statt dem Benuzternamen/Passwort an und modifiziert deine SQL-Query so, dass er kein Passwort mehr benötigt. Bedenke das dies innerhalb von PHP ein einfacher String ist. Erst das DBMS interpretiert ihn.

---
Weaverslave

  Profil   Website   Editieren   Zitieren

ramon
Pixelschubser


Beiträge: 2


wegen den ID´s.

frage zwar den usernamen ab und vergleiche den,aber habe den in der datenbank nur an einer stelle beim benutzer halt stehen... ändere ich den ab, oder einer will den ändenr,dann klappt das alles nach wievor ,weil ich in den anderen tabellen mit den ID´s arbeite, in der datenbank, dann passt das doch oder nicht ?

kannste mein beispiel mal hier hin schrieben wie das richtig heissen mus bezüglich der angriffe von aussen ?

Diese Nachricht wurde geändert von: ramon
  Profil   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


Beim Login selbst arbeitet man natürlich mit dem Benutzernamen. Ich würde jedoch die ID des Benutzers in der Session ablegen.

Im Manual findest du ein Beispiel zu mysql_real_escape_string().

---
Weaverslave

  Profil   Website   Editieren   Zitieren
 

Antworten
Nach oben