php/mysql login
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beispiel
benutzername
bereich
code
dank
datei
datenbank
ergebnis
erstellen
falsch login
http
limit
login
not
null
sicherheit
speichern
tabelle
url
verbindung
-
spieleweb schrieb:
Beispiel
Datei: login.php
<?php // ------------------------------------------------- session_start(); // ------------------------------------------------- ?> <html> <head> <title>Login Test</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#FFFFFF" text="#000000"> <?php // ------------------------------------------------- if (!empty($_POST['uname'])) { $login_uname = trim($_POST['uname']); } else { $login_uname = ''; } if (!empty($_POST['upass'])) { $login_upass = trim($_POST['upass']); } else { $login_upass = ''; } // ------------------------------------------------- if (!empty($login_uname) && !empty($login_upass)) { // ------------------------------------------------- $con = mysql_connect("localhost", "BenutzerName" , "DeinPasswort") or die("ERROR ... mysql_connect"); $sel = mysql_select_db("datenbank_name", $con) or die ("ERROR ... mysql_select_db"); $login_uname = mysql_real_escape_string($login_uname); $login_upass = mysql_real_escape_string($login_upass); $abfrage1 = "SELECT username, passwort FROM login WHERE username='$username' LIMIT 1"; $ergebnis = mysql_query($abfrage1) or die ("ERROR ... mysql_query"); $row = mysql_fetch_object($ergebnis); // ------------------------------------------------- $logpass_hash = md5($login_upass); if($row->passwort == $logpass_hash) { $_SESSION["username"] = $login_uname; $_SESSION["loggedin"] = TRUE; header("Location: userbereich.php"); ## echo "<br> Login erfolgreich. ... <a href=\"userbereich.php\">Geschützer Bereich</a> \n"; } else { echo "<br> Benutzername und/oder Passwort waren falsch. <a href=\"login.php\">Login</a> \n"; } // ------------------------------------------------- } else { // ------------------------------------------------- ?> <br> <br> <br> <form name="formular1" method="post" action="login.php"> Username: <input type="text" name="uname" size="30" maxlength="100"> <br> Passwort: <input type="password" name="upass" size="30" maxlength="100"> <br> OK: <input type="submit" name="run" value="Login"> </form> <br> <br> <br> <?php // ------------------------------------------------- } // ------------------------------------------------- ?> </body> </html>
beachte .. wenn Du das Passwort bein Erstellen als md5() Hash gespeichert hast,
dann musst Du nach dem Login auch das User-Passwort als md5() Hash prüfen
siehe:
... $logpass_hash = md5($login_upass); if($row->passwort == $logpass_hash) { ...
wichtig ... beim Neu Erstellen (in DB speichern) solltest Du User-Eingaben
auch (immer) mit mysql_real_escape_string() behandeln, ,zur Sicherheit !!!
PS: ich habe in diesem Beispiel die Ziel-Seite nach erfolgreichem Login
nicht "geheim.php" sondern "userbereich.php" genannt
und warum die überprüfung der daten und verbindung zur db in der selben Datei. Das kann er ja auch auf ne externe datei auslagern und dann mit action aufrufen ;)
is (wie ich finde) übersichtlicher und einfacher... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hey, ich habe angefangen PHP zu lernen.
Jetzt steige ich auf MySQL Datenbänke um.
Ich habe diese Beschreibung durchgelesen und auch durchgeführt. http://www.php-einfach.de/tuts_mysql_login.php
Aber jetzt habe ich das Problem mit der MySql Datenbank
Da steht drinne, dass die Datenbank so aussehen soll:
id, int, 8, unsigned, not null, , auto_increment, primary, , username, varchar, 150, not null, , , , , passwort, varchar, 32, not null, , , , ,
Aber das ist bei PHP Admin nicht möglich.
Hat jemand hier Vorschläge, was ich machen könnte?
Eintragen.php
<?php $verbindung = mysql_connect("localhost", "Benutzername" , "Passwort") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql_select_db("homepage") or die ("Datenbank konnte nicht ausgewählt werden"); $username = $_POST["username"]; $passwort = $_POST["passwort"]; $passwort2 = $_POST["passwort2"]; if($passwort != $passwort2 OR $username == "" OR $passwort == "") { echo "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"eintragen.html\">Zurück</a>"; exit; } $passwort = md5($passwort); $result = mysql_query("SELECT id FROM login WHERE username LIKE '$username'"); $menge = mysql_num_rows($result); if($menge == 0) { $eintrag = "INSERT INTO login (username, passwort) VALUES ('$username', '$passwort')"; $eintragen = mysql_query($eintrag); if($eintragen == true) { echo "Benutzername <b>$username</b> wurde erstellt. <a href=\"login.html\">Login</a>"; } else { echo "Fehler beim Speichern des Benutzernames. <a href=\"eintragen.html\">Zurück</a>"; } } else { echo "Benutzername schon vorhanden. <a href=\"eintragen.html\">Zurück</a>"; } ?>
Login.php
<?php session_start(); ?> <?php $verbindung = mysql_connect("localhost", "BenutzerName" , "DeinPasswort") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql_select_db("homepage") or die ("Datenbank konnte nicht ausgewählt werden"); $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>"; } ?>
Gruß LeyUp -
skateen schrieb:
Aber das ist bei PHP Admin nicht möglich.
Warum sollte das nicht möglich sein? Oder besser gefragt: woran scheiterst Du dabei? -
fatfreddy schrieb:
skateen schrieb:
Aber das ist bei PHP Admin nicht möglich.
Warum sollte das nicht möglich sein? Oder besser gefragt: woran scheiterst Du dabei?
Diese Einstellung:
id, int, 8, unsigned, not null, , auto_increment, primary, ,
username, varchar, 150, not null, , , , ,
passwort, varchar, 32, not null, , , , ,
Das was dick ist, ist in dieser Version nicht möglich. -
skateen schrieb:
[...]
Diese Einstellung:
id, int, 8, unsigned, not null, , auto_increment, primary, ,
username, varchar, 150, not null, , , , ,
passwort, varchar, 32, not null, , , , ,
Das was dick ist, ist in dieser Version nicht möglich.
Klar ist das möglich!
> Einfach den SQL-Code ausführen lassen oder not null = kein Häckchen bei "Null" machen, auto_increment = Häckchen bei A_I machen, du hast halt bloß keine Ahnung, wie deine Befehle abgekürzt werden -
das php.net-tut an der stelle ist ungeeignet, wenn du MySQL lernen willst, weil das sich auf die Interaktion mit PHP bezieht und gewisse MySQL Kenntnisse voraussetzt.
für MySQL bitte dann hier weiter lesen:
http://dev.mysql.com/doc/refman/5.1/de/tutorial.html
da stehen die SQL Statements drin, um eine Tabelle anzulegen... sonst ist es unwahrscheinlich, dass du mit php MyAdmin klar kommst. dann kansnt du auch diese Zeilen interpretieren... vorher vielleicht noch ein Kapitel zu relationalen Datenbanken lesen, damit du weißt, was du da tust.
und man steigt nicht von PHP auf MySQL um, sondern MySQL ist eine Scriptsprache, um die Vergesslichkeit von PHP zu fixen und Daten wegzuspeichern und abzurufen...
also für dein Allgemeinverständnis solltest du das hier eher lesen, um zu verstehen, was MySQL ist und wie die Datenbanken heutzutage aufgebaut sind...
http://dev.mysql.com/doc/refman/5.1/de/what-is.html
denn es bringt dir nichts auf teufel komm raus fertige Scripte zu übernehmen, wenn du die Basis nicht verstehst. dann kannst du vielleicht das Script umsetzen, weißt aber nciht, was damit passiert... arbeiten mit einer BlackBox sollte man sich als angehender Webentwickler, egal ob Hobbyebene oder auf Professioneller Ebene von Anfang an verkneifen, sonst wirst du dein Handwerk nicht beherrschen.
und die Scripte, die du da hast musst du um die entsprechende sql-syntax ergänzen, wenn die tabellen noch nicht existieren und da fehlt definitiv ein CREATE TABLE...
wie das dann aussieht als beispiel siehst du auf dieser Seite:
http://www.gieson.com/school/mysql/
PS: da ich auch zu faul bin die Scripte manuell zu schreiben, erstelle ich die DBs mit MySQL Workbench... nettes Tool, aber etwas Kompliziert... dafür kann man übersichtlich größere Projekte damit anlegen, ohne sich zu verhaspeln
Beitrag zuletzt geändert: 30.10.2013 17:49:45 von sebulon -
sebulon schrieb:
das php.net-tut an der stelle ist ungeeignet, wenn du MySQL lernen willst, weil das sich auf die Interaktion mit PHP bezieht und gewisse MySQL Kenntnisse voraussetzt.
für MySQL bitte dann hier weiter lesen:
http://dev.mysql.com/doc/refman/5.1/de/tutorial.html
da stehen die SQL Statements drin, um eine Tabelle anzulegen... sonst ist es unwahrscheinlich, dass du mit php MyAdmin klar kommst. dann kansnt du auch diese Zeilen interpretieren... vorher vielleicht noch ein Kapitel zu relationalen Datenbanken lesen, damit du weißt, was du da tust.
und man steigt nicht von PHP auf MySQL um, sondern MySQL ist eine Scriptsprache, um die Vergesslichkeit von PHP zu fixen und Daten wegzuspeichern und abzurufen...
also für dein Allgemeinverständnis solltest du das hier eher lesen, um zu verstehen, was MySQL ist und wie die Datenbanken heutzutage aufgebaut sind...
http://dev.mysql.com/doc/refman/5.1/de/what-is.html
denn es bringt dir nichts auf teufel komm raus fertige Scripte zu übernehmen, wenn du die Basis nicht verstehst. dann kannst du vielleicht das Script umsetzen, weißt aber nciht, was damit passiert... arbeiten mit einer BlackBox sollte man sich als angehender Webentwickler, egal ob Hobbyebene oder auf Professioneller Ebene von Anfang an verkneifen, sonst wirst du dein Handwerk nicht beherrschen.
und die Scripte, die du da hast musst du um die entsprechende sql-syntax ergänzen, wenn die tabellen noch nicht existieren und da fehlt definitiv ein CREATE TABLE...
wie das dann aussieht als beispiel siehst du auf dieser Seite:
http://www.gieson.com/school/mysql/
PS: da ich auch zu faul bin die Scripte manuell zu schreiben, erstelle ich die DBs mit MySQL Workbench... nettes Tool, aber etwas Kompliziert... dafür kann man übersichtlich größere Projekte damit anlegen, ohne sich zu verhaspeln
Danke, werde ich mir als nächstes vornehmen.
webfreclan schrieb:
skateen schrieb:
[...]
Diese Einstellung:
id, int, 8, unsigned, not null, , auto_increment, primary, ,
username, varchar, 150, not null, , , , ,
passwort, varchar, 32, not null, , , , ,
Das was dick ist, ist in dieser Version nicht möglich.
Klar ist das möglich!
> Einfach den SQL-Code ausführen lassen oder not null = kein Häckchen bei "Null" machen, auto_increment = Häckchen bei A_I machen, du hast halt bloß keine Ahnung, wie deine Befehle abgekürzt werden
Oh, danke jetzt Funktioniert es.
Aber mal so eine Frage. Was muss ich hier ändern, wenn ich mehre Passwörter einsetzen mit anderen Links? Das verstehe ich gerade nicht und auf der Seite von denen steht das auch nicht.
<?php $passwort = $_POST["passwort"]; if($passwort=="geheim") { header("Location: http://skateen.lima-city.de/..."); } else { echo "Das Passwort ist leider falsch"; } ?>
Gruß LeyUp
Beitrag zuletzt geändert: 31.10.2013 17:13:00 von skateen -
Beispiel
Datei: login.php
<?php // ------------------------------------------------- session_start(); // ------------------------------------------------- ?> <html> <head> <title>Login Test</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#FFFFFF" text="#000000"> <?php // ------------------------------------------------- if (!empty($_POST['uname'])) { $login_uname = trim($_POST['uname']); } else { $login_uname = ''; } if (!empty($_POST['upass'])) { $login_upass = trim($_POST['upass']); } else { $login_upass = ''; } // ------------------------------------------------- if (!empty($login_uname) && !empty($login_upass)) { // ------------------------------------------------- $con = mysql_connect("localhost", "BenutzerName" , "DeinPasswort") or die("ERROR ... mysql_connect"); $sel = mysql_select_db("datenbank_name", $con) or die ("ERROR ... mysql_select_db"); $login_uname = mysql_real_escape_string($login_uname); $login_upass = mysql_real_escape_string($login_upass); $abfrage1 = "SELECT username, passwort FROM login WHERE username='$username' LIMIT 1"; $ergebnis = mysql_query($abfrage1) or die ("ERROR ... mysql_query"); $row = mysql_fetch_object($ergebnis); // ------------------------------------------------- $logpass_hash = md5($login_upass); if($row->passwort == $logpass_hash) { $_SESSION["username"] = $login_uname; $_SESSION["loggedin"] = TRUE; header("Location: userbereich.php"); ## echo "<br> Login erfolgreich. ... <a href=\"userbereich.php\">Geschützer Bereich</a> \n"; } else { echo "<br> Benutzername und/oder Passwort waren falsch. <a href=\"login.php\">Login</a> \n"; } // ------------------------------------------------- } else { // ------------------------------------------------- ?> <br> <br> <br> <form name="formular1" method="post" action="login.php"> Username: <input type="text" name="uname" size="30" maxlength="100"> <br> Passwort: <input type="password" name="upass" size="30" maxlength="100"> <br> OK: <input type="submit" name="run" value="Login"> </form> <br> <br> <br> <?php // ------------------------------------------------- } // ------------------------------------------------- ?> </body> </html>
beachte .. wenn Du das Passwort bein Erstellen als md5() Hash gespeichert hast,
dann musst Du nach dem Login auch das User-Passwort als md5() Hash prüfen
siehe:
... $logpass_hash = md5($login_upass); if($row->passwort == $logpass_hash) { ...
wichtig ... beim Neu Erstellen (in DB speichern) solltest Du User-Eingaben
auch (immer) mit mysql_real_escape_string() behandeln, ,zur Sicherheit !!!
PS: ich habe in diesem Beispiel die Ziel-Seite nach erfolgreichem Login
nicht "geheim.php" sondern "userbereich.php" genannt
-
spieleweb schrieb:
Beispiel
Datei: login.php
<?php // ------------------------------------------------- session_start(); // ------------------------------------------------- ?> <html> <head> <title>Login Test</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#FFFFFF" text="#000000"> <?php // ------------------------------------------------- if (!empty($_POST['uname'])) { $login_uname = trim($_POST['uname']); } else { $login_uname = ''; } if (!empty($_POST['upass'])) { $login_upass = trim($_POST['upass']); } else { $login_upass = ''; } // ------------------------------------------------- if (!empty($login_uname) && !empty($login_upass)) { // ------------------------------------------------- $con = mysql_connect("localhost", "BenutzerName" , "DeinPasswort") or die("ERROR ... mysql_connect"); $sel = mysql_select_db("datenbank_name", $con) or die ("ERROR ... mysql_select_db"); $login_uname = mysql_real_escape_string($login_uname); $login_upass = mysql_real_escape_string($login_upass); $abfrage1 = "SELECT username, passwort FROM login WHERE username='$username' LIMIT 1"; $ergebnis = mysql_query($abfrage1) or die ("ERROR ... mysql_query"); $row = mysql_fetch_object($ergebnis); // ------------------------------------------------- $logpass_hash = md5($login_upass); if($row->passwort == $logpass_hash) { $_SESSION["username"] = $login_uname; $_SESSION["loggedin"] = TRUE; header("Location: userbereich.php"); ## echo "<br> Login erfolgreich. ... <a href=\"userbereich.php\">Geschützer Bereich</a> \n"; } else { echo "<br> Benutzername und/oder Passwort waren falsch. <a href=\"login.php\">Login</a> \n"; } // ------------------------------------------------- } else { // ------------------------------------------------- ?> <br> <br> <br> <form name="formular1" method="post" action="login.php"> Username: <input type="text" name="uname" size="30" maxlength="100"> <br> Passwort: <input type="password" name="upass" size="30" maxlength="100"> <br> OK: <input type="submit" name="run" value="Login"> </form> <br> <br> <br> <?php // ------------------------------------------------- } // ------------------------------------------------- ?> </body> </html>
beachte .. wenn Du das Passwort bein Erstellen als md5() Hash gespeichert hast,
dann musst Du nach dem Login auch das User-Passwort als md5() Hash prüfen
siehe:
... $logpass_hash = md5($login_upass); if($row->passwort == $logpass_hash) { ...
wichtig ... beim Neu Erstellen (in DB speichern) solltest Du User-Eingaben
auch (immer) mit mysql_real_escape_string() behandeln, ,zur Sicherheit !!!
PS: ich habe in diesem Beispiel die Ziel-Seite nach erfolgreichem Login
nicht "geheim.php" sondern "userbereich.php" genannt
Danke, aber ich hab es doch hinbekommen.
Beitrag zuletzt geändert: 10.11.2013 0:22:39 von skateen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage