PHP Parse error <-- Verstehe nicht was falsch ist

xlShortylx

Cadet 4th Year
Registriert
Sep. 2012
Beiträge
103
Hallo Community,

ehrlich gesagt verstehe ich nicht was daran falsch sein soll. Ich fang gerade mit Php an oder versuche es zumindest und wollte einfach mal eine Registrierungs- und Loginpage auf meinen Webspace einrichten. Nur das funktioniert natürlich nicht ohne weiteres, hier mein Problem:


Fehler:

Parse error: syntax error, unexpected T_VARIABLE in /data/multiserv/users/1056634/projects/2383822/www/eintragen.php on line 1




Quellcode:

<?php

$verbindung = mysql_connect("tragichwiederein", "tragichwiederein" , "tragichwiederein")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");

mysql_select_db("tragichwiederein") or die ("Datenbank konnte nicht ausgewählt werden");

$username = $_POST["username"];
$passwort = $_POST["passwort"];
$passwort2 = $_POST["passwort2"];




Außerdem:

Fehler:

Parse error: syntax error, unexpected '{' in /data/multiserv/users/1056634/projects/2383822/www/geheim.php on line 1



Quellcode:

<?php
session_start();
?>

<?php
if(!isset($_SESSION["username"]))
{
echo "Bitte erst <a href=\"login.html\">einloggen</a>";
exit;
}
?>





Nun meine Frage, kann sich einer vorstellen wo der Fehler liegt? Der Fehler kommt natürlich auch bei meinem Login-Script in Zeile 1.


Wäre schön wenn einer nen Vorschlag hätte.
 
Zuletzt bearbeitet:
Hast du wirklich alle relevanten Code-Abschnitte gepostet? Gerade die Zeilennummern, in denen die Fehler auftreten sollen, erscheinen mir merkwürdig...
 
Das ist es ja, laut dem Error steht der Fehler doch in Zeile 1 oder nicht? Falls er auch woanders stehen könnte dann poste ich es mal ganz oder wie es am besten ist.



Habe gerade nen Fehler meinerseits bei der ausgewählten Datenbank gefunden aber klärt das Problem auch nicht.
 
Zuletzt bearbeitet:
wie editierst du deine dateien? mal zwischenzeitlich ein anderen editor verwendet?
sowas könnte eventuell an UFT8 mit BOM liegen
schau mal als was deine anderen dateien abgespeichert sind
 
Ich benutze gerade Notepad++ müsste noch nen anderen dafür runter laden.
 
der ist in ordnung
unten in der statusleiste siehst du rechts die kodierung (ansi, utf8, ...)

ändere die mal und schau wie sich das auf dein parser fehler auswirkt
 
Also die Zeilennummern machen in Bezug auf die geposteten Quellcodes nun mal keinen Sinn - außer es passt was absolut nicht mit Dateicodierungen, aber das halte ich eher für unwahrscheinlich...
 
War alles Ansi geht beides aber nicht ^^
Kann ich es dir mal per Nachricht schicken?
Ergänzung ()

Hier jetzt mal der komplette Quelltext (vill. wirds dan gefunden):



Html:

<html>
<head>
<title>Registrieren</title>
</head>
<body>
<form action="eintragen.php" method="post">
Dein Username:<br>
<input type="text" size="24" maxlength="50"
name="username"><br><br>

Dein Passwort:<br>
<input type="password" size="24" maxlength="50"
name="passwort"><br>

Passwort wiederholen:<br>
<input type="password" size="24" maxlength="50"
name="passwort2"><br>

<input type="submit" value="Abschicken">
</form>
</body>




Php:

<?php

$verbindung = mysql_connect("", "" , "")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");

mysql_select_db("") or die ("Datenbank konnte nicht ausgewählt werden");

$username = $_POST["username"];
$passwort = $_POST["passwort"];
$passwort2 = $_POST["passwort2"];

