php-Zugangsproblem

Hallo liebe bplaced community,

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??

gruß

jay

eine Möglichkeit wäre es, auf php zu verzichten und .htaccess und.htpasswd zu benutzen und damit Ordner zu Sperren… kannst da ja mal nach googlen…

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:

<?php
session_start();

if(!isset($_SESSION['name']))
   {
   Header("Location: index.php");  
   exit;
   }
?> 

vielen dank für die antworten!

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?)

Geht das auch ohne sessions?

gruß

jay

Wie, wo, was lokal??? Das gilt nur in Funktionen…

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…

Dann habe ich da wohl etwas durcheinander gebracht :slight_smile:
thx für die aufklärung^^

<?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
}
?>
  1. schreib Deutsch, das da oben kann keiner lesen
  2. bleib endlich sachlich und hör auf Leute an zu gehen
  3. 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’]);

Greez

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…

alles klar,
danke

jay