zurück zur Startseite
  


Zurück XHTMLforum > (X)HTML und CSS > (X)HTML
Seite neu laden XHTML-Webdateien mit PHP includes im Browser darstellen

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 11.03.2004, 18:20
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 10.03.2004
Beiträge: 10
Metacortex befindet sich auf einem aufstrebenden Ast
Standard XHTML-Webdateien mit PHP includes im Browser darstellen

Hallo,

wenn man normale XHTML-Dateien (also die werden ja durch den Doctype definiert, oder?) schreibt, diese beliebig abspeichert und dann in einem Webbrowser anzeigen läßt, werden die Elemente, Tags, etc. ja interpretiert und ausgegeben. Wenn nun in diesen XHTML-Dateien PHP-Dateien eingebunden werden, z.b. durch INCLUDE oder auch durch allgemeine PHP-Zeilen (d.h. die durch "<?php" eingeleitet und mit "?>" wieder beendet werden), dann stellt ein gängiger Browser, nachdem diese Inhalte ausgewertet wurden auch dies dar.

Ich habe nun mal eine richtige XHTML-Datei geschrieben, d.h. ich habe sie unter .xhtml abgespeichert (da ich irgendwo mal gelesen habe, das die browser dann bei Aufruf einer solchen datei ihre xml-parser drüberlaufen lassen und nicht ihre normalen (X)-HTML parser). Wenn ich diese dann im Browser öffne, werden alle html-typischen Elemente angezeigt, aber alles was zwischen den <?php ?> steht, wird einfach überlesen.

Wie kann man das abstellen??
(muß man eventuell dem Php-Interpreter sagen, daß er auch *.xhtml - Dateien bei der Interpretation berücksichtigen muß??)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 11.03.2004, 18:23
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 10.03.2004
Beiträge: 10
Metacortex befindet sich auf einem aufstrebenden Ast
Standard

Achso, ganz am Anfang der Datei steht:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Wenn ich die Datei als *.xhtml abspeichere dann wird php nicht interpretiert.
Speichere ich sie als *.php, dann meckert der php parser rum, da er mit dem "<?xml" nichts anfangen kann.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 11.03.2004, 18:31
Benutzer
neuer user
 
Registriert seit: 31.12.2003
Beiträge: 35
new user befindet sich auf einem aufstrebenden Ast
Standard

Du kannst als Dateiendung ohne weiteres .php, .htm, .html verwenden. Der Doctype sorgt schon dafür dass die Datei richtig geparst wird.

von .xhtml als Endung rate ich Dir ab, da nicht alle Browser damit umgehen können.

Wenn Du also Seiten mit PHP hast, dann gib denen ruhig auch die Endung .php.

<?xml version="1.0" encoding="UTF-8"?> musst Du dann nartürlich weglassen.

Im Validator http://validator.w3.org/ kannst Du ja überprüfen ob die Datei xhtml-valid ist.

Mit Zitat antworten
  #4 (permalink)  
Alt 12.03.2004, 20:37
Benutzer
neuer user
 
Registriert seit: 18.12.2003
Beiträge: 41
Brutha befindet sich auf einem aufstrebenden Ast
Standard

Die XML Zeile <?xml version="1.0" encoding="UTF-8"?> kannst du natürlich mit PHP ausgeben, soweit ich weiss (korrigiert mich bitte falls ich mich irre ) ist die nur für die Browser, nicht für den Webserver. Also kann man am Anfang der PHP-Datei so etwas schreiben:

