Adrian: Code wird in XHTML Mode nicht ausgeführt

Hallo!

Ich habe folgendes Problem mit meiner Website:
Der PHP Code wird nicht mehr ausgeführt, nachdem ich auf XHTML umgestiegen bin...
Folgender Code:

  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<!-- ERSTELLT MIT PSPad -->  
<!-- Homepage: Copyright 2005 by Adrian Oeftiger | Beta-Version-->  
<html xmlns="http://www.w3.org/1999/xhtml">  
  <head>  
  
    <script type="text/php">  
      var $standardlayout = "gold"; //Standardlayout, das beim Besuchen ohne Cookie geöffnet wird  
      if(isset($newlayout) and isset($origin)) echo "  
      <" + "SCRIPT lang='text/javascript'>  
      document.cookie = '" + $newlayout + "';  
      window.location.replace('sites/" + $origin + "?layout=layout_' + document.cookie);  
      <" + "/SCRIPT>  
      "; //Diese Seite mit ?newlayout=LAYOUTNAME öffnen bringt ein anderes Layout  
  
      echo "  
      <" + "SCRIPT lang='text/javascript'>  
      function loadpage() {  
      if(!document.cookie) {  
      window.location.replace('sites/home.php?layout=layout_' + document.cookie);  
      }  
      else {  
      window.location.replace('sites/home.php?layout=layout_" + $standardlayout + "');  
      }  
      }  
      <" + "/SCRIPT>  
      ";  
    </script>  
  
    <title>Oeftiger</title>  
  
  </head>  
  <body onload="loadpage();">  
  </body>  
</html>  

Wo liegt der Fehler? Oder unterstützt XHTML kein PHP?

