Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Moin Leutz!

Ich hab probeweise versucht einen PW-geschützten Bereich zu erstellen. PW-abfrage und so klappen auch, aber damit jemand der den Pfad eintippt sich nicht doch die Seite anzeigen lassen kann möchte ich eine Variable weitergeben, in der steht, dass der Benutzer eingeloggt ist. Das hab ich über die GET-Methode realisiert


<?php
$alles=$_GET['alles'];
if ($alles=="") {
echo "Dies ist nicht dein Bereich! Du darfst nur <a href=\"start.html\"> hier</a> hin!\n";
}
if ($alles=="true") {
echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> ";
echo"<html> ";
echo" <head> ";
echo" <title>Geschützer Bereich</title> ";
echo" </head> ";
echo" <body> ";
echo" <h2>Geschützer Bereich - Nur für Mitglieder</h2><br> ";
echo" </body> ";
echo"</html> ";
}
?>
[/PHP]

wenn ich retzt allerdings die URL eintippe ohne den Wert zu übergeben wirft PHP dies aus:

"Notice: Undefined index: alles in D:\Standard-Root\Passwortschutz\test.php on line 2

Dies ist nicht dein Bereich! Du darfst nur [u][b]hier[/b][/u] hin!"

Wie kann ich das verhindern? Kann man nicht PHP sagen, die Variable da ist, aber leer?

So nach dem Motto: Wenn da keine Variable zum auslesen ist setze $alles=""

MfG

fr@gstyler

Geschrieben


if (!isset($alles))
{
$alles == false;
}
[/php]

Desweiteren würde ich eine Session benutzen, wenn du auf Seiten überprüfen willst ob der Benutzer eingeloggt ist, dnan kannst du direkt diverse andere Infos "mitschleppen" wie z.B. den angemeldeten Benutzernamen.

http://www.dclp-faq.de/ch/ch-version4_session.html

Z.B. könntest du so abfragen ob ein angemeldeter Benutzer für die geschützte Seite existiert.

Die Session heisst hier z.B. 'ses_username', wenn diese nicht existiert wird man auf eine Fehlerseite weitergeleitet.

[php]
<?php
session_start();

if (!session_is_registered('ses_username'))
{
header ("Location:url");
}
?>

P.S.

Komisch, das Forum macht aus meinem Locationlink eine URL fürs Forum, anscheinend ist ihm egal das dies in PHP Tags steht.

Geschrieben


<?php
$alles=$_GET['alles'];
if ($alles=="") {
echo "Dies ist nicht dein Bereich! Du darfst nur <a href=\"start.html\"> hier</a> hin!\n";
}
if ($alles=="true") {
echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
<head>
<title>Geschützer Bereich</title>
</head>
<body>
<h2>Geschützer Bereich - Nur für Mitglieder</h2><br>
</body>
</html>";
}
?>
[/PHP]

so geht das auch, ist nicht wie bei C++ wo du jede einzelne zeile mit Echo machen musst :)

Erleichtert dir die Arbeit ^^

Geschrieben

Das sind jetzt die Quelltexte:

check.php


<html>
<body>

<?php
$benutzer=$_POST['benutzer'];
$pass=$_POST['pass'];
if ($benutzer="admin") {
if ($pass="freak") {
print "<b>Login korrekt</b>";
print "<p>Willkommen ".$benutzer."!!</p>";
print "<p>Klicken Sie hier zum Zugang:</p>";
print "<a href='test.php'>Geschützer Bereich</a>";
@session_start();
$_SESSION['login']="true";
$_SESSION['benutzer']=$benutzer;
}
else {
print ("Benutzername korrekt, Passwort NICHT KORREKT!<br><br>");
print ("<a href='start.html'>Noch ein Versuch...</a>");
}
}
else {
print ("Benutzername NICHT KORREKT!<br><br>");
print ("<a href='start.html'>Noch ein Versuch...</a>");
}

?>
</body>
</html>
[/PHP]

[b]test.php[/b]

[PHP]
<?php
@session_start();
if ($_SESSION['login']="true") {
echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> ";
echo"<html> ";
echo" <head> ";
echo" <title>Geschützer Bereich</title> ";
echo" </head> ";
echo" <body> ";
echo" <h2>Geschützer Bereich - Nur für Mitglieder</h2><br> ";
echo" </body> ";
echo"</html> ";
}
else {
echo "Dies ist nicht dein Bereich! Du darfst nur <a href=\"start.html\"> hier</a> hin!\n";
}
?>

