[PHP] skript geht nicht

RuL3R

Commodore
Registriert
Dez. 2004
Beiträge
4.577
hi .. ich lerne grad php und hab hier probleme mit einem beispiel im buch, was nicht so ganz funktionieren will.

PHP:
<html>
<body>

<?php

$benutzer=$HTTP_GET_VARS['benutzer'];
$pass=$HTTP_GET_VARS['passwort'];

if($benutzer=="guten tag"){
	if($pass="hallo17"){
		print("Login korrekt");
		print("Klicken Sie hier: <a href='test.html'>zum Adminbereich</a>");
	}


	else{
		print("Benutzername korrekt, Passwort FALSCH. <a href="start.html">hier</a> klicken um zurueck zu kommen.");

	
		}

	
	else{
		print("Zugriff nicht erfolgreich<br>");
		print("<a href='start.html'>Zurueck zum Login Bereich</a>");
		}


?>

</body>
</html>


als ausgabe kommt dann nur

zum Adminbereich"); } else{ print("Benutzername korrekt, Passwort FALSCH. hier klicken um zurueck zu kommen."); } else{ print("Zugriff nicht erfolgreich
"); print("Zurueck zum Login Bereich"); } ?>



was mach ich in dem fall falsch ?
 
Zuletzt bearbeitet von einem Moderator: ([CODE] -> [PHP])
PHP:
if($pass="hallo17"){

müsste da nicht 2* = stehen (also == )
 
hmm stimmt.. hatte ich vergessen .. :freak:

aber geändert hat sich dadurch nichts :(
 
Das Script zeigt schon einen Fehler, weil du vergessen hast die Anführungsstriche zu escapen. Ich benutze statt print immer echo und das hast vergessen eine geschweifte Klammer zu schließen.

PHP:
<html>
<body>

<?php
$benutzer=$_GET['benutzer'];
$pass=$_GET['passwort'];

if($benutzer=="guten tag") {
	if($pass=="hallo17") {
		echo("Login korrekt");
		echo("Klicken Sie hier: <a href=\"test.html\">zum Adminbereich</a>");
	}else{
	   echo("Benutzername korrekt, Passwort FALSCH. <a href=\"start.html\">hier</a> klicken um zurueck zu kommen.");
	}
}else{
   echo("Zugriff nicht erfolgreich<br>");
   echo("<a href=\"start.html\">Zurueck zum Login Bereich</a>");
}


?>

</body>
</html>

Mfg
KoЯn
 
Zuletzt bearbeitet:
also ich hab das jetzt mit deinem quelltext mal ausprobiert und da kam das selbe raus ..

und hmm was heißt "anführungszeichen escapen"?
 
Bei mir funktioniert mein Script. Anführungsstriche escapen heißt, dass ein Anführungsstrich nicht als Anfangs oder Ende Zeichen eines Strings gesehen wird, sondern dass es wie ein ganz normales Zeichen ausgegeben wird. Also:

Falsch: echo("<a href="http://google.de">Google.de</a>\n");
Richtig: echo("<a href=\"http://google.de\">Google.de</a>\n");

Und vermeide Leerzeichen. Ganz besonders bei der GET-Methode. Da musst du Leerzeichen nämlich durch %20 ersetzen. Lass dir mal nen anderen Benutzernamen als "guten tag einfallen. Oder sag einfach "guten-tag" oder so etwas.
Wenn du es so lässt, dann rufe die Seite mal mit "test.php?benutzer=guten%20tag&passwort=hallo17" auf. test.php musst du natürlich durch deinen Dateinamen ersetzen.

Mfg
KoЯn
 
anfuehrungszeichen sind steuerzeichen mit denen man zB strings kennzeichnet. wenn du diese im string selbst benutzt, kann der php-interpreter natuerlich nicht unterscheiden, welches anfuehrungszeichen den string markiert und welches zu ihm gehoert. daher muessen anfuehringsstriche, die du zum umschliessen eines strings verwendest durch voranstellen eines backslahes escaped werden. sollte aber auch in deinem buch stehen.

RTFM is auch imer gut: http://www.php.net/manual/de/language.types.string.php
 
Also in dem Buch steht, entweder werden Anführungszeichen ' oder \" geschrieben .. ich habe mich für ' entschieden, wobei ich mich einmal damit vertan hab. ^^
ich habe jetzt aber mal \" ausprobiert, aber ohne Erfolg.

Hier ist jetzt noch einmal der code den ich hier vorliegen hab:

Code:
<html>
<body>

<?php

$benutzer=$HTTP_GET_VARS['benutzer'];
$pass=$HTTP_GET_VARS['pass'];

if($benutzer=="gutentag"){
	if($pass=="hallo17"){
		echo("Login korrekt");
		echo("Klicken Sie hier: <a href=\"test.html\">zum Adminbereich</a>");
	}


	else{
		echo("Benutzername korrekt, Passwort FALSCH. <a href=\"start.html\">hier</a> klicken um zurueck zu kommen.");

	
		}
}

	
	else{
		echo("Zugriff nicht erfolgreich<br>");
		echo("<a href='start.html'>Zurueck zum Login Bereich</a>");
		}

}
?>

</body>
</html>

und das hier die ausgabe, die unverändert geblieben ist:

zum Adminbereich"); } else{ echo("Benutzername korrekt, Passwort FALSCH. hier klicken um zurueck zu kommen."); } } else{ echo("Zugriff nicht erfolgreich
"); echo("Zurueck zum Login Bereich"); } } ?>
hier ist der Quellcode, aus der HTML Datei für die Eingabe. Vielleicht habe ich da ja schon einen Fehler gemacht:

Code:
<html>
<head>
<title>Passwort Manager</title>
</head>

<body>

<h1>Passwort Manager V1.0</h1>

<form name="Eingabe" action="check.php">


Login Name:


<input type="text" name="benutzer" size="20">
<br>
Passwort: &nbsp;&nbsp;&nbsp;&nbsp;
<input type="password" name="pass" size="20">
<p>
<input type="submit" value="Login">
<input type="reset" value="Löschen">


</form>


</body>
</html>
 
Der einzige Fehler ist, dass du eine geschweifte Klammer zu viel geschlossen hast. Wenn du die letzte Klammer aus deiner check.php entfernst, dann sollte es funktionieren.

BTW: Schreib mal am Anfang von deiner (also hinter <?php) check.php: error_reporting(E_ALL);
Dann sollten Fehler angezeigt werden und in welcher Zeile der Fehler aufgetaucht ist. Dann kannst du sie selbstständig beheben können.

//edit
Wie testest du deine Scripts eigentlich? Lokal oder lädst du sie auf einen Server hoch? Denn die Ausgabe sieht sehr komisch aus.

//edit2
Deine check.php sollte so aussehen:
PHP:
<html>
<body>

<?php
error_reporting(E_ALL);
$benutzer=$HTTP_GET_VARS['benutzer'];
$pass=$HTTP_GET_VARS['pass'];

if($benutzer=="gutentag"){
	if($pass=="hallo17"){
            echo("Login korrekt");
            echo("Klicken Sie hier: <a href=\"test.html\">zum Adminbereich</a>");
	}else{
	  echo("Benutzername korrekt, Passwort FALSCH. <a href=\"start.html\">hier</a> klicken um zurueck zu kommen.");
        }
}else{
      echo("Zugriff nicht erfolgreich<br>");
      echo("<a href='start.html'>Zurueck zum Login Bereich</a>");
}
?>

</body>
</html>

Mfg
KoЯn
 
Zuletzt bearbeitet:
Ich hab error_reporting(E_ALL); eingefügt, und die letzte geschweifte Klammer entfernt, aber verändert hat sich da nichts.


//EDIT OMG!!!! bin ich blöd :freak: ich hab das nicht auf meinem lokalen Apache Server ausgeführt ..

Hmm bin ja noch neu .. kann ja mal passieren :D

ok danke Korn für deine Hilfe..!
 
Zuletzt bearbeitet:
Hi, ich würde das ganze Script doch einfach verkürzen, etwa so:
Code:
<html lang="de">
<body>

<?php

$benutzer=$HTTP_GET_VARS['benutzer'];
$pass=$HTTP_GET_VARS['pass'];

if($benutzer=="gutentag" && $pass=="hallo17"){
		echo("Login korrekt");
		echo("Klicken Sie hier: <a href=\"test.html\">zum Adminbereich</a>");
	}	else{
		 echo("Benutzername oder Passwort falsch. Klicken sie <a href=\"start.html\">hier</a>um zur&uuml;ck zu kommen.");	
	}
?>

</body>
</html>
 
ja das habe ich schon gemacht .. ich wollte es aber erstmal versuchen, wie es im buch stand.

//EDIT

Hier ist der Beweis das es jetzt klappt ;)
 
@extiq
echo("Benutzername oder Passwort falsch.

Das ist aber der kleine Unterschied zwischen den beiden Scripts. Du weißt nicht, was du falsch eingegeben hast.

@RuL3R
Der korrekte Login Name ist "teamrev" und das Passwort ist "12345"(ohne Anführungszeichen).
Das solltest du zu einem späteren Zeitpunkt aber noch entfernen ;)

//edit
Wenn man einen Admin-Bereich machen will, dann schützt man am besten den ganzen Ordner per .htaccess. Oder du übergibst du Zugangsdaten immer an die nächste Seite, damit man nicht einfach auf eine Seite zugreifen kann, wenn man ihren Namen kennt.

Mfg
KoЯn
 
Zuletzt bearbeitet:
Quidoff schrieb:
@extiq


Das ist aber der kleine Unterschied zwischen den beiden Scripts. Du weißt nicht, was du falsch eingegeben hast.
ja schon, aber ich halte es so für besser, weil welchem Hacker macht das 1. genannte script denn keine Freude? "soo, den Usernamen hab ich schonma.. fehlt nur noch das PW..." :D
 
Wenn man einen Admin-Bereich machen will, dann schützt man am nesten den ganzen Ordner per .htaccess.

Wie geht das denn .. ? is das was kurz zu Erklärendes, oder gibt es dazu ein gutes Tutorial?
 
Zuletzt bearbeitet:
Zurück
Oben