Mit freundlichen Grüßen,
Adrian

  1. Hi,

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          if(isset($newlayout) and isset($origin)) echo "
          <" + "SCRIPT lang='text/javascript'>

    Was soll die Zerhackstückelung des Elements? Ein SCRIPT-Element gibt es in XHTML gar nicht (dort sind alle Elementnamen kleingeschrieben).
    Selbst wenn script gemeint ist: da fehlt das type-Attribut.

    <" + "/SCRIPT>

    Schon wieder diese Zerhackstückelung ...

    Wo liegt der Fehler? Oder unterstützt XHTML kein PHP?

    Nein, XHTML unterstützt PHP nicht. HTML unterstützt PHP auch nicht.
    [X]HTML hat ja auch NICHTS mit PHP zu tun (außer daß manche PHP-Scripte zufällig [X]HTML ausgeben, bzw. etwas [X]HTML-ähnliches, wie in Deinem Fall).

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo!

      Alles klar, das heisst ich muss die Sachen ändern, aber grundlegend funktioniert das...

      Mit freundlichen Grüßen,
      Adrian

      1. Hallo!

        aber grundlegend funktioniert das...

        Ne tuts nicht... :? (bin noch im mozilla am testen)

        Seite: [link=http://oeftiger.germanclanzone.de/oeftiger-new/index.php]

        Mit freundlichen Grüßen,
        Adrian

    2. Hallo!

      <" + "SCRIPT lang='text/javascript'>
      Was soll die Zerhackstückelung des Elements?

      das liegt daran, dass ich angst habe, dass das </script> auf den php script bezogen wird, weil mein editor das so anzeigt...

      Mit freundlichen Grüßen,
      Adrian

      1. echo $begrüßung;

        <" + "SCRIPT lang='text/javascript'>
        Was soll die Zerhackstückelung des Elements?

        das liegt daran, dass ich angst habe, dass das </script> auf den php script bezogen wird, weil mein editor das so anzeigt...

        Dein Editor und du, ihr habt beide unbegründet Angst. PHP bemerkt es, wenn das "PHP-Ende-Symbol" innerhalb eines Strings auftaucht und wertet das dann nicht als solches.

        echo "$verabschiedung $name";

  2. Hi,

    wie kommst du auf das schmale Brett, da
    <script type="text/php">
    einzufügen?
    Ging die Datei durch "Tidy" oder so? Das <script> Element wird zwar von einigen PHP-Konfigs mit unterstützt, dürfte aber wohl die eigentliche Ursache deines Problems sein. Jedenfalls hat das nix mit XHTML zu tun, es sein denn du hast die Dateiendung geändert?
    Die sollte natürlich bei .php (.php4 etc.) bleiben, egal was für ein [X]HTML der Script letzlich ausspuckt.

    Tausch das mal alles in "normale" PHP-Tags, dann sollte es auch keine Probs mit dem "verschachtelten" <script> für deine JavaScripte geben -- in denen, wie schon bemerkt wurde, sowieso das type-Attribut fehlt.

    <?php
      var $standardlayout = "gold"; //Standardlayout, das beim Besuchen ohne Cookie geöffnet wird
      if(isset($newlayout) and isset($origin)) echo "
      <script type='JavaScript' lang='text/javascript'>
      document.cookie = '" + $newlayout + "';
      window.location.replace('sites/" + $origin + "?layout=layout_' + document.cookie);
      </script>";
      //Diese Seite mit ?newlayout=LAYOUTNAME öffnen bringt ein anderes Layout

    echo "
      <script type='JavaScript' lang='text/javascript'>
      function loadpage() {
        if(!document.cookie) {
          window.location.replace('sites/home.php?layout=layout_' + document.cookie);
        }
        else {
         window.location.replace('sites/home.php?layout=layout_" + $standardlayout + "');
        }
      }
      </script>
      ";
    ?>

    So, und wenn du schon 'nen Cookie für Layout-Wechselkram nehmen willst, dann kannst du das auch gleich (sicherer) auf PHP-Ebene machen, statt hier "unnötiges" JavaScript mit ins Spiel zu bringen.
    Siehe: $_COOKIE, setcookie() und header("Location: andere URL") für den Redirect in der PHP-Doku.
    Der Code dazu *MUSS* dann aber ganz am Anfang, noch *VOR* dem <DOCTYPE..> stehen, sonst klappt dat nich!

    Viel Spaß,
    CirTap

    1. Hallo!

      Danke, das is net... ^^ endlich mal ne ordentliche hilfe... ;)

      Mit freundlichen Grüßen,
      Adrian

    2. halloo CirTap :-)))

      Du bist ja soo kluch

      Uffi

      1. Hallo uffilein!

        Du bist ja soo kluch

        beschrei's mal nich!
        Hab mich bei den *halb*-transparenten PNGs wg. "Ungenauigkeiten" grad in die Nesseln gesetzt ;-) <piex>

        CirTap

        1. Hallo,

          Hab mich bei den *halb*-transparenten PNGs wg. "Ungenauigkeiten" grad in die Nesseln gesetzt ;-) <piex>

          ach was! Willkommen im großen Club!

          *scnr*
           Martin

          --
          Denken ist wohl die schwerste Arbeit, die es gibt. Deshalb beschäftigen sich auch nur wenige damit. (Henry Ford, amerikanischer Industriepionier)
    3. Hallo!

      und xhtml hat mit <? ?> keine probleme?

      Mit freundlichen Grüßen,
      Adrian

      1. Hallo Adrian,

        und xhtml hat mit <? ?> keine probleme?

        nein, weil dein XHTML-interpretierender Browser gar kein <? ?> zu sehen kriegt - vorausgesetzt, dein Server ist richtig konfiguriert und führt das PHP-Script auch wirklich aus.

        Davon abgesehen: Sicherheitshalber solltest du die "ausführliche" Form verwenden, also <?php ... ?>, denn die "short open tags" werden nicht von allen Servern akzeptiert.

        Ciao,

        Martin

        --
        "Life! Don't talk to me about life!" (Marvin, the paranoid android in Douglas Adams' "The Hitchhiker's Guide To The Galaxy"
      2. Hi,

        und xhtml hat mit <? ?> keine probleme?

        dir ist schon klar, dass da ein Server und ein Client (Browser) im Spiel sind und jeder "seinen" Teil verwurstet und zu sehen bekommt, oder?
        Und beherzige Martins Rat: <?php ... ?>

        Wegen deiner <? ... ?> "Sorge": der einzige, der hier evtl. motzt wäre ein XML-/XLST-Prozessor, dem du willenlos einen PHP-Skript reindrückst, weil DORT die Angaben zwischen <? + ?> üblicherweise als "XML-Prozessor Anweisungen" behandelt werden.
        Aber auch das hat wieder nix mit XHTML per se zu tun, sondern dem Programm, welches diesen Kwältext fressen soll.

        Weil auf einigen Servern PHP aber nunmal auch auf <? "reagieren kann" (s. Antwort von Martin), gibt es gelegentlich Probleme (Syntaxfehlergemotze) wenn der PHP-Code einen "XML-Header" enthält -- auch in Kommentaren!

        Beispiel 1:
        <?xml version="1.0"?>
        <!DOCTYPE ... XHTML 1.0 ...>
        <?php
        echo $bla;
        ?>

        Beispiel 2: <? irgendwo in einem PHP-Kommentar
        <?php
        /**
         * $xml Xml Document bla bla <?xml version="1.0"?> bla bla
         */
        echo $xml;
        ?>

        Viel Spaß,
        CirTap