PHP: Parse error - syntax error; unexpected end of file

Hi alle,

ich habe, wie immer, an meiner Seite rumgewerkelt. !haue
Dann habe ich das Verfahren, wie die Formulare bearbeitet werden, verkleinert - ein paar Bearbeitungs-PHP-Dateien flogen raus und die Codes setzte ich in die gleichen Formular-Datei.
Nun wird immer abgefragt, ob eine $_GET-Variable vorhanden ist, oder nicht - dann wird der dementsprechende Code ausgegeben bzw. verarbeitet.

Nun tauchte aber ein Parse error auf!
Parse error: syntax error, unexpected end of file in /users/elrontur/www/elrontur/user/signatur.php on line 1

Hier wäre der dementsprechende Code:

[code]<?php
if($sess == 1) {
if(!isset($_GET[‚generate‘])) {
echo "

Signaturen-Generator


Hier kannst du deine eigene Minecraft-Signatur erstellen!
So kann diese aussehen:
<img src=„img/signatur_example.png“ style=„margin: 0; margin-top: 15px; margin-bottom: 15px;“>
Zur gleichen Zeit generierte Signaturen könnten überschrieben werden!
Achte daher auf deine Eingaben und dem Bild, welches generiert wurde.

        <form method=\"post\" action=\"index.php?p=14&generate\">
          <label for=\"background\">Hintergrund</label> <br>
          <select name=\"background\" id=\"background\">
            <option value=\"elrontur\">Elrontur</option>
            <option value=\"brixxcity\">BrixxCity</option>
            <option value=\"brixxnetwork\">BrixxNetwork</option>
            <option value=\"minecraft\">Minecraft</option>
            <option value=\"minecraft_landscapes\">Minecraft - Landscapes</option>
            <option value=\"minecraft_highsand\">Minecraft - High Sand</option>
            <option value=\"minecraft_frostvalley\">Minecraft - Frost Valley</option>
            <option value=\"minecraft_sparkle\">Minecraft - Sparkle</option>
            <option value=\"minecraft_mossycage\">Minecraft - Mossy Cage</option>
            <option value=\"minecraft_skyrim\">Minecraft - Sky Rim</option>
            <option value=\"minecraft_redwarts\">Minecraft - Red Warts</option>
            <option value=\"minecraft_lavafalls\">Minecraft - Lava Falls</option>
          </select> <br><br>
        
          <label for=\"signame\">Signaturen-Name (16 Zeichen)</label> <br>
          <input type=\"text\" name=\"signame\" id=\"signame\" size=\"17\" maxlength=\"16\" placeholder=\"Steve\" required> <br>
          
          <label for=\"rank\">Rang (ohne <b>[ ]</b>)</label> <br>
          <input type=\"text\" name=\"rank\" id=\"rank\" size=\"25\" placeholder=\"User\"> <br>
          
          <label for=\"joindate\">Dabei seit...</label> <br>
          <input type=\"text\" name=\"joindate\" id=\"joindate\" size=\"25\" placeholder=\"01.01.2000\"> <br>
          
          <label for=\"website\">Website (ohne <b>http://</b>)</label> <br>
          <input type=\"text\" name=\"website\" id=\"website\" size=\"50\" placeholder=\"example.tld\"> <br>
          
          <label for=\"slogan\">Spruch (Keine Sonderzeichen)</label> <br>
          <input type=\"text\" name=\"slogan\" id=\"slogan\" size=\"50\" placeholder=\"Elro's Fan\"> <br>
          
          <input type=\"submit\" name=\"generate\" value=\"Generieren\">
        </form>";
} else {
  $username = mysql_real_escape_string(strip_tags($_SESSION['user']));  

  $signame = mysql_real_escape_string(strip_tags($_POST['signame']));    
  $background = strip_tags($_POST['background']);
  $rank = strip_tags($_POST['rank']);
  $joindate = strip_tags($_POST['joindate']);
  $website = strip_tags($_POST['website']);
  $slogan = strip_tags($_POST['slogan']);
    
  $width = 420;
  $height = 80;
  $img = ImageCreateFromPNG("signatur/background/".$background.".png");
  
  $hellgruen = ImageColorAllocate($img, 219, 242, 190);
  $gruen = ImageColorAllocate($img, 177, 224, 116);
  $weiß = ImageColorAllocate($img, 255, 255, 255);
  
  ImageString($img, 1, 343, 69, "(C) by Elrontur", $gruen);
  
  ImageString($img, 5, 10, 7, $signame, $hellgruen);
  
  if($rank != null) {
    ImageString($img, 2, 15, 22, "[".$rank."]", $weiß);
  }
  
  if($joindate != null AND $rank != null) {
    ImageString($img, 2, 16, 33, "Dabei seit ".$joindate, $weiß);
  } else if($joindate != null AND $rank == null) {
    ImageString($img, 2, 16, 22, "Dabei seit ".$joindate, $weiß);  
  } 
   
  if($website != null AND $rank != null AND $joindate != null) {
    ImageString($img, 2, 16, 44, "http://".$website, $weiß);
  } else if($website != null AND $rank != null AND $joindate == null) {
    ImageString($img, 2, 16, 33, "http://".$website, $weiß);
  } else if($website != null AND $rank == null AND $joindate != null) {
    ImageString($img, 2, 16, 33, "http://".$website, $weiß);    
  } else if($website != null AND $rank == null AND $joindate == null) {
    ImageString($img, 2, 16, 22, "http://".$website, $weiß);
  }
  
  if($slogan != null) {
    ImageString($img, 3, 25, 59, $slogan, $weiß);
  }
    
  // Legende:
  # Die erste Zahl steht für die Schrifthöhe (geht nur bis zur 5).
  # Die zweite Zahl bzw. 250 steht für die Position von Links.
  # Die dritte Zahl steht für die Postion von Oben.
  # Der Text, ist der, der später im Bild erscheinen soll.
  
  
  $sigdate = date("U");
  
  mysql_query("INSERT INTO ro_signatur (username, signatur) VALUES ('$username', '$sigdate')") or die("[MySQL] ".mysql_error());
  
  if (is_dir("signatur/$username/") == false) {
    mkdir("signatur/$username/");
  } 
      
  ImagePNG($img, "signatur/$username/$sigdate.png", 9);
  ImageDestroy($img);
          
  echo "So sieht die Signatur #$sigdate von dir aus: <br>
        <img src=\"signatur/$username/$sigdate.png\" style=\"margin: 0; margin-top: 15px; margin-bottom: 15px;\">
        <label for=\"picurl\">URL</label> <br>
        <input type=\"text\" name=\"picurl\" id=\"picurl\" size=\"75\" value=\"http://elrontur.bplaced.net/elrontur/signatur/$username/$sigdate.png\" readonly>";
}

} else {
echo „Du bist nicht eingeloggt! <a href=„index.php?p=6“>Jetzt einloggen“;
}
?>[/code]

