Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PHP-Befehl?

Empfohlene Antworten

Veröffentlicht

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

Verschoben in die Webserverprogrammierung


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.

Ahhh! *Kronleuchter aufgeh*

Das wer ich gleich ma probieren!:marine

THX!!!!

fr@gstyler


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

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

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:

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();

}

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*

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

Jetzt gibt er mir übrigens immer(!!!)

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

Dies ist nicht dein Bereich! Du darfst nur hier hin!"

aus...

(ich hasse sowas :( )

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";
}

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.