<?
echo("<?xml version=\"1.0\" encoding =\"UTF-8\"?>";
?>

Und falls du Zugriff auf den Webserver hast (also eigener Server, kein Paket bei einem Provider), kannst du sogar einstellen welche Dateiendungen von php interpretiert werden.
Mit Zitat antworten
  #5 (permalink)  
Alt 15.12.2004, 17:57
Neuer Benutzer
neuer user
 
Registriert seit: 15.12.2004
Beiträge: 1
Aardvarks befindet sich auf einem aufstrebenden Ast
Standard

hab mir hier alles durchgelesen und eins trotzdem nicht verstanden:
warum akzeptiert der server keine Dokumenttyp-Angaben von xhtml in php dateien?
Mit Zitat antworten
  #6 (permalink)  
Alt 15.12.2004, 19:44
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 24.05.2004
Beiträge: 1.176
terrikay befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Aardvarks
hab mir hier alles durchgelesen und eins trotzdem nicht verstanden:
warum akzeptiert der server keine Dokumenttyp-Angaben von xhtml in php dateien?
Weil "<?" und "?>" die Zeichenkombinationen für "PHP an" und "PHP aus" sind und den PHP-Parser auf den Plan rufen. Und der möchte dann "xml version="1.0" encoding ="UTF-8" als PHP parsen und verschluckt sich dran -> Ergebnis: PARSE ERROR!

Deshalb ist das nur als echo-Ausgabe möglich. Wenn man möchte, dass die Datei dann vom XHTML-Parser des Browers geparst werden soll, dann kann man das auch per PHP angeben, muß aber den IE und den Netscape 6 draußen halten, da die das nicht können. Da gibt es zum Beispiel dieses Script von toscho, mit dem man das erreichen kann:
Code:
<?php
function ua_accepts_xhtml() {
    /* Prüft, ob an den UA XHTML ausgeliefert werden darf.
     * Gibt TRUE zurück, wenn ja, FALSE, wenn nicht. */

    /* In dubio pro HTML. */
    $xhtml = FALSE;
    $check_pattern = '|application/xhtml\+xml(?!\s*;\s*q=0)|';

    /* Behauptet der UA, XHTML zu können? */
    if (($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') and
        isset($_SERVER['HTTP_ACCEPT']) and
        preg_match($check_pattern, $_SERVER['HTTP_ACCEPT'])) {
            $xhtml = TRUE;
    }
    /* Ältere Geckos haben ein paar Crashbugs mit XHTML. */
    if(isset($_SERVER['HTTP_USER_AGENT'])) {
        if(preg_match("|rv\:0.9|", $_SERVER['HTTP_USER_AGENT'])) {
            $xhtml = FALSE;
        }
    }
    return $xhtml;
}

/* Anwendung. */
$content_type   = ua_accepts_xhtml() ? 'application/xhtml+xml' : 'text/html';
header('Content-Type: ' . $content_type . ';charset=utf-8');
header('Vary: Accept');
?>
__________________
Grüße,
Terry

... die immer noch sporadisch mitliest, auch wenn sie sich wenig zu Wort meldet ...
Mit Zitat antworten
  #7 (permalink)  
Alt 20.01.2005, 12:29
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

Im Variy-Header sollte aber 'Negotiate,Accept' gesendet werden, also:

PHP-Code:
header('Vary: Negotiate,Accept'); 
Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
  #8 (permalink)  
Alt 20.01.2005, 13:15
Benutzerbild von The Doc
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 19.01.2005
Beiträge: 1.113
The Doc befindet sich auf einem aufstrebenden Ast
Standard

Zu deine Frage, warum der PHP-Code in der xml Datei überlesen wird:
Dein Server ist so eingestellt, dass er warscheinlich nur bei Dateien mit der Endung .php(3/4) den PHP-Code ausführt. Wenn du jetzt in deiner .xml Datei <?php ... ?> schreibst, weiß der Server nicht, dass das PHP-Code ist, er denkt vielmehr, dass er das schreiben soll, also <?php ... ?> wobei er warscheinlich dann durch die < .. > es als ein Tag oder so ansieht.

Umgehen kann man das glaub ich in Html und sicher auch in xml mit <script language="php">..</script>
Hab ich noch nie verwendet, aber wozu gibt es sonst diesen Tag?
__________________
Bitte keine PN's - schreibt mir ne anständige Mail oder sprecht mich über Msn / Icq an
Milian Wolff | Markdownify | Typogridder
Mit Zitat antworten
  #9 (permalink)  
Alt 20.01.2005, 14:39
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von The Doc
Umgehen kann man das glaub ich in Html und sicher auch in xml mit <script language="php">..</script>
Hab ich noch nie verwendet, aber wozu gibt es sonst diesen Tag?
Nein, <script language="php">...</script> und <?php ... ?> bedeuten das gleiche. Um auch andere Dateien als *.php an den PHP-Parser zu übergeben, muss man dies dem Webserver mitteilen. Siehe auch:

Apache: Kann ich PHP auch auf .html-Dateien anwenden?
http://www.php-faq.de/q/q-apache-parsen.html

Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 20.01.2005, 15:40
Benutzer
neuer user
 
Registriert seit: 19.01.2005
Beiträge: 59
feelx befindet sich auf einem aufstrebenden Ast
Standard

Danke für dieses Script - Ich habe es eingebaut und getestet... Es funktioniert wunderbar, d.h. das Dokument ist XTHML 1.1 valide (gemäss W3c Validator und SchemaValidator von Schneegans). Ausserdem konnte ich mittels eigener DTD das Target-Module einbinden. Im Mozilla zeigt der Browser an "Standardmodus und Type: application/xhtml+xml" - also wie erwünscht!

Jetzt gibt es noch ein klitzekleines Problem:
Der validator der WDG validiert das Dokument immer noch nicht. Er scheint "text/html" als mime-type zu bekommen. Sobald ich in der .htaccess den Mimetyp auf application/xhtml+xml festbinde, ist der Fehler weg. Dafür natürlich wieder der alte IE Bug da (File downloaden, statt anzeigen)...

Im Apache-Log meldet sich der wdg-Validator wie folgt:
Code:
207.36.201.119 - - [20/Jan/2005:14:34:17 +0100] "GET /feelx/dtd/dtdtest4.php HTTP/1.1" 200 587 "-" "WDG_Validator/1.5.7"
Wenn es jetzt möglich wäre, hier noch eine Funktion einzubauen, die dem "WDG_Validator" ebenfalls den mime-type auf "application/xhtml+xml" setzt, wäre das Problem behoben... Leider reichen meine PHP Kenntnisse dafür nicht aus, bzw. ich müsste studenlang wühlen und ausprobieren. Kann mir hier jemand helfen? Wäre echt super!
__________________________________________________ _
Edit:
Habe jetzt im obigen Script folgende Aenderungen für einen Workaround genommen:
Code:
    /* In dubio pro XHTML. */
    $xhtml = TRUE;
Im Zweifel wird also nicht mehr "text/html", sondern "application/xhtml+xml" gesendet. Somit klappt jetzt die Validierung in allen drei o.g. Validatoren. Im IE und Mozilla wird das File aber nach wie vor korrekt gehandelt Ob die "in dubio pro XHTML" Aenderung Nachteile hat, weiss ich bisher nicht... konnte keine Ausmachen...
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Nachmal XHTML, PHP, MySQL und UTF-8 ollo Serveradministration und serverseitige Scripte 17 26.08.2007 01:15
PHP, XHTML und Unicode Eric Knowledge Base 72 28.10.2005 14:37
PHP Sessions und XHTML aircooler (X)HTML 3 14.11.2004 04:06
Textdatei über PHP in XHTML einbetten Porthos (X)HTML 2 13.11.2004 19:31
XHTML und includes Björn (X)HTML 5 25.03.2004 13:17


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:19 Uhr.