Skript startet bei Meta-Charset-Angabe erneut

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Skript startet bei Meta-Charset-Angabe erneut

    Hallo,

    gegen das Ende meines php-Skriptes wird externer php-Code mit der HTML-Ausgabe per include() eingebunden.

    Im Header des HTML-Codes befindet sich die Zeile:

    PHP-Code:
    echo "<META http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">"
    Warum wird mein Skript, das diesen Code einbindet, gleich nochmal ausgeführt, wenn diese Zeile im Header drinsteht - Zusammenhang??

    Kommentiere ich sie raus, läuft alles prima.

    Gruß Michi

  • #2
    zeig doch mal (vereinfacht), was das skript macht.

    Kommentar


    • #3
      &quot;Skript saust durch&quot;

      Hallo,

      Grober Ablauf in technischer Hinsicht in meinem Skript:

      1. Aufruf des betroffenen Skripts "XYZ" von Fremdserver über

      header ("location: skriptname.php?parameter=...");


      Wichtige Frage hier schon: Ist ein header ("location: ") - Aufruf unter Übergabe von Parametern gültig und astrein? Wenn nicht, welche Technik empfiehlt sich dann?

      2. nach allerhand Datenbankoperationen im Skript "XYZ" letztenendes entweder
      • Erfolgsbestätigung

      oder
      • Fehlermeldung


      Für jegliche Ausgabe in einer selbstkonstruierten Messagebox müssen aus zwei externen php-Dateien sowohl Funktionen wie z.B.
      • function Ueberschrift()
        ...

      • function Tabellenende()
        ...



      als auch php-Code zum Aufbau einer HTML-Seite im gewünschten Stil per include() eingebunden werden.

      Enthält dieser letztgenannte php-Code zum Aufbau der HTML-Seite nun die o.g. Charset-Angabe
      (
      Code:
      echo "<META http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">";
      ),
      dann wird mein Skript "XYZ", das diesen Code per include() einbindet, erneut aufgerufen.

      _______________________________________________________________________________________________

      Erwähnen möchte ich in diesem Zusammenhang, dass ich bei den Weiterleitungen vom Fremdserver auf mein Skript "XYZ" über

      header ("location: ... ?parameter");

      momentan immer die Zeichenfolge

      
      ganz am Anfang des Dokuments "XYZ" bekomme.

      Hatte dieses Problem schon an anderer Stelle.
      Habe dann UTF-8 statt ISO-8859-1 per Meta-Angabe als Charset eingestellt und es hat geklappt, keine komischen Zeichen mehr. Eine vernünftige Lösung ist das allerdings nicht, mein ich.

      Diese Ausgabe erscheint stets als allererstes im Dokument, auch wenn ich als erste Zeile in meinem php-Code

      echo "test"

      einbaue, sodass ich schlussfolgere, dass sie wohl von "draußen" kommt,
      also z.B. über die (schief codierten?) $_GET-Variablen?

      Wenn ich bei header ("location: ...") überhaupt Parameter angeben darf...

      _______________________________________________________________________________________________

      Gruß Michi
      Zuletzt geändert von Gruselgockel; 26.12.2005, 13:09.

      Kommentar


      • #4
        1. darfst du machen, ist nicht schlimm.
        2. die komischen zeichen kommen tatsächlich von der kodierungsumstellung. das wird wahrscheinlich auch das problem sein. ich würde u.u. den editor wechseln.

        Kommentar


        • #5
          PHP-Code:
          header ("location: skriptname.php?parameter=..."); 
          Soetwas ist definitv falsch! Richtig ist
          PHP-Code:
          header ("location: htp:/server/skriptname.php?parameter=..."); 
          Gruß
          Uwe

          Kommentar


          • #6
            und
            htp:/server/
            ist definitiv richtig?

            laut rfc muss der pfad absolut sein, wenn es sich um einen header gemäß http 1.1 handelt.

            Kommentar


            • #7
              Einschränkungen bei relativer Angabe

              Hi uwe59,

              Original geschrieben von uwe59
              PHP-Code:
              header ("location: skriptname.php?parameter=..."); 
              Soetwas ist definitv falsch! Richtig ist
              PHP-Code:
              header ("location: htp:/server/skriptname.php?parameter=..."); 
              Gruß
              Uwe
              Welche Aussagen lassen sich über eine relative Angabe hinter "location: " treffen? (außer, dass das pauschal falsch ist )

              Irgendwie ist es ja doch nur so halb falsch bzw. immerhin so halb richtig , es geht ja einigermaßen (leider - und nun kann ich zig Skripte korrigieren ), aber wo genau setzen dabei die Einschränkungen an?

              Geht das nur zufällig grad auf meinem HTTP-Server oder wie muss ich mir das vorstellen, abgesehen davon, dass ich es natürlich so oder so perfekt haben will und von daher nun die komplette URL einbaue?

              Dieses Problem habe ich jedoch auch nur an einigen anderen Stellen meiner Skripte, nicht jedoch beim Aufruf zwischen den Servern, da verwende ich natürlich bereits die absolute Angabe, sonst ginge vermutlich gar nichts. Besteht da nun dennoch ein Zusammenhang zwischen dem header ("location: ") - Aufruf und dem nochmaligen Ausführen des Skripts bzw. den seltsamen Sonderzeichen, selbst, wenn ich die komplette URL hinter location angebe und nach der header-Weiterleitung ein

              exit;

              einbaue? Kann das Folge einer Weiterleitung sein?

              Gruß Michi
              Zuletzt geändert von Gruselgockel; 26.12.2005, 14:05.

              Kommentar


              • #8
                das wird wohl kaum das problem sein, denn die umleitung wird auch bei relativer pfadangabe ausgeführt (rückwärtskompatibilität beim htt-protokol ist eine wichtige voraussetzung dafür, dass das gesamte internet beim upgraden nicht zusammenklappt...).

                die kaputte kodierung dagegen kann so ziemlich einiges an fehler produzieren (für mich eine unerklärliche tatsache, die jedoch schon öfter aufgetreten ist).
                Zuletzt geändert von penizillin; 26.12.2005, 14:08.

                Kommentar


                • #9
                  die komischen Sonderzeichen

                  Hi penizillin,

                  Original geschrieben von penizillin
                  2. die komischen zeichen kommen tatsächlich von der kodierungsumstellung. das wird wahrscheinlich auch das problem sein. ich würde u.u. den editor wechseln.
                  Aber woher kommen diese Zeichen denn überhaupt? M.E. ja nicht aus dem Skript "XYZ" selbst, sondern eher von der header-Weiterleitung bzw. den Parametern.

                  Charset heißt für mich Zeichensatz, jedoch nicht Generierung von Zeichen. Woher kommen diese drei Sonderzeichen denn?
                  Wenn ich das Charset umstelle, müssten an sich dieselben Inhalte in lediglich anderer Darstellung erscheinen, oder nicht?

                  Ich verwende UltraEdit und kodiere alles per Hand. Aber wie gesagt vermuteich, dass es sich bei der Ausgabe um nichts handelt, was irgendwie aus dem Skript "XYZ" selbst kommt, da diese Sonderzeichen bereits vor der allerersten echo-Ausgabe ganz am Anfang meines Skripts erscheinen, sondern eher von der Weiterleitung.

                  Gruß Michi

                  Kommentar


                  • #10
                    nein, die kommen weder "von der weiterleitung", noch von den parametern.

                    hier eine grobe erklärung: http://www.emurasoft.com/de/emeditor3/faq.htm#39

                    nachzulesen:
                    http://de.wikipedia.org/wiki/Utf8

                    Kommentar


                    • #11
                      Hi penizillin,

                      Original geschrieben von penizillin
                      nachzulesen:
                      http://de.wikipedia.org/wiki/Utf8 [/B]
                      Ok, das ist mal eine Erklärung.

                      (Für mich zwar nicht unbedingt nachvollziehbar, warum ein anderes Charset einfach irgendwelche Zeichen ins Dokument schmeißt, aber solang man dann weiß, was zu tun ist, geht das mal fürn Anfang. )

                      Gruß Michi

                      Kommentar


                      • #12
                        arum ein anderes Charset einfach irgendwelche Zeichen ins Dokument schmeißt
                        das tut nich das charset, sondern dein editor.

                        Kommentar


                        • #13
                          Original geschrieben von penizillin
                          das tut nich das charset, sondern dein editor.
                          Rrrr, ja ok, hat lang gedauert, aber nun hab ich kapiert, worum es geht...

                          Kommentar


                          • #14
                            Aus der Doku zu header:

                            Anmerkung: HTTP/1.1 verlangt einen absoluten URI inklusive dem Schema, Hostnamen und absoluten Pfad als Argument von Location:, aber manche Clients akzeptieren auch relative URIs. Gewöhnlich können Sie mittels $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] und dirname() aus einem relativen Link einen absoluten URI selbst erstellen:

                            PHP-Code:
                            <?php
                            header
                            ("Location: [url]http://[/url]" $_SERVER['HTTP_HOST']
                                                  . 
                            rtrim(dirname($_SERVER['PHP_SELF']), '/\\')
                                                  . 
                            "/" $relative_url);
                            ?>
                            Gruß
                            Uwe

                            Kommentar


                            • #15
                              Ja ok, der Zeichensatz der Quellcodes wars - hab nun keine Probleme mit mysteriösen Sonderzeichen mehr.

                              Nachdem ich nun an allen möglichen Stellen (wenn es mir auch lieber wäre, wenn es eine Funktion im UltraEdit gäbe, die alle gewählten Dateien konvertiert und damit die manuelle Einzelbearbeitung aller beteiligten Skripte unnötig macht, wobei man ja auch leicht mal eines übersehen kann).

                              Hm, hab zwar Grundahnung von Charsets, aber auch nicht viel.

                              Wie sollte man denn die Frage von UltraEdit beim Öffnen von php-Dateien beantworten, ob man die Datei x ins MS-DOS-Format konvertieren möchte? Hat das einen Einfluss auf die "Lauffähigkeit der Skripte"?

                              Kommentar

                              Lädt...
                              X