WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Frage zu PHP-Sessions » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Die letzten 5 Postings in diesem Thema » Alle anzeigen
von subjective
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().
von ramon
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 ?
von subjective
Ü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.
von ramon
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 !?

Nach oben