PHP Login (Zugriff auf seite nur für User)
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
aussehen
beispiel
benutzername
bereich
code
dank
datenbank
datum
dauer
ergebnis
falsch login
header
http
index
limit
login
tag
url
verbindung
-
Hi.
ich habe folgendes PHP-Script für den Login:
<?php session_start(); ?> <?php $verbindung = mysql_connect("mysql.lima-city.de", "USERNAME" , "PASSWORT") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql_select_db("db-name") 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>"; } ?>
Wie muss der PHP tag/code">code auf eben der Geheim.php aussehen, dassman en man nciht eingeloggt ist, automatisch wieder auf die login.html geleitet wird???
danke & lg -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
So:
if(!isset($_SESSION["username"])){ header("Location: index.php"); exit; }
Beitrag zuletzt geändert: 11.2.2011 21:03:42 von misterbasti -
also vor dem <html> tag einen
< php
if(!isset($_SESSION["username"])){
header("Location: login.php");
exit;
}
?>
rein? -
mtw-datenbank schrieb:
also vor dem <html> tag einen
< php
if(!isset($_SESSION["username"])){
header("Location: login.php");
exit;
}
?>
rein?
Ja.
Man kann den Skript auch relativ einfach um einen Status erweitern. Nimm einfach eine variable dafür und prüfe ob diese gleich dem entsprechenden Wert für die jeweilige Benutzerstufe ist.
MfG -
Hiho,
dein Skript ist anfällig für SQL Injections, bevor du etwas an deine Datenbank schickst, was von einem User kommt, musst du diese Daten überprüfen, und ggf. unerlaubte Zeichen ausschließen.
Am einfachsten kann das zum Beispiel so aussehen:
[...] $verbindung = mysql_connect("mysql.lima-city.de", "USERNAME" , "PASSWORT") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql_select_db("db-name") or die ("Datenbank konnte nicht ausgewählt werden"); $username = mysql_real_escape_string($_POST["username"], $verbindung); $passwort = md5($_POST["password"]); $abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1"; [...]
-
also mach ich das
< php
verbindung = mysql_connect("mysql.lima-city.de", "USERNAME" , "PASSWORT")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db("db-name") or die ("Datenbank konnte nicht ausgewählt werden");
$username = mysql_real_escape_string($_POST["username"], $verbindung);
$passwort = md5($_POST["password"]);
$abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
if(!isset($_SESSION["username"])){
header("Location: login.php");
exit;
}
?>
vor den HTML?
-
Hiho,
anscheinend bringst du die Dinge nun durcheinander.
Du hast das PHP Skript, welches die Überprüfung der Daten vornimmt und danach entscheidet, ob die Login-Daten gültig sind. Das PHP Skript kannst du von einer HTML Seite aufrufen lassen, welches ein Eingabeformular zur Verfügung stellt, oder du baust das Formular und die Auswertung in eine Datei. Dazu lies dir bitte den Artikel Affenformular durch.
Dann hast du deine Seiten, die man nur sehen soll, wenn man authentifiziert ist, dazu dient dieser Code am Anfang der Seiten (diese müssen dann die Endung .php haben anstatt .html)
<?php if(!isset($_SESSION["username"])){ header("Location: index.php"); exit; } ?> <!-- dann folgt die eigentliche HTML Seite -->
Das "Verarbeitungsskript" sieht nach wie vor so aus:
<?php session_start(); $verbindung = mysql_connect("mysql.lima-city.de", "USERNAME" , "PASSWORT") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql_select_db("db-name") or die ("Datenbank konnte nicht ausgewählt werden"); $username = mysql_real_escape_string($_POST["username"], $verbindung); $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>"; } ?>
Beitrag zuletzt geändert: 12.2.2011 13:50:13 von justarustyspoon -
danke.
doch wenn cih das so mache, klappt registrierung & Login, auf der index.php erscheint jedoch immer< php if(!isset($_SESSION["username"])){ header("Location: login.php"); exit; } ?>
VOR dem Siteninhalt -
Damit PHP Code ausgeführt wird, welcher zwischen <?php und ?> steht, muss die Dateiendung .php sein und nicht .html. Überprüf das mal. Eigentlich wird PHP Code nämlich nicht im Browser angezeigt. ^^
Edit:
Oh habe gerade gesehen, dass du ein Leerzeichen zwischen < und ? hast. Es muss schon <?php und nicht < ?php sein.
Solltest du mehr wollen, als nur mal PHP zu probieren, solltest du die Grundlagen lernen, auf Dauer wird dir niemand alles vorkauen.
Im Internet gibt es zwar genügend Tutorials, da weiß Google sicherlich mehr als ich, aber ich persönlich bevorzuge das altmodische Medium. Und da würde ich nach einem drei Punkte Plan vorgehen.
Für den Einstieg
Für den Spaß
Für weitere Ambitionen
Beitrag zuletzt geändert: 12.2.2011 14:17:42 von justarustyspoon -
Hi.
Danke, das Leerzeichen war schuld.
Jetzt das nächste problem.
Ich logge mcih ein, und werde auf die index.php verlinkt.
Diese leitet mcih jedoch sofort wieder auf die login.html weiter...
woran liegt das? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage