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

[ERLEDIGT] PHP Parse error: syntax error, unexpected '}' | Kann's nicht finden

Nakroma

Mitglied
Hey,
Entweder ich bin zu blöd oder PHP mag mich nicht. Mir ist total bewusst was diese Fehlermeldung bedeutet, aber ich kann beim besten Willen kein '}' zuviel oder zuwenig finden, und auch keine anderen Fehler a lá fehlendens ';' welches dazu führen könnte.
Hier die Fehlermeldung:
Code:
[29-May-2013 11:54:16 UTC] PHP Parse error:  syntax error, unexpected '}' in /home/adm10044/public_html/login.php on line 24
Und hier der Code:
PHP:
<?php

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

include 'mysql.php';
session_start();

mysql_connect($db_host, $db_username, $db_password) or die ("No connection possible!");
mysql_select_db($db_name) or die ("No database found!");


if ($username == '' | $passwort == '')
{
    echo 'Manche Felder sind nicht ausgefüllt';
} 
else 
{
    $loginc_select = "SELECT Username, Passwort FROM User WHERE Username LIKE '$username' LIMIT 1"; 
    $loginc_query = mysql_query($loginc_select);
    $loginc_fetch = mysql_fetch_object($loginc_query);

    if($loginc_fetch->Passwort == $passwort)
    { //Linie 24
        $_SESSION["username"] = $username;
        header("Location: board.php");
        exit;
    } 
    else 
    {
        echo "Benutzername und/oder Passwort waren falsch. <a href=\"index.php\">Zurück zum Login</a>";
    } 
}
?>
 
Werbung:
also ich hab schon ein Fehler gefunden bei dem "oder zeichen"

PHP:
if ($username == '' | $passwort == '')

da fehlt ein |

edit: und bitte mysqli oder PDO verwenden, das alte mysql wird mit der nächsten PHP version sowieso abgeschafft.
 
Zuletzt bearbeitet:
Falls du das für ne Community oder so etwas verwenden willst, solltest du Dich auch ein bisschen um die Sicherheit kümmern.

Der Script ist offen wie mein Schlitzloch :neutral:
 
Zuletzt bearbeitet:
Werbung:
du musst das Passwort über $loginc_fetch['Passwort'] ansprechen. Ob das oder-Zeichen einfach oder doppelt ist, ist beim Vergleich von zwei Bool-Werten übrigens egel, da es sich beim einfachen | um ein bitwise-or handelt.
 
PHP:
if($loginc_fetch["Passwort"] == $passwort)//Line 23
Jetzt kommt folgende Fehlermeldung
Code:
[29-May-2013 14:37:13 UTC] PHP Fatal error:  Cannot use object of type stdClass as array in /home/adm10044/public_html/login.php on line 23
 
Werbung:
Werbung:
Und was soll die Ausgabe von var_dump an einem angeblichen Parse-Error ändern?
 
PHP:
object(stdClass)#1 (2) {   ["Username"]=>   string(8) "TestUser"   ["Passwort"]=>   string(6) "TestPW" }
 
Zuletzt bearbeitet:
Werbung:
Kanns vielleicht sein, das du deinen Texteditor mit einem FTP Plugin mit dem Webserver verbunden hast, aber vergessen hast die Verbindung aufzubauen und somit die Datei nicht upgedated wird?

Ist mir nämlich mal passiert :O und hab ich auch schon von anderen gehört.
 
Werbung:
du musst das Passwort über $loginc_fetch['Passwort'] ansprechen. Ob das oder-Zeichen einfach oder doppelt ist, ist beim Vergleich von zwei Bool-Werten übrigens egel, da es sich beim einfachen | um ein bitwise-or handelt.
@zorndyuke so hatte ich es ja vorher, dann kommt aber die Fehlermeldung mit der unnötigen '}'.
 
Guten Morgen, mal so ne Frage an die Allgemeinheit,
könnte es möglich sein, dass der Fehler in der mysql.php datei liegt. Da er diese ja includiert.

Sprich wird es so erkannt, dass es in der login.php ist? Oder wird es denn angezeigt, dass es in der mysql.php ist?

Denn von den Klammern her würde ich sagen, dass da keine fehlt.

Ansonsten vllt wirklich nochmal die datei auf dem ftp anschauen, vielleicht wird die Datei nicht ganz hochgeladen. Ich habe das Problem zum Beispiel mit Notepad++ sehr oft, da lädt er eine Datei nur zum Teil hoch.
 
@zorndyuke so hatte ich es ja vorher, dann kommt aber die Fehlermeldung mit der unnötigen '}'.

Richtig. Aber eine Fehlerebene tiefer zu gehen macht das nicht besser :p

PHP:
$loginc_fetch = mysql_fetch_object($loginc_query);

Hier wird es ja als Object definiert. Wenn man es als Array behandeln möchte, muss folgendes da stehen:

PHP:
$loginc_fetch = mysql_fetch_assoc($loginc_query);

Dann wäre $loginc_fetch['Passwort'] möglich.
 
Werbung:
Ich habs mal probeweise auf einen anderen Webspace aufgespielt und dort kommt dieser Fehler:
Code:
[B]Warning[/B]:  Cannot modify header information - headers already sent by (output started at /var/www/web3/html/atlboard/login.php:22) in [B]/var/www/web3/html/atlboard/login.php[/B] on line [B]27[/B]
Line 27 wäre das hier:
PHP:
header("Location: board.php");
Ich hab mal meinen Code nach Leerzeichen durchsucht, konnte aber keines finden, daran liegts also nicht :/
€: Ok ich hab das mit ob_start und ob_end_flush geregelt, danke an alle die sich hier trotzdem mühe gemacht haben :)
 
Zuletzt bearbeitet:
Zurück
Oben