• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Passwort-abfrage-problem!!!

hansi3000

Neues Mitglied
Ich wollte mir für mienn Chat ein Passwort ausdenken, hatte ohne Passwort folgende Startdatei:

HTML:
<html>
<frameset rows="2*,*">
   <frame src="chat_aus.php" name="ausgabe">
   <frame src="chat_ein.php" name="eingabe">
</frameset>
</html>
Nun habe ich versucht das ganze mit Formular und dem Passwort "beispiel" zu probieren!:

PHP:
<html>
<head>
<title> Willkommen im Chat! </title>
</head>
<body>
<?php
echo " <input type="password" name="pw"> " ;
echo "<input type="submit">";
$passwort = beispiel ;
if ($pw == "$passwort")
{
echo "<frameset rows="2*,*">";
echo "   <frame src="chat_aus.php" name="ausgabe">";
echo "   <frame src="chat_ein.php" name="eingabe">";
echo "</frameset> ";
echo " < script type="text/javascript">";
echo " alert('Zugang gestattet!')";
echo " </script>";
}
else
{
echo "<script type="text/javascript">";
echo "alert('ZUGANG VERWEIGERT !')";
echo "</script>";
}
?>
</body>
</html>
Doch der Server/Browser sagte mir immer er sehe einen Fehler:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in .../chat.php on line 7

Könnt ihr mir helfen???
 
Zuletzt bearbeitet:
Problem sind alle Strings wie dieser mit doppelten Anführungszeichen:

PHP:
echo " <input type="password" name="pw"> " ;

PHP erkennt hier, dass der String schon nach type=" zu Ende ist und verlangt natürlich ein Semikolon. Bei einem Editor mit Syntax-highlighting würde dir sowas sofort auffallen.

Lösung 1:
Du maskierst alle doppelten Anführungszeichen im String mit einem Backslash.

PHP:
echo "<input type=\"password\" name=\"pw\">";

Lösung 2 (einfacher und übersichtlicher):
Du fasst den String in einfache Anführungszeichen.

PHP:
echo '<input type="password" name="pw">';

Du solltest übrigens überlegen, ob du wirklich Frames einsetzen willst / musst. Die Technik ist veraltet und hat sehr viele Nachteile.
 
Problem sind alle Strings wie dieser mit doppelten Anführungszeichen:

PHP:
echo " <input type="password" name="pw"> " ;

PHP erkennt hier, dass der String schon nach type=" zu Ende ist und verlangt natürlich ein Semikolon. Bei einem Editor mit Syntax-highlighting würde dir sowas sofort auffallen.

Lösung 1:
Du maskierst alle doppelten Anführungszeichen im String mit einem Backslash.

PHP:
echo "<input type=\"password\" name=\"pw\">";

Lösung 2 (einfacher und übersichtlicher):
Du fasst den String in einfache Anführungszeichen.

PHP:
echo '<input type="password" name="pw">';

Du solltest übrigens überlegen, ob du wirklich Frames einsetzen willst / musst. Die Technik ist veraltet und hat sehr viele Nachteile.
Jetzt habe ich erneut ein Problem:
Wenn ich die Seite aufrufe kommt gleich ZUGANG VERWEIGERT! und wenn ich dann das Passwort eingebe, dann auf senden klicke, passiert gernichts!!!
 
Vielleicht solltest du dich nochmal mit der Grundlegenden Syntax von PHP befassen.
Strings sind immer in Anführungszeichen zu setzen (einfach oder doppelt):

PHP:
$passwort = "beispiel";

Variablen brauchen keine Anführungszeichen ("$passwort" ohne).
Wenn das dein ganzes Script da oben ist, musst du noch die Variable per $_POST['pw'] (bzw. GET) holen.

Schau dir mal an, wie ein Formular aufgebaut ist:
SELFHTML: HTML/XHTML / Formulare / Formulare definieren

Und hier was zur Übergabe von Variablen:
PHP für dich - Variablen mit und ohne Formulare übergeben
 
PHP:
echo '<frameset rows="2*,*">';
single quotes oder die double quotes escapen.
PHP:
echo "<frameset rows=\"2*,*\">";
 
Zurück
Oben