Einfaches PHP Login statt .htaccess Seitenschutz

melodei

Grünschnabel
Ich habe ein einfaches PHP Login, es funktioniert auch aber noch nicht optimal. Es soll
bestimmte Bereiche "schützen", halt nicht so leicht einsehbar sein. Der einfache (.htaccess)
Seitenschutz, ist mit dem Meldungsfenster nicht gerade schön.

Ich versuche schon die ganze Zeit, nach richtiger Eingabe des Kennwortes, die Seite
neu zu beschreiben. Versuch, wie unten zu sehen.

Bisher wurde nach richtiger Eingabe eine neue Tabelle geschrieben, die einen Text mit
Link anbot der zum "geschützten" Bereich führte aber weiterhin blieb der Eingabebereich
für das Kennwort stehen, was ich nicht gerade optimal finde.

Mit der unteren Anweisung, hoffte ich, die ganze Seite neu zu (über)schreiben. Aber
leider funktioniert es bisher nicht.

Alternativ und besser ist wohl, nach Erfolg automatisch weiterzuleiten. Aber wie..

Gruß
Klaus

Hier ein Teil des Codes [hoffentlich habe ich beim rüberkopieren alles wesentliche
erwischt (grins)]

Code:
...
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="autab">
<tr>
	<td height="10" align="center" valign="top">
 
	 <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
 
<table border="0" cellpadding="0" cellspacing="0" class="hauptab">
<tr>
	 <td align="center" valign="top" >
		<p class="erklaer"><strong>Geben Sie
		dazu bitte Ihr Passwort ein:</strong></p>
	 <table width="200" border="0" cellspacing="0" cellpadding="0">
		<tr>
		 <td width="39%"><input name="pass" type="password" class="input" size="20" maxlength="60" ></td>
		 <td width="1"><img src="../../ie/grafiken/spacer.gif" alt="" width="8" height="8"></td>
		 <td width="61%"><input name="submit" type="submit" class="sub" value="Senden" align="center"></td>
		</tr>
	 </table>
		 </td>
		 </tr>
	</table>
		<br>
		<span class="stern">*&nbsp;bei Best&auml;tigung hier bitte weiterclicken:<br>
		</span>
	 </form>
 
 
<?php
 
if (!empty($_POST["pass"])){
 
switch($_POST["pass"]){
 
case "kennwort":
 
echo "<html><head> 
 
<title>Interner Bereich</title>
 
</head>
<body>
 
<table border='0' cellpadding='0' cellspacing='0' >
<tr>
	<td>
	 <table border='0' cellpadding='0' cellspacing='0'>
		<tr>
		 <td height='40' align='center'>Privater Bereich:
		 </td>
		</tr>
		<tr>
		 <td align='center'><a href='url.html' target='_blank' onclick='top.focus()'><img src='../../ie/grafiken/enter.gif' width='150' height='26' border='0' /></a></td>
		</tr>
			 </table></body></html>";
break;
default:
echo "<table border='0' cellpadding='0' cellspacing='0' class='meldtab2'>
<tr>
	<td>
	 <table border='0' cellpadding='0' cellspacing='0'>
		<tr>
		 <td align='center'><span class='smeld'>Sorry aber du hast nicht das richtige Kennwort: </span> <br><br><br>
<a href='mailto:mailadresse@web.de'>mailadresse@web.de</a>
		 </td>
		</tr>
		<tr>
		 <td align='center'><a href='javascript:history.go(-1);'>wieder zurück:
		 </a></td>
		</tr>
	 </table>
	 </td>
</tr>
</table>";
}
}
?>
 
	</td>
</tr>
</table>
</body>
...
 
Das funktioniert über header d.h. du musst den document Header neu setzen darüber wird dann weitergeleitet.
Code:
<?php
header("Location: http://www.example.com/"); // Umleitung des Browsers
exit;                                        // Sicherstellen, dass nicht trotz Umleitung
                                             // der nachfolgende Code ausgeführt wird.
?>

Gruß Steff
 
Mit einer Weiterleitung wird es aber wieder unsicher. Denn wenn jemand die URL einmal weis, dann kann er ja immer ohne Probleme wieder diese Seite betreten. Ich würde dir eher empfehlen, mal das Tutorial, das es hier zum Thema Login-System gibt durchzuarbeiten. Ansonsten kannst du doch ganz einfach erst den HTML-Code schreiben, nachdem du jemanden mehr oder weniger erfolgreich verifiziert hast.

Mit freundlichem Gruß
der_maiki
 
Hallo zusammen,

na ja, die Seiten werden keine großen Geheimnisse bieten, es ist eher als würde ich einen
Sichtschutz vorschieben.


Trotzdem möchte ich alles relativ sicher anlegen. Ich hatte ja schon versucht den Bereich
nach erfolgreicher Eingabe neu zu editieren. Es wird auch eine Tabelle geschrieben

aber besser ist, wenn die gesamte Seite neu geschrieben wird und dann ein Link oder
Weiterleitung angeboten wird. Nur wenn dies passiert, wird der Verzeichnispfad trotzdem
sichtbar oder sehe ich das falsch.

Steff schrieb:

Das funktioniert über header d.h. du musst den document Header neu setzen darüber wird dann weitergeleitet.
Also ich bin kein PHP'ler, wo muss ich denn "document Header" setzen?

Klaus
 
Na dann wenn das Passwort überprüft ist und es richtig ist. Um mehr Sicherheit zu bekommen kannst du mit Sessions arbeiten und dann auf jeder Seite überprüfen ob die Sessionff gesetzt ist. Ne Gute Hilfe is immer:http://de.php.net/

Gruß Steff
 
Hallo,

arbeite mit Session, das ganze Zeug mit der header() Funktion ist einfach zu unsicher.
Ich würde eine Session aufmachen die Variablen wie Username, Passwort in verschlüsselter Form und was man halt sonst noch so braucht dort Speichern und bei jedem Seitenaufruf in der "internen Zone" überpüfen.
Wenn du das ganze in ne Funtion auslagerst sparst du dir auch noch Tipparbeit ;-)
 
Danke erst einmal,

also ich habe vorerst eine kleine Lösung gefunden, nicht gerade genial
und für euch PHP'ler bestimmt primitiv. (grins)

Hehh aber es funktioniert:

Code:
<?php
 
if (!empty($_POST["pass"])){
switch($_POST["pass"]){
case "kennwort":
 
echo '<meta http-equiv="refresh" content="1; URL=irgend ein Pfad">';
 
break;

default:

echo "<table border='0' cellpadding='0' cellspacing='0' class='meldtab2'>
<tr>
<td>
<table border='0' cellpadding='0' cellspacing='0' class='intab2'>
<tr>
<td align='center'><span class='smeld'>Sorry aber Sie haben nicht das richtige Kennwort: </span> <br><br><br>
<a href='mailto:info@muster.de'>info@muster.de</a>
</td>
</tr>
<tr>
<td align='center'><a href='javascript:history.go(-1);'>wieder zurück:
</a></td>
</tr>
</table>
</td>
</tr>
</table>";
 
}
}
?>

Oder was meint ihr?

Gruss Klaus
 
PHP:
<?php
 
if (!empty($_POST["pass"])){
switch($_POST["pass"]){
case "kennwort": header("Location: irgend ein Pfad");break;
default: echo join(file("FalschesPassword.html")); break;
}}?>
so hast du dann sogar html von php code getrennt :-)
Greetz Steff
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück