Code wird in XHTML Mode nicht ausgeführt
Adrian
- php
0 MudGuard2 CirTap-1 Adrian-3 uffi- menschelei
0 CirTap
0 Adrian0 Der Martin0 CirTap
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
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
Hallo!
Alles klar, das heisst ich muss die Sachen ändern, aber grundlegend funktioniert das...
Mit freundlichen Grüßen,
Adrian
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
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
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";
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
Hallo!
Danke, das is net... ^^ endlich mal ne ordentliche hilfe... ;)
Mit freundlichen Grüßen,
Adrian
halloo CirTap :-)))
Du bist ja soo kluch
Uffi
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
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
Hallo!
und xhtml hat mit <? ?> keine probleme?
Mit freundlichen Grüßen,
Adrian
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
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