nachdem ich mich schon vor längerer zeit hier angemeldet habe und die diskussionen im forum interessiert verfolge, wollte ich hier auch mal was schreiben^^
Ich beginne gerade, php zu lernen und habe mithilfe eines buches versucht, einen geschützten bereich zu erstellen. ich habe also ein formular erstellt in das man die daten eingeben muss, dann werden sie auf richtigkeit überprüft und wenn sie richtig sind, kann man auf die geschützte seite. die abfrage funktioniert soweit, aber ich habe rausgefunden das man auch ohne passwort- und username auf die seite kommt, wenn man den direkten pfad zu der geschützten seite angibt.
Wie kann ich das verhindern??
soltest du das doch mit php machen wollen, musst du auf den geschützten Seiten so ein Code einbauen. Ich weiss ja nicht wie dein Login aussieht, deshalb nur ein Beispiel:
das mit der.htacces habe ich auch schon überlegt, weiß aber nicht was man damit alles machen kann. werd gleichmal danach googlen.
zudem wollte ich das eigentlich schon mit php machen, bin da grad am lernen und sowas gehört - wie ich finde - einfach dazu^^
hier ist mein code:[code]<?php
$benutzer=$HTTP_GET_VARS['benutzer'];
$pass=$HTTP_GET_VARS['pass'];
if($benutzer=="MEINBENUTZERNAME") {
if($pass=="MEINPASSWORT") {
print("<b>Login korrekt</b>");
print("<p>Klicken Sie hier zum Zugang:</p>");
print("<a href='test.html'>Geschuetzter Bereich</a>");
}
else {
print("Benutzername korrekt, Passwort NICHT korrekt!<br><br>");
print("<a href='start.html'>Wiederholen...</a>");
}
}
else {
print("Benutzername NICHT korrekt!<br><br>");
print("<a href='start.html'>Wiederholen</a>");
}
?>[/code]
ich benutze dafür also keine sessions und die variablen habe ich auch nur global deklariert. (Ich habe mir sagen lassen das es besser ist, variablen lokal zu deklarieren. wie müsste ich das dann machen?)
Dür Sessions fügst du am Anfang deines Skrites “session_start();” ein, danach hast du Zugriff auf das Array $_SESSION, deren Inhalt immer gespeichert ist…
<?php
$benutzer=$HTTP_GET_VARS['benutzer'];
$pass=$HTTP_GET_VARS['pass'];
if($benutzer=="MEINBENUTZERNAME") {
if($pass=="MEINPASSWORT") {
print("<b>Login korrekt</b>");
print("<p>Klicken Sie hier zum Zugang:</p>");
session_start();
$_SESSION['user'] = $benutzer;
header("Location: test.php");
exit;
}else {
print("Benutzername korrekt, Passwort NICHT korrekt!<br><br>");
header("Location: start.html");
exit;
}
}else {
print("Benutzername NICHT korrekt!<br><br>");
header("Location: start.html");
exit;
}
?>
// Inhalt der test.php
<?php
session_start();
if(!isset($_SESSION['user'])){
print("Du bist nicht angemeldet!<br><br>");
header("Location: start.html");
exit;
}else{
//Hier dann der geschützte Inhalt
}
?>
schreib Deutsch, das da oben kann keiner lesen
bleib endlich sachlich und hör auf Leute an zu gehen
stimmt nicht was du sagst, bzw. formulierst du es unzureichend, denn
richtig mit session_start(); initialisiert man die Session
$_SESSION ist das Array dieser EINEN Session
der Inhalt ist nicht IMMER gespeichert sondern nur solange wie in life_time festgelegt, oder bis man die Session auflöst.
Was zum Beispiel beim ausloggn erforderlich sein kann, die PHP Methode wäre session_destroy(); wobei Variablen wieder von Hand freigegeben werden müssen, entweder durch $_SESSION=array(); oder durch unset($_SESSION[‘user’]);
Vielen Dank für die Verbesserung…
Nee, im Ernst, stimmt schon, macht auch einen Unterschied, aber versuch bitte das nächste Mal etwas freundlicher zu klingen…
@jay151:
Leserlicher ist der PHP-Code wenn du ihn so schreibst:
//Leider ist dieser Code verloren gegangen...
Sollter keine Vorgabe sein, aber allgemein ist
if(!$xyz); elseif(!$xyz); else ;
besser als
if($xyz) { if($xyz) { } else {} } else {}
//EDIT: Irgendein Mod hat meinen Code verunstaltet… Naja, auch egal…