fischboy13: Parse error: syntax error, unexpected $end in C:\xampp\htdocs\lo

jup ich find den fehler net hier ist der quelltext ich hoff ihr könnt mir helfen. ich wollt eig. au noch mysql einbinden aber wenn net mal des hier bei mir geht. Meldung:

Parse error: syntax error, unexpected $end in C:\xampp\htdocs\lo

<?php
session_start();
$verhalten = 0;

if(!isset($_SESSION["username"]) and !isset($_GET["page"])) {
$verhalten = 0;
}
if($_GET["page"] == "log") {

$user = $_POST["user"];
$passwort = $_POST["passwort"];

if($user == "Henrik" and $passwort == "toll") {
$_SESSION["username"] = $user;
$verhalten = 1;
} else {
$verhalten = 2;
}
}
?>
<html>
<head><title>Willkommen</title>
<?php
if($verhalten == 1) {
?>
<meta http-equiv="refresh" content="3; URL=private.php" />
</head>
<body>
<?php
if($verhalten == 0) {
?>
Bitte logge dich ein!
<form method="post" action="login.php?page=log">
Nickname:<input name="user" type="text" />
Passwort:<input name="passwort" type="password" />
<input value="Einloggen!" type="submit" />
</form>
<?php
}
if($verhalten == 1) {
?>
Du hast dich richtig eingeloggt und wirst nun weitergeleitet...
<?php
}
if($verhalten == 2) {
?>
Nickname oder Passwort Falsch. <a href="login.php">Erneut versuchen</a>
<?php
}
?>
</body>
</html>

  1. Lieber fischboy13,

    jup ich find den fehler net

    des liegt da dran, dass Du net einrückst.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. des liegt da dran, dass Du net einrückst.

      wie ist des gemeint? ^^
      das versteh ich nicht!

      1. Tach!

        des liegt da dran, dass Du net einrückst.
        wie ist des gemeint? ^^

        Hast du schon mal gesehen, wie Quelltext üblicherweise notiert wird, damit er übersichtlich lesbar ist? Man rückt ihn je nach Tiefe ein. Man notiert zum Beispiel besser nicht

        if (bedingung)
        aktion1;
        else
        aktion2;

        sondern

        if (bedingung)
          aktion1;
        else
          aktion2;

        Dadurch kommt die Struktur besser zu Vorschein. Es kann natürlich sein, dass du ihn ordentlich notiert hast, aber beim Kopieren hierher die Formatierung verlorengegangen ist. Das ist dann etwas anderes - aber trotzdem Mist.

        Zum eigentlichen Problem: Die Ursachen für Syntaxfehler sind sehr oft, wenn nicht gar immer, in der Vergangenheit zu finden. Du hast irgendwo etwas vergessen und die Syntaxregeln sagen an einer späteren Stelle, dass das so nicht sein kann, weil aufgrund des vorherigen Fehlers eine andere Syntax erwartet wird. Ein unerwartetes $end (steht für Ende des Programms), tritt beispielsweise auf, wenn eine Klammer zu viel oder zu wenig notiert wurde. Wenn du solche Fehler nicht durch aufmerksames Code-Lesen findest, kannst du den Fehler einzukreisen versuchen, indem du Code-Blöcke testweise vorübergehend rausnimmst. Bleibt der Fehler, liegt es kaum an diesem Code-Block. Ist der Fehler weg, dann ist er nicht unbedingt in dem Code-Block zu finden, er steht jedoch zumindest im Zusammenhang mit diesem Code-Block.

        dedlfix.

      2. Lieber fischboy13,

        des liegt da dran, dass Du net einrückst.

        wie ist des gemeint? ^^
        das versteh ich nicht!

        jetz habisch extra deine schbrache gnomm... mist.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. Hallo,

    Parse error: syntax error, unexpected $end in C:\xampp\htdocs\lo

    Klammern sollten immer paarweise auftreten. Bei dir fehlt eine schließende Klammer.
    Wenn du -wie Felix auch schon empfiehlt- den Quellcode übersichtlich formatieren würdest, zum Beispiel durch sinnvolle Einrückungen, wäre das sofort aufgefallen.

    $user = $_POST["user"];
    $passwort = $_POST["passwort"];

    Diese reine Umkopiererei ist im übrigen auch Unfug - und Parameter sowohl aus $_GET als auch aus $_POST zu holen, ist zumindest unüblich. Nicht unbedingt schlecht, aber man sollte genau wissen, was man tut.

    <html>

    DOCTYPE fehlt.

    So long,
     Martin

    --
    They say hard work never killed anyone, but I figure, why take the risk?
      (Ronald Reagan, US-Präsident 1981-1989)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Tach!

      Parameter sowohl aus $_GET als auch aus $_POST zu holen

      Bitte auf solche Formulierungen achten und sie vermeiden. Diese führen dazu, dass die Anfänger annehmen, man müsse die Werte erst kopieren, bevor man sie verwenden kann.

      ist zumindest unüblich

      Naja, aber auch nur deshalb, weil die Benennung $_GET einen scheinbaren Gegensatz zu $_POST darstellt. Wenn man das $_QUERYSTRING genannt hätte, würde es deutlicher zum Vorschein kommen, dass diese Parameter keineswegs an GET-Requests gebunden sind und deshalb auch in anderen Request-Typen völlig normal sind (wenn auch vielfach keine Notwendigkeit besteht, neben POST-Parametern auch noch den Query-String zu verwenden).

      dedlfix.

      1. Hallo,

        Parameter sowohl aus $_GET als auch aus $_POST zu holen
        Bitte auf solche Formulierungen achten und sie vermeiden. Diese führen dazu, dass die Anfänger annehmen, man müsse die Werte erst kopieren, bevor man sie verwenden kann.

        den Gedankengang kann ich nicht nachvollziehen - wie kommst du auf sowas? Was sollte "sowohl aus $_GET als auch aus $_POST" mit dem Umkopieren zu tun haben?

        Ciao,
         Martin

        --
        Die letzten Worte des Fallschirmspringers:
        ELENDE SCHEISSMOTTEN!!
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Tach!

          Parameter sowohl aus $_GET als auch aus $_POST zu holen
          Bitte auf solche Formulierungen achten und sie vermeiden. Diese führen dazu, dass die Anfänger annehmen, man müsse die Werte erst kopieren, bevor man sie verwenden kann.
          den Gedankengang kann ich nicht nachvollziehen - wie kommst du auf sowas? Was sollte "sowohl aus $_GET als auch aus $_POST" mit dem Umkopieren zu tun haben?

          Dass Werte in beiden Arrays stehen ist ja nur die Konsequenz daraus, dass man einen POST-Request mit Querystring verwendet hat. Aber darum geht es mir beim sprachlichen Teil der Kritik nicht, sondern um die allgemeine Formulierung "aus $_GET/$_POST holen". Dieses "holen" interpretieren viele zu oft als ein "erst abholen, dann verwenden" => "umkopieren". Du bist also bei der Formulierung in die sprachliche Falle getappt, die dieses Umkopieren nährt oder zumindest unterstützt. Bessere Formulierungen wären vielleicht "Werte in $_GET/$_POST verwenden" oder "die in $_GET/$_POST stehenden Werte verwenden". Eine besser passende Formulierung allein wird das Umkopier-"Problem" sicher nicht beheben, aber ich denke, sie ist zumindest ein kleiner Beitrag hin zum Verständnis.

          Nochmal zurück zum fachlichen Aspekt. Beachte Ursache und Folgen. Die Folge, dass Werte gleichzeitig in $_GET und $_POST stehen, hat die bereits genannte Ursache, dass ein POST-Request mit Querystring verwendet wurde. Also ist nicht direkt das gleichzeitige Zugreifen auf $_GET und $_POST das "Unübliche" [1], sondern eher die Querystring-Verwendung bei POST [2]. $GET- und $_POST-Inhalte sind nur die Folgen.

          [1] Ein Problem ist es auch nicht.
          [2] Auch das ist kein technische Problem, höchstens eine eventuelle Verbesserungswürdigkeit nach unbedachtem Organisieren/Strukturieren.

          dedlfix.

          1. Hallo,

            Aber darum geht es mir beim sprachlichen Teil der Kritik nicht, sondern um die allgemeine Formulierung "aus $_GET/$_POST holen". Dieses "holen" interpretieren viele zu oft als ein "erst abholen, dann verwenden" => "umkopieren".

            ach so ... das hätte ich nie im Leben so gesehen. Denn ich "hole"[1], also lese die Werte doch in dem Moment, in dem ich sie verwende.

            Du bist also bei der Formulierung in die sprachliche Falle getappt, die dieses Umkopieren nährt oder zumindest unterstützt.

            Ja, aber ohne auch nur im entferntesten an die mögliche Fehlinterpretation zu denken.

            Nochmal zurück zum fachlichen Aspekt. Beachte Ursache und Folgen. Die Folge, dass Werte gleichzeitig in $_GET und $_POST stehen, hat die bereits genannte Ursache, dass ein POST-Request mit Querystring verwendet wurde. Also ist nicht direkt das gleichzeitige Zugreifen auf $_GET und $_POST das "Unübliche" [1], sondern eher die Querystring-Verwendung bei POST [2]. $GET- und $_POST-Inhalte sind nur die Folgen.

            Ja, stimmt. Ich bin in meiner Formulierung nur auf das Ende der Wirkungskette eingegangen. Die technischen Hintergründe (und dass das Vorgehen legitim und in manchen Fällen vielleicht sogar sinnvoll ist) habe ich dabei nicht in Frage gestellt.

            Ciao,
             Martin

            [1] im Unterschied zur rheinländischen Interpretation von "holen" im Sinne von "kaufen" oder "beschaffen"

            --
            Computer funktionieren grundsätzlich nicht richtig.
            Wenn doch, hast du etwas falsch gemacht.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            1. Tach!

              Aber darum geht es mir beim sprachlichen Teil der Kritik nicht, sondern um die allgemeine Formulierung "aus $_GET/$_POST holen". Dieses "holen" interpretieren viele zu oft als ein "erst abholen, dann verwenden" => "umkopieren".
              ach so ... das hätte ich nie im Leben so gesehen. Denn ich "hole"[1], also lese die Werte doch in dem Moment, in dem ich sie verwende.

              Im Prinzip ja. Rein technisch gesehen, wird ein Wert aus einer Variable "geholt" und in irgendeinem Speicherbereich zwecks Verarbeitung abgelegt. Aber diese internen Vorgänge interessieren einen Hochsprachenprogrammierer nur nebensächlich bis gar nicht. Im Zusammenhang mit PHP ist mir die Formulierung des Holens bewusst immer nur bei $_GET/$_POST aufgefallen und zwar im Sinne von beschaffen, aus einen "mysteriösen" Konstrukt holen und in einen "seriöses" legen. Bei allen anderen Variablen (inklusive Arrays) spricht man eigentlich nicht vom Holen sondern verwendet sie irgendwie "ganz normal". (Das ist reine Empirie meinerseits und kein Resultat einer wissenschaftlichen Erhebung.)

              dedlfix.

  3. Lieber fischboy13,

    <head><title>Willkommen</title>
    <?php
    if($verhalten == 1) {
    ?>
    <meta http-equiv="refresh" content="3; URL=private.php" />
    </head>

    prüft "private.php" eigentlich darauf, ob der User korrekt angemeldet ist? Und wenn ja, wie?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)