Die Infos total vergessen:
Auf dem lokalen XAMPP geht das wunderbar.
Hier macht mir das tolle bplaced einen Strich durch die Rechnung!
Das ist aber auch wirklich nur diese eine Seite - alles andere sollte meiner Meinung nach funktionieren…

Wenn mir jemand die unschöne Lücke findet, darf sie behalten, sich da breit machen und mir die Lösung parat stellen. :smiley:
Danke an alle Code-Leser!

Grüße,
Elrontur

Hi,

der Meldung zu urteilen dürfte irgendwo noch etwas offen sein, das eigenlich geschlossen sein müsste. Ich vermute, dass hier eine (ggf. geschweifte) Klammer zu fehlt.

XAMPP toleriert viele Fehler und hat eine Konfiguration, die mit unserer nichts gemein hat…

Ich muss direkt sagen, dass ich nichts mehr sehe, was falsch sein könnte! :motz:
Man, der Fehler muss sich mir doch nur zeigen und ich habe endlich Ruhe…

hi,

also die Datei /users/elrontur/www/elrontur/user/signatur.php hat nur eine Zeile - der ganze Quelltext ist in dieser zusammengequetscht.

Das wird hier wohl mit den Newlines bzw. Zeilenumbrüchen ein Problem sein, davon gibt es nämlich 3 verschiedene Typen, von denen eine ganz korrekt ist, die 2. geht auch, aber die 3. nicht (und unter „korrekt“ verstehe ich, dass jeder Linux verwendet :ps: )

Schau doch bitte mal in Deinem FTP-Client wie die Dateien übermittelt werden; ob „auto“, „binary“ oder „ASCII“ - belasse es bitte mal auf auto, ansonsten wäre die Frage zu klären ob Dein Editor die Zeilenumbrüche anders abspeichern könnte.

ciao

Danke für die Informationen, miro!

Ich nutze PSPad als meinen Editor.
Sogesehen behindert der Editor die Dateien mit Zeilenumbrüchen nicht.
Wie der diese aber abspeichert, habe ich keinen Plan…

Der FTP-Client (FileZilla) ist auf Automatisch eingestellt und war es auch immer.
Die Datei habe ich nochmal gelöscht und neu geuploadet, aber es besserte sich nichts.

Grüße,
Elrontur

EDIT:
Ich habe einfach mal eine „neue“ Datei (also im Editor) erstellt und die bereits bestehende überschrieben.
Dann nach wiederholtem Löschen und Uploaden tauchte dann ein Fehler auf, wie es sein soll!
Ein ‚)‘ war zu viel - genau dieses, welche ich vorher für eine MySQL-Behandlung brauchte, nun aber nicht mehr… :ps:
(Es ist ja wohl unsinnig, eine Variable mit mysql_real_escape_string() zu „behandeln“, wenn diese Variable nicht mehr in die Datenbank eingetragen wird.)

[quote=„miro“][]
Das wird hier wohl mit den Newlines bzw. Zeilenumbrüchen ein Problem sein, davon gibt es nämlich 3 verschiedene Typen, von denen eine ganz korrekt ist, die 2. geht auch, aber die 3. nicht (und unter „korrekt“ verstehe ich, dass jeder Linux verwendet :ps: )
[][/quote]das jeder Linux verwendet is da nicht das Kriterium… LF als Umbruch is einfach nur Logisch :wink: Immerhin sind wir am PC und nicht an einer Schreibmaschine wo man erst nen Carriage Return benötigt um dann nen Line Feed zu machen [size=85](wobei die Reihenfolge sogar egal sein dürfte)[/size]
Soweit is Windows Weg sogar noch iwie verständlich… [size=85](allerdings verschwenden die 1 byte)[/size] gänzlich verkackt hat es nur Apple die immer wieder die selbe Zeile überschreiben xD [size=85](und nie ne neue Zeile nehmen^^)[/size]

„Mac OS bis Version 9“ liegt 12 Jahre zurück, von „immer“ kann somit nicht mehr die Rede sein. :p

hmm… ok das is mir neu xD Dafür das Mac seit 2001 wohl LF nutzen soll, wird heute noch immer überwiegend CR genutzt… Das ist zumindest das was ich des öfteren sah^^ Darauf basiert auch meine Aussage. [size=85](Erfahrungswerte, nicht gehörtes :stuck_out_tongue:)[/size]
Is halt die Frage ob Apple selbst noch CR nutzt… das es LF beherrscht ist eher notwendig gewesen damit übliche Linux Dateien überhaupt brauchbar sind etc.