Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] header infos für zeichensatz senden (XHTML konform)

Einklappen

Neue Werbung 2019

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

  • [Erledigt] header infos für zeichensatz senden (XHTML konform)

    moin moin!

    (ich hoffe ich bin damit hier richtig...und hab auch sonst nicht wieder was vergessen.. )

    ich versuche grade meine seite XHTML strict konform zu gestalten. dafür müsste ich anscheinend die infos für den zeichensatz ganz am anfang des dokuments platzieren.

    da komm ich jetzt allerdings mit session_start() irgendwie ins gehege.
    wenn ich die zeile
    PHP-Code:
    <?xml version="1.0" encoding="iso-8859-1"?>
    am anfang des docs einfüge, und erst danach
    PHP-Code:
    <?php session_start(); ?>
    läuft nix. "unexpected t-string..."

    wenn ich nun innerhalb des php-scripts vor oder nach session_start die zeile
    PHP-Code:
    header('Content-Type: text/html; charset=iso-8859-1'); 
    einfüge, bekomme ich entweder den selben fehler, oder das doc ist nicht XHTML valid.

    was für möglichkeiten gibts denn noch?

    lg konfusius

  • #2
    http://php.de/wiki-php/index.php/Headers_already_sent

    Kommentar


    • #3
      tut mir leid, damit komme ich nicht weiter.

      in dem artikel stehen hauptsächlich negativbeispiele. unter empfehlungen am schluss steht leider etwas für mich unverständliches. ich persönlich könnte daraus nur blödsinn schliessen, in etwa der art, dass ich als erstes (vor dem script mit session_start() noch ein script ohne end-tag einfügen sollte. was anscheinend ja schwachsinn ist.

      Kommentar


      • #4
        Mir fällt da als Mit-Laie folgendes auf:
        Dein PHP interpretiert Short Open Tags, d.h. du kannst am Anfang statt <?PHP auch <? schreiben,
        deshalb wird das
        PHP-Code:
        <?xml version="1.0" encoding="iso-8859-1"?>
        auch als PHP Code ausgeführt, was verständlicherweise zu Fehlermeldungen ohnesgleichen führt.
        Du kannst das umgehen indem du die Xml-Deklaration direkt in PHP mit einem echo-Tag rauswirfst.
        (Falls da einer was besseres hat bitte mitteilen!)

        Was die Fehlermeldung mit den Headern angeht:

        Die Header müssen immer gesendet werden BEVOR du eine Ausgabe an den Browser machst.
        D.h. schon allein ein Leerzeichen vor dem <?PHP genügt um deine Applikation zu killen.

        Da session_start() keine Ausgabe macht kannst du die Header-Angaben auch danach schreiben.

        Kommentar


        • #5
          Zitat von iceteea Beitrag anzeigen
          Mir fällt da als Mit-Laie folgendes auf:
          Dein PHP interpretiert Short Open Tags, d.h. du kannst am Anfang statt <?PHP auch <? schreiben,
          deshalb wird das
          PHP-Code:
          <?xml version="1.0" encoding="iso-8859-1"?>
          auch als PHP Code ausgeführt, was verständlicherweise zu Fehlermeldungen ohnesgleichen führt.
          Du kannst das umgehen indem du die Xml-Deklaration direkt in PHP mit einem echo-Tag rauswirfst.
          (Falls da einer was besseres hat bitte mitteilen!)
          aber sicher doch .. Schalt den Blödsinn mit Short Open Tags schnellstens ab!

          ansonsten : PHP -Header senden, HTML / XHTML - Header hinterher .. funktioniert - und auch nur in dieser Reihenfolge

          Kommentar


          • #6
            vielen dank, das hilft mir fast schon weiter...

            dass ich vor dem header nicht mal ein leerzeichen oder anderen white-space oder was auch immer stehen haben darf, weiss ich. so seit ungefähr 5 minuten.
            dass die xml zeile als php code interpretiert wurde - hä?! wär ich nie drauf gekommen, danke! da steht doch statt "php" schliesslich "xml" in der zeile. aber okay, dann ist das so.

            aber wie wirft man da jetzt was mit einem echo-tag raus?

            hatte übrigens auch mit der anweisung "header" grad noch probiert. aber bei
            PHP-Code:
            <?phpheader(.....);
            bekomme ich dann den schlichten hinweis, dass diese funktion nicht definiert ist.

            was müsste man denn da noch definieren?

            Kommentar


            • #7
              oaky, ich glaube es klingelt irgendwo im hintergrund was ganz leise.
              ich schau mal, wie ich dei short open tags ausschalte.

              dumm sein macht keinen spass.

              Kommentar


              • #8
                Zitat von konfusius Beitrag anzeigen
                aber wie wirft man da jetzt was mit einem echo-tag raus?
                PHP-Code:
                <?php echo '<?xml version="1.0" encoding="iso-8859-1"?>'?>
                Zitat von konfusius Beitrag anzeigen
                hatte übrigens auch mit der anweisung "header" grad noch probiert. aber bei
                PHP-Code:
                <?phpheader(.....);
                bekomme ich dann den schlichten hinweis, dass diese funktion nicht definiert ist.
                Da fehlt ein Leerzeichen: <?php header(.....);

                Kommentar


                • #9
                  okay. ich dachte jetzt, da dürfte unter keinen umständen eins sein.

                  ich merk übrigens grade, dass ich mit dem ausschalten der short open tags wohl ein problem habe. ich habe auf dem server keinen zugriff auf die php.ini...
                  support usw, okay, aber das könnte ne ganze weile dauern glaub ich.

                  ich versuch das jetz mal mit der echo-lösung...

                  Kommentar


                  • #10
                    wegens echo ...

                    PHP-Code:
                    <?PHP
                      session_start
                    (); // PHP-Header für Session ..
                      
                    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
                       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'
                    ;
                      echo 
                    '<html><head>';
                    ... 
                    // und weiter gehts
                    sieht zugegeben ziemlich hässlich aus ...

                    du kannst aber auch dein PHP-Script zwischendurch mal "verlassen" und reines HTML da reinschreiben

                    PHP-Code:
                    <?PHP
                      session_start
                    ();
                    ?>
                    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
                       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                    <html>
                    <head>
                    <title>.....</title>
                    </head>
                    <body>
                    <?PHP
                    //ab hier steigst du wieder mit deinem Script ein

                    Kommentar


                    • #11
                      Zitat von konfusius Beitrag anzeigen
                      okay. ich dachte jetzt, da dürfte unter keinen umständen eins sein.
                      Es darf kein HTML vor den HTTP-Headern ausgegeben werden.

                      Seit wann gelangen Leerzeichen aus dem PHP-Quelltext in die Ausgabe? Du bringst da etwas durcheinander

                      Kommentar


                      • #12
                        umgekehrt ist gefährlicher ...

                        ein Leerzeichen / Leerzeile vor <?PHP provoziert die berühmt berüchtigte Fehlermeldung mit "Headers already sent"

                        Kommentar


                        • #13
                          großartig.

                          mit
                          PHP-Code:
                          <?php header ('......');
                          ist jetzt alles gut.

                          VIELEN DANK!!!!


                          p.s.: ...grad gelesen.. stimmt. ich bring was durcheinander. ich trottel. warum gibts hier kene emoticons, die sich mit dem hammer auf den kopf hauen?

                          Kommentar


                          • #14
                            Zitat von konfusius Beitrag anzeigen
                            ich versuche grade meine seite XHTML strict konform zu gestalten. dafür müsste ich anscheinend die infos für den zeichensatz ganz am anfang des dokuments platzieren.
                            Mach dir erst mal klar, dass das PHP-Script etwas vollkommen anderes ist als das „Dokument“, welches es an den Client ausgibt.

                            Die haben jeweils ihr eigenes „ganz am Anfang“, und es bedeutet etwas vollkommen anderes.

                            Kommentar


                            • #15
                              okay, danke für den hinweis.

                              Kommentar

                              Lädt...
                              X