Forum Programmation.php [Débutant] PHP et XHTML

Posté par (page perso) .
Tags : aucun
0
26
oct.
2004
Bonjour,

Je cherche à faire un site perso, le genre de site ou je pourrais raconter ma vie, mon oeuvre, mettre un CV, bref, le genre de truc qui n'intéresse pas grand monde à part l'auteur du site.
Mais bon voila, comme j'ai envie de faire les choses bien, je voudrais faire un site qui respecte les standards. J'ai donc décidé d'écrire mon site en XHTML 1.0 Strict (+CSS).

Quel est le rapport avec PHP me direz-vous ?
J'y arrive.

L'entête de ma page XHTML est composé de
[?xml version="1.0" encoding="ISO-8859-15"?]
[!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd(...)"]

(Je n'arrive pas à mettre les balises, aussi ai-je mis des crochets [] à la place)

Et ensuite, j'ai le reste des instructions de ma page.
Le problème est que quand j'insère du code php dans cette page, et que je nomme mon fichier index.php, l'interpréteur PHP m'indique une erreur sur la première ligne :
Parse error: parse error in /var/www/html/index.php on line 1

Quand je commence mon fichier par [html], en enlevant le début du document, tout marche bien.

Donc, question : Comment fait-on pour déclarer proprement sa page XHTML et insérer des bouts de code PHP dedans ?

Merci


Darckense

PS : Peut-être que ce post devrait être dans Programmation Web. J'ai hésité entre les deux...
  • # balise <?php

    Posté par . Évalué à 7.

    Si tu as accès à la configuration de ton serveur, il vaut mieux mettre
    short_open_tag = Off dans ton php.ini

    Si tu fais ce changement, tu seras obligé d'utiliser <?php ?> pour mettre ton code php au lieu du <? ?>

    En effet, si tu laisses la variable short_open_tag à On, php va croire que le <?xml débute du code PHP et ne va donc pas comprendre le xml version="1.0" encoding="ISO-8859-15" qui suit, d'où l'erreur.

    Sinon, autre solution si tu n'as pas accès au serveur, tu dois passer par cette étape plus fastidieuse :
    <?php
    echo "<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>\n";
    ?>
    • [^] # Re: balise <?php

      Posté par (page perso) . Évalué à 1.

      Merci ! :-)

      Pour l'instant je teste mon site en local, j'ai put modifier le php.ini pour mettre la variable short_open_tag à Off. Cela marche parfaitement.

      Par contre, je vais héberger mon site chez free, je ne sais pas quelle est la configuration de leur serveur. Au besoin, j'utiliserai la seconde méthode.

      Encore une fois merci, il ne me reste plus qu'à écrire mon site maintenant !


      Darckense
    • [^] # Re: balise <?php

      Posté par . Évalué à 2.

      Autre solution si tu n'as pas accès au fichier de configuration de php. Mettre un fichier .htaccess dans le répertoire qui t'interesse et qui contienne la ligne suivante:

      php_flag short_open_tag off


      Ceci supprimera les short open tag pour le répertoire web qui contient le fichier .htaccess et tous ses sous répertoires.

      Pour que ca marche il faut:
      - que php soit installé comme module dans apache
      - que l'administrateur du serveur web n'est pas bloqué la possibilité de le faire (avec la directive allowOverride dans le fichier httpd.conf de apache)

      Pour plus d'information sur le changement de configuration de php en utilisant un fichier .htaccess: http://www.php.net/manual/fr/configuration.changes.php(...)
    • [^] # Re: balise <?php

      Posté par (page perso) . Évalué à 1.

      en pinaillant un peu, on peut faire plus concis :


      <?='<?xml version="1.0" encoding="utf-8" ?>' ?>


      Sinon, encore mieux, utiliser des templates, genre Smarty : http://smarty.php.net(...)
      • [^] # Re: balise <?php

        Posté par . Évalué à 4.

        Cette solution, de même que la précédente, rends le document source non-XML, ce qui n'est pas très pratique si on veut l'éditer avec un éditeur XML ou le parser avec un parseur XML.

        Ceci parce qu'une PI se termine par ?>, il ne faut donc pas avoir ce code dans toute la partie PHP.

        Il faut utiliser

        <?php echo '<?xml version="1.0" encoding="utf-8" ?'.'>'; ?>

        La forme <?= est une forme simplifié qu'il est fortement déconseillée d'utilisée, parce que dépendante de la configuration.

        En php, il faut écrire le code le plus universel possible, sinon on fini toujours par avoir des problèmes, le jour où on déménage, le jour où la config change, plus rien ne fonctionne.
  • # Use Dotclear Luke

    Posté par (page perso) . Évalué à 1.

    > Comment fait-on pour déclarer proprement sa page XHTML et insérer des bouts de code PHP dedans ?

    ça risque d'etre un peu long a expliquer... :)

    Si tu veux pas t'emmerder installes Dotclear http://www.dotclear.net/(...)

    en plus tu pourra examiner le code pour voir comment c'est fait, c'est très instructif.
  • # utilise un echo

    Posté par (page perso) . Évalué à 2.

    moi je fait comme ça
    <?php
    
    echo "<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>";
    
    ?>
    
    et la suite ... c'est comme ça que j'ait fait vus que j'ai pas accès au fichier de configuration ou je suis hébergé.
  • # attention

    Posté par . Évalué à 2.

    attention le préembule
    [?xml version="1.0" encoding="ISO-8859-15"?]
    fait passer IE6 en mode "quirks" (modele de boite ms) meme avec un doctype xhtml strict.

    encore une crétinerie de IE.

    donc si tu commence ta page direct avec la declaration du doctype XHTML strict, c'est pas 100% correct, mais le rendu se fera de la meme facon sous IE6 et moz (modele de boite w3c) ce qui est beaucoup plus pratique.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.