Problèmes d'includes et de W3C

Problèmes d'includes et de W3C - PHP - Programmation

Marsh Posté le 03-11-2005 à 17:41:37    

J'ai un petit problèmes lors des vérifications aux normes du W3C et de mes includes php.
 
Quand j'essaie de valider une page .php il vérifie bien sur le xhtml présent dans celle-ci.
Mais étant donné que la quasi totalité de mes pages débutent par une include ou require qui vérifie qu'un $_SESSION['login'] est bien présent, le validateur vérifie la page qui a été include et s'arrête à celle ci sans continuer de vérifier le reste du document.
 
De plus il y a du texte (en simple echo) dans ces pages include mais pas forcément de tags <html xmls....etc donc le résultat est faussé, et je ne peux pas en rajouter car de toute facon le problème est le meme, je n'arrive pas a vérifier la totalité d'une page a partir du moment ou il y a un require ou include.
 
Je suis novice en php :), donc si quelqu'un a quelque chose pour m'aider sur la facon d'organiser ma page pour qu'elle soit vérifier dans son intégralité, avec les includes...  :sweat:

Reply

Marsh Posté le 03-11-2005 à 17:41:37   

Reply

Marsh Posté le 03-11-2005 à 17:54:50    

Pour le coup de la session, tu peux soit t'arranger pour lui fournir une URL avec le phpsessid en param dedans, soit utiliser le "validate local html" de l'extension "web developper" de Mozilla/Firefox.
 
Pour le second point je ne comprends pas par contre quel est le problème :??: Tu ne dois envoyer au validateur que les pages complètes telles que reçues par l'utilisateur, pas chaque fichier PHP séparément.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-11-2005 à 18:01:38    

Une fois que tu as compris que le parser voit la même chose que ton visiteur lambda t'as tout compris ;)

Reply

Marsh Posté le 03-11-2005 à 18:06:12    

pour la session je fais une simple vérif avec un if !isset...etc
 
Mon problème est que quand je soumet ma page complète au validateur il "ouvre" les includes pour vérifier leur contenu et s'arrete a la fin de celle ci, donc si l'include ne contient pas d'erreur il me valide la page de l'include et ne continue pas le reste du document.
 
En gros il me mettra 'document validé' alors qu'en fait il n'a validé que la page include 'auth.php' en début de mon 'index.php', et non 'index.php' dans son intégralité.

Reply

Marsh Posté le 03-11-2005 à 18:08:45    