Letztendlich kommt jeder in den geschützten Bereich! Egal ob SessionID oder ned...

HELPME!! :confused:

MfG

fr@gstyler

Geschrieben
Original geschrieben von ~[LoD]~Astalavista


<?php
$alles=$_GET['alles'];
if ($alles=="") {
echo "Dies ist nicht dein Bereich! Du darfst nur <a href=\"start.html\"> hier</a> hin!\n";
}
if ($alles=="true") {
echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
<head>
<title>Geschützer Bereich</title>
</head>
<body>
<h2>Geschützer Bereich - Nur für Mitglieder</h2><br>
</body>
</html>";
}
?>
[/PHP]

so geht das auch, ist nicht wie bei C++ wo du jede einzelne zeile mit Echo machen musst :)

Erleichtert dir die Arbeit ^^ [/b]

Ahhh... interessant... muss ich mir merken... aber geschrieben ist geschrieben! :mod:

Geschrieben
Original geschrieben von fr@gstyler

check.php



@session_start();
$_SESSION['login']="true";
$_SESSION['benutzer']=$benutzer;

[/PHP]

Du weist hier einen String zu, es muss

$_SESSION['login']=true

heissen.

[b]test.php[/b]

[PHP]
<?php
@session_start();
if ($_SESSION['login']="true") {

Du vergleichst hier $_SESSION['login'] nicht darauf ob es true ist, sondern du weist ihm nochmal den String "true" zu.

Es muss

if ($_SESSION['login']==true)

heissen.

Zudem solltest du beim Login immer überprüfen ob der Benutzer schon eingeloggt ist oder nicht.

Also

if (session_is_registered('ses_username'))

{

session_destroy();

}

Geschrieben

wenn ich jetzt ohne SessionID die Seite laden will kommt dieser Fehler:

Notice: Undefined index: login in D:\Standard-Root\Passwortschutz\test.php on line 3

wie bekomm ich den weg??

Edit: Praktisch genauso wie vorhin! :mod: *seufz*

Geschrieben
Original geschrieben von fr@gstyler

Das sind jetzt die Quelltexte:

[...]

test.php


<?php
@session_start();
if ($_SESSION['login']==true) {
echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> ";
echo"<html> ";
echo" <head> ";
echo" <title>Geschützer Bereich</title> ";
echo" </head> ";
echo" <body> ";
echo" <h2>Geschützer Bereich - Nur für Mitglieder</h2><br> ";
echo" </body> ";
echo"</html> ";
}
else {
echo "Dies ist nicht dein Bereich! Du darfst nur <a href=\"start.html\"> hier</a> hin!\n";
}
?>
[/PHP]

[...]

schau selbst! (also ich hab hier den Quellcode entsprechend deiner Vorschläge verändert, ist also nicht wirklich ein Zitat...)

Geschrieben

check.php


<html>
<body>

<?php
$benutzer=$_POST['benutzer'];
$pass=$_POST['pass'];
if ($benutzer=="admin" && $pass=="freak") {
print "<b>Login korrekt</b>";
print "<p>Willkommen ".$benutzer."!!</p>";
print "<p>Klicken Sie hier zum Zugang:</p>";
print "<a href='test.php'>Geschützer Bereich</a>";
@session_start();
$_SESSION['login']=true;
$_SESSION['benutzer']=$benutzer;
}
else {
$_SESSION['login']=false;
print ("Benutzername NICHT KORREKT!<br><br>");
print ("<a href='start.html'>Noch ein Versuch...</a>");
}

?>
</body>
</html>
[/PHP]

[PHP]

@session_start();
if (isset($_SESSION['login']) && $_SESSION['login']==true) {
echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> ";
echo"<html> ";
echo" <head> ";
echo" <title>Geschützer Bereich</title> ";
echo" </head> ";
echo" <body> ";
echo" <h2>Geschützer Bereich - Nur für Mitglieder</h2><br> ";
echo" </body> ";
echo"</html> ";
}
else {
echo "Dies ist nicht dein Bereich! Du darfst nur <a href=\"start.html\"> hier</a> hin!\n";
}

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...