if($passwort != $passwort2 OR $username == "" OR $passwort == "")
{
echo "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"eintragen.html\">Zurück</a>";
exit;
}
$passwort = md5($passwort);

$result = mysql_query("SELECT id FROM login WHERE username LIKE '$username'");
$menge = mysql_num_rows($result);

if($menge == 0)
{
$eintrag = "INSERT INTO login (username, passwort) VALUES ('$username', '$passwort')";
$eintragen = mysql_query($eintrag);

if($eintragen == true)
{
echo "Benutzername <b>$username</b> wurde erstellt. <a href=\"login.html\">Login</a>";
}
else
{
echo "Fehler beim Speichern des Benutzernames. <a href=\"eintragen.html\">Zurück</a>";
}


}

else
{
echo "Benutzername schon vorhanden. <a href=\"eintragen.html\">Zurück</a>";
}
?>
 
Zuletzt bearbeitet:
Steht das <?php in der ersten Zeile und ab dem ersten Zeichen? Evtl Leerzeichen oder ganze leere Zeile davor?
 
Ne vor einer Stunde ca. war eins davor dass ich weggenommen habe aber es geht tzd. nicht ^^
 
Fehler in Zeile 1 heißt ja wirklich in der Datei in Zeile 1 und nicht im Script... das ist extrem merkwürdig...

würde mir aber gleich mal angewöhnen, bei IF-Anweisungen statt OR die gängigere Variante || zu verwenden...


Und ich hoffe, die Passwörter werden nicht im Klartext in der DB gespeichert...
 
Zuletzt bearbeitet:
Evtl. könnte das Zeilenende-Format falsch sein: In Notepad++ Einstellungen->Optionen->Dateien->Format->Zeilenende-Format->Auf Windows stellen. Falls dort nicht Windows stand, mal testweise bei einer php-Datei die Zeilenenden löschen und wieder einfügen.
 
Wie meinst du das mit Passwort als Klartext speichern?


Das mit den Enden löschen habe ich schon probiert. Ich werde am Nachmittag schauen ob Notepad verstellt ist aber denke nich.
Ergänzung ()

Wie meinst du das mit Passwort als Klartext speichern?


Das mit den Enden löschen habe ich schon probiert. Ich werde am Nachmittag schauen ob Notepad verstellt ist aber denke nich.




Und jetzt hab ich den Fehler,habs mir gerade über das Handy per Ftp angeschaut und man glaube es nicht da waren 3 kleine Zeichen vor <?php somit konnte es nicht gehen.

Vielen Dank für eure Bemühung
 
Naja dass die Passworter in irgendeiner "verschlüsselten" Form gespeichert werden, so dass man nicht in der Datenbank die Passwörter in Klartext stehen hat...
 
Na ja, er schreibt keinen Klartext... aber fast. Siehe Code: $passwort = md5($passwort);
Ungesalzene Hashes sind kaum besser als Klartext. Dafür gibts Rainbow Tables, da ist aus dem Hash das Klartext-Passwort in vielleicht ner Stunde ausgelesen, wenn überhaupt.

Insgesamt ermangelt es hier reichlich an Sicherheit. Das Ding schreit geradezu nach einer SQL Injection Attacke.


Ach ja, und die 3 kleinen Zeichen vor <?php waren der BOM. Willkommen in der WIndows-Welt, wo viele Editoren diesen BOM-Mist mit in Dateien schreiben, selbst wenn man es nicht erwartet. Ich weiß schon, warum ich unter Linux programmiere, da is mir sowas noch nie passiert.
 
Ah ok, hab die md5-Zeile übersehen... naja md5 is mal auf jeden Fall besser als gar nichts, zumindest wenn der Besucher selbst auf Sicherheit beim Passwort achtet.
 
md5 ist nichts... wenn die user nicht gerade ein sehr langes passwort mit zahlen und sonderzeichen verwenden gibts das pw sicher in den Rainbow Tables. Also einfach die RT nach dem Hash-Wert durchsuchen lassen und fertig.
 
Zurück
Oben