Le validateur il reçoit la même chose qu'un browser web hein, il sait pas qu'y a des include, il reçoit juste du HTML (heureusement, sinon ça voudrait dire que n'importe qui peut aller voir ton PHP en se faisant passer pour un validateur :D)
Si le problème c'est qu'il faut un cookie pour voir la page, alors il faut envoyer tout l'HTML, cf mon message précédent... Sinon arrange-toi pour lui donner un ID de session valable dans l'URL


Message édité par antp le 03-11-2005 à 18:09:47

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-11-2005 à 18:09:48    

ben c'est ce que je me disais aussi, avant de voir qu'il allait chercher son html dans mes includes puisque c'est la source qu'il m'affiche :(
au secours ^^

Reply

Marsh Posté le 03-11-2005 à 18:10:34    

:heink: la source de quoi ? il va rien chercher dans tes include...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-11-2005 à 18:13:09    

Envoies nous l'adresse de ton site.


---------------
2 * yo = yoyo
Reply

Marsh Posté le 03-11-2005 à 18:17:11    

vaut peut être mieux pas :p
non mais je vais essayer d'y voir plus clair
 
-> il m'affiche vraiment le code html des pages include.
 
-> Quand j'enlève les includes, la il me vérifie bien le code de la page index.php
 
Question : est ce que je dois remettre des balises <!DOCTYPE...etc a chaque fois , meme dans les includes ? (de toutes facon ca marche pas quand meme  ^^)

Reply

Marsh Posté le 03-11-2005 à 18:19:55    

Bah oui mais bon ton browser aussi il affiche le code HTML des pages include... Si t'inclus des trucs qui génèrent du HTML c'est pour l'afficher hein :D
Un clic droit -> view source affichera la même chose que ce que reçoit le validateur (à part cookies/sessions, mais bon, cf mon premier post)
 
Doctype c'est pour le document HTML généré, rien à voir avec les include. Tout comme <html> <head> <title> <body> et compagnie. T'en mets pas un par include...
 
N fichiers PHP (1 fichier PHP qui en inclut d'autres) donnent 1 document HTML. Ce qui compte pour le client et le validateur c'est le document HTML créé, le nombre de fichiers PHP, les include, etc. il s'en fout, il n'a pas à le savoir, il ne peut pas le savoir.


Message édité par antp le 03-11-2005 à 18:21:26

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-11-2005 à 18:19:55   

Reply

Marsh Posté le 03-11-2005 à 18:25:09    

je vais vous afficher a quoi ressemble mon code, peut etre que vous y verrez plus clair (et moi aussi ^^) pour m'aider, parce que la je désespère :
 

Code :
  1. <?php
  2. include 'auth.php'; //ma bete noire
  3. echo'
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <title>Title</title>
  8. <link href="machin.css" rel="stylesheet" type="text/css" />
  9. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  10. </head>
  11. <body>
  12. ... // => le truc qui se vérifie pas
  13. </body>
  14. </html>';
  15. ?>


 
Ca aurait il rapport avec le fait que je met le html dans un echo ?

Reply

Marsh Posté le 03-11-2005 à 18:29:01    

Essaye ça...

Code :
  1. <?php
  2. include auth.php; //ma bete noire
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <title>Title</title>
  8. <link href="machin.css" rel="stylesheet" type="text/css" />
  9. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  10. </head>
  11. <body>
  12. </html>


Montre nous ton auth.php je suis sur qu'il y a pleins de choses intéréssantes dedans :jap: comme par exemple des exit(), echo, etc..


Message édité par 2xyo le 03-11-2005 à 18:31:04

---------------
2 * yo = yoyo
Reply

Marsh Posté le 03-11-2005 à 18:29:38    

@omega2 :
je vais sur le site du W3C, je met l'url de ma page dans la case url, et je clique, et je recoi l'erreur, et je me cogne la tete contre le bureau :p

Reply

Marsh Posté le 03-11-2005 à 18:30:22    

@2xyo => jessaie en ce moment meme, je me cogne encore la tete si c'est aussi c*@-

Reply

Marsh Posté le 03-11-2005 à 18:30:49    

T'es au courant qu'il ne doit rien y avoir comme texte avant la balise <html> (à l'exception du doctype et d'une autre balise dont je me rapelle plus le nom et qui sert à indiquer que c'est un document xml) et rien aprés le </html> ?

Reply

Marsh Posté le 03-11-2005 à 18:31:54    

chocolatebar > oups, désolé, j'ai posté trop tard et quand j'ai vu que la réponse coulé de source plus haut, j'ai effacé mon message.
 
Au fait, tu fais quoi dans ton auth.php ?


Message édité par omega2 le 03-11-2005 à 18:32:40
Reply

Marsh Posté le 03-11-2005 à 18:33:14    

mdr, y'a pas de mal, quant a ton autre message je le sais, mais j'ai du pensé que echo était comme session_start, qu'il se mettait avant :D

Reply

Marsh Posté le 03-11-2005 à 18:34:44    

mais ca marche pas mieux, y a où commettre un meurtre :(

Reply

Marsh Posté le 03-11-2005 à 18:35:46    

je parlais pas du echo (qui affiche ce qui le suis) mais diu fichier inclus qui envoie du texte au navigateur. Et comme il est situé avant le <html>, ca arrrivera au navigateur avant le <html> et ca sera donc dans une partie de la page html où c'est interdit.


Message édité par omega2 le 03-11-2005 à 18:36:19
Reply

Marsh Posté le 03-11-2005 à 18:39:13    

Le code source de ton auth.php nous aidera certainement à y voir plus clair.


---------------
2 * yo = yoyo
Reply

Marsh Posté le 03-11-2005 à 18:42:25    

je pense aussi, parce que j'ai beau modif toutes les 30 secondes je me retrouve avec le meme problèmes.
 
Voici le code
 
 

Code :
  1. <?php
  2. //Protection auth si aucune session n'a été ouverte pour l'utilisateur
  3. if (!isset($_SESSION['user']))
  4. {
  5. echo 'erreur...blabla!';
  6. exit;
  7. }
  8. ?>



Message édité par chocolatebar le 03-11-2005 à 18:42:42
Reply

Marsh Posté le 03-11-2005 à 18:45:51    

:o
 
Le validateur arrivera toujours sans session, DONC il verra uniquement le 'erreur...blabla!' et c'est tout comme il y a le exit() ensuite...


---------------
2 * yo = yoyo
Reply

Marsh Posté le 03-11-2005 à 18:48:38    

qu'est ce que tu me précognises pour éviter ca ?

Reply

Marsh Posté le 03-11-2005 à 18:53:43    

Je te préconise de simplement dépalcer le auth.php

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <title>Title</title>
  5. <link href="machin.css" rel="stylesheet" type="text/css" />
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  7. </head>
  8. <body>
  9. <?php 
  10. include auth.php; //ma bete noire  
  11. ?>
  12. </body>
  13. </html>


et dans le auth.php

Code :
  1. <?php
  2. //Protection auth si aucune session n'a été ouverte pour l'utilisateur  
  3. if (!isset($_SESSION['user']))
  4. {
  5. echo "         <p>erreur...blabla!</p>"
  6.         ."     </body>"
  7.         ."</html>";
  8. exit;
  9. }
  10. ?>


Message édité par 2xyo le 03-11-2005 à 18:54:37

---------------
2 * yo = yoyo
Reply

Marsh Posté le 03-11-2005 à 19:02:54    

oui j'avais essayé ca. Ca marchait pas non plus.
 
Mais la j'ai sucré le exit; , et ca marche.
 
A part qu'après le auth.php devient obsolète, donc en fait il faut que je fournisse une variable de session correcte au validateur comme le disais plus haut antp. Je vais essayer le tool qu'il m'a conseillé et voir ce que ca donne.
 
En tout cas merci de votre aide à tous :)


Message édité par chocolatebar le 03-11-2005 à 19:03:23
Reply

Marsh Posté le 03-11-2005 à 19:05:19    

Je précise que mon précédent post permet juste d'avoir une page d'erreur valide et ne permet pas de valider toute la "page".Sinon, il ne te reste plus qu'a faire éxactement ce qu'a dit antp avec le SESSIONID dans l'urL.


---------------
2 * yo = yoyo
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed