Problem beim Passwortschutz 2
Christopher
- php
In meinem selbstprogrammierten Passwortschutz gibt es ein Problem. Wenn ein Falsches Passwort eingegeben wurde, sollen die Eingegebenen Passwörter überprüft werden. Dies geschieht mit der FUNCTION falsch(). Beim Test ergab sich aber folgendes Problem: Nur das erste (falsche) Passwort wird überprüft (in dem Fall passschule1) und nicht auch mit passschule 1 <b>2 und 3</b>
Was habe ich falsch programmiert?
In der HTML-Datei steht:
<html>
<head><script type="text/javascript" src="daten/bg.js"></script>
<link rel="SHORTCUT ICON" href="daten/smile.ico"><meta name="author" content="Christopher Schmidt"><meta name="robots" content="follow"><meta name="revisit-after" content="2 days">
<meta name="description" content=
"Der PRIVATE Bereich meiner Website und die inoffizielle Klassenhomepage der Quarta 1 des IKG von BO">
<meta name="keywords" content=
"Privat, Passwort, Klassenhomepage, inofizielle, quarta, 1 , IV">
<title>Privat!!!</title>
<link rel="stylesheet" type="text/css" href="daten/style.css">
<style type="text/css">
#topm {position:absolute;width:154px;border:1px solid #808080;visibility:hidden;background-color:#CCCCCC}
</style>
</head>
<body onload="INIT()" scroll="auto">
<script type="text/javascript" src="daten/script.js">
</script>
<script type="text/javascript" src="daten/script2.js">
</script>
<script language="JavaScript" src="daten/menu_array.js" type=
"text/javascript">
</script>
<script language="JavaScript" src="daten/mmenu.js" type=
"text/javascript">
</script>
<div id="topm">
<script type="text/JavaScript" src="daten/context.js">
</script>
</div>
<script type="text/javascript" src="daten/bsp.js"></script>
<table border="2" summary=
"übersicht" cellspacing="15" cellpadding="15">
<tr>
<td><h1>Mein Privater Bereich</h1><br><br><FORM action="passwortprivat.php" method="post"><p>Passwort:</p><input type="Password" name="passprivat"><br><br>
<input type="Submit" name="login" value="Login"></form>
</td>
<td><h1>Die inoffizielle Quarta1-Klassenhomepage</h1><br><br>
Für alle, die es nich wissen. Ich will hier eine <b>inoffizielle</b> Klassenhomepage einrichten. Diese ist natürlich Passwortgeschütz:<br><br><br>
<FORM action="passwortschule.php" method="post">
<p>1. Wie heißt "unser" Klassenlehrer mit Nachnamen:</p><input type="password" name="passschule1">
<p>2. Wie heißt "unsere" Klassenlehrerin mit Nachnamen:</p><input type="password" name="passschule2">
<p>3. Wie nennen wie unsern Mathelehrer immer (Kosenamen, Tipp: Name hat 11 Buchstaben):</p><input type="password" name="passschule3"><br><br>
<input type="Submit" name="login" value="Login"></form>
</td></tr></table>
<br><br><br><p>Regeln für die Passwörter: Alle Buchstaben klein!</p>
</body>
</html>
In der PHP-Datei (passwortschule.php) steht:
<html>
<head><script type="text/javascript" src="daten/bg.js"></script>
<link rel="SHORTCUT ICON" href="daten/smile.ico"><meta name="author" content="Christopher Schmidt"><meta name="robots" content="none"><meta name="revisit-after" content="2 days">
<title>Privat</title>
<link rel="stylesheet" type="text/css" href="daten/style.css">
<style type="text/css">
#topm {position:absolute;width:154px;border:1px solid #808080;visibility:hidden;background-color:#CCCCCC}
</style>
</head>
<body onload="INIT()" scroll="auto">
<script type="text/javascript" src="daten/script.js">
</script>
<script type="text/javascript" src="daten/script2.js">
</script>
<div id="topm">
<script type="text/JavaScript" src="daten/context.js">
</script>
</div>
<?php
if ($_POST["passschule1"] == "schueler")
{
if ($_POST["passschule2"] == "adam")
{
if ($_POST["passschule3"] == "brunskowsky")
{
?>
<p>Schön, dass du hier bist!!! Also, ich nehme mal an, dass wir uns kennen und das du in meiner Klasse bist!<br><br>Ich habe hier nicht die geringste Idee, was man hier schreiben könnte. Vielleicht sollte ich hier ein eigenes Gästebuch oder ein Adressbuch einfügen. Man könnte hier auch unsere Referate ins Internet stellen oder eine eigene Klassenemail-Adresse einrichten... Ich weiß es aber nicht so recht. Wenn du irgendeine Idee hast, dann <a href="mail.html">maile</a> mir doch ein mal!</p>
<?php
}
else
{
falsch();
}
}
else
{
falsch();
}
}
else
{
falsch();
}
function falsch() {
if ($_POST["passschule1"] == "schueler") {
echo ("<P>Der (Nach-)Name unseres Klassenlehres ist richtig!</P>");
}
else {
echo ("<P><span style="color:#ff0000;">Der (Nach-)Name unseres Klassenlehres ist falsch!</span><span style="font-size:9px;"> Tipp: ü = ue</span></P>");
}
if ($_POST["passschule2"] == "adam") {
echo ("<P>Der (Nach-)Name unserer Klassenleherin ist richtig!</P>");
}
else {
echo ("<p style="color:#ff0000;">Der (Nach-)Name unserer Klassenleherin ist falsch!</p>");
}
if ($_POST["passschule3"] == "brunskowsky") {
echo ("<P>er (Kose-)Name unseres Mathelehres ist richtig!</P>");
}
else {
echo ("<P><span style="color:#ff0000;">Der (Kose-)Name unseres Mathelehres ist falsch</span><span style="font-size:9px;"> Tipp: der Name hat 11 Buchstaben und hört mit einem y auf. Na, verstanden? Guten Morgen, herr ...</span></P>");
}
}
?>
</body></html>
</body></html>
PS: Ich bi jemand von der jüngeren Sorte, desswegen der "komische" Inhalt!
Hallo Christopher,
Ich schätz mal auf ein Blick dass deine if-schleifen sind falsch:
if ($_POST["passschule1"] == "schueler")
{
if ($_POST["passschule2"] == "adam")
{
if ($_POST["passschule3"] == "brunskowsky")
probiere die mit 'or' oder '||' zu trennen:
if ($_POST["passschule1"] == "schueler" || $_POST["passschule2"] == "adam" || $_POST["passschule3"] == "brunskowsky"){
...}
Gruß Sergej
Hallo Christopher,
Ich schätz mal auf ein Blick dass deine if-schleifen sind falsch:
if ($_POST["passschule1"] == "schueler")
{
if ($_POST["passschule2"] == "adam")
{
if ($_POST["passschule3"] == "brunskowsky")probiere die mit 'or' oder '||' zu trennen:
if ($_POST["passschule1"] == "schueler" || $_POST["passschule2"] == "adam" || $_POST["passschule3"] == "brunskowsky"){
...}Gruß Sergej
Neee, das funktioniert ja. Die FUNCTION falsch() ist irgendwie falsch!
Moin!
Neee, das funktioniert ja. Die FUNCTION falsch() ist irgendwie falsch!
Logisch. Wäre die Funktion richtig, müßte sie ja richtig() heißen. :)
Im Ernst: Wie sollen wir raten, was falsch ist? Sie sieht richtig aus - deshalb kann der Fehler eigentlich nur an den gesendeten Daten liegen.
Lass dir testweise ausgeben, was der Browser sendet:
phpinfo(INFO_VARIABLES);
oder auch
var_dump($_POST);
Wenn in den Browserdaten wirklich drinsteht, was du erwartest, und es immer noch nicht funktioniert, brauchen wir die Info, was drinsteht, und außerdem, was genau die Funktion nicht macht. Welche Ausgabe liefert sie z.B.?
- Sven Rautenberg