8791 sujets

Développement web côté serveur, CMS

Bonjour les gens, nouvelle sur ce forum je vous salue bien bas.

Et nouvelle aussi dans la validation, c'est la 1ere fois que j'essaie. Et je suis désespérée: 60 erreurs!
Commençons par la première.
J'ai construit mon site depuis le début en faisant attention aux normes W3C et dès la 1ere balise PHP, pan sur les doigts, le validateur la prend pour une balise <br /> non fermée!
Ca doit être un truc tout bête et basique mais je ne trouve rien sur les forums.
Quelqu'un peut m'aider? J'aimerai bien pouvoir afficher le joli logo W3C sur le site ....

Voici mon code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Au Grillon Dort, chambres d'h&ocirc;tes dans les Landes</title>
<link rel="icon" href="images/logo_agd.png" type="image/png" />
<meta name="description" content="Chambres d'hôtes à Moustey dans les Landes, labellisé Tourisme &amp; Handicap et Clé Vacances, en plein coeur de la forêt landaise du Parc Naturel Régional des Landes de Gascogne, sur le chemin de St Jacques de Compostelle" />
<meta name="keywords" content="chambres, chambres d'hôtes, hébergement, gite, handicapé, pèlerinage, St Jacque de Compostelle, Moustey, Parc Naturel Régional des Landes de Gascogne" />
<meta name="robots" content="index, follow" />
<link href="index.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript" src="script.js"></script> 
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>

</head>
<?php include("lng.php"); ?> 

<body onload="MM_CheckFlashVersion('7,0,0,0','Le contenu de cette page n&eacute;cessite une version plus r&eacute;cente de Macromedia Flash Player. Voulez-vous le t&eacute;l&eacute;charger maintenant ?');" >
  <div class="principal" style="height:550px;" ><br />  ........


Voici de que me dit le validateur:

Line 15, column 5: document type does not allow element "br" here; assuming missing "body" start-tag .

<br />


Et voici ce qu'il me donne comme code source:

# <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
# <html xmlns="http://www.w3.org/1999/xhtml">
# <head>
# <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
# <title>Au Grillon Dort, chambres d'h&ocirc;tes dans les Landes</title>
# <link rel="icon" href="images/logo_agd.png" type="image/png" />
# <meta name="description" content="Chambres d'hôtes à Moustey dans les Landes, labellisé Tourisme &amp; Handicap et Clé Vacances, en plein coeur de la forêt landaise du Parc Naturel Régional des Landes de Gascogne, sur le chemin de St Jacques de Compostelle" />
# <meta name="keywords" content="chambres, chambres d'hôtes, hébergement, gite, handicapé, pèlerinage, St Jacque de Compostelle, Moustey, Parc Naturel Régional des Landes de Gascogne" />
# <meta name="robots" content="index, follow" />
# <link href="index.css" rel="stylesheet" type="text/css" />
# <script language="javascript" type="text/javascript" src="script.js"></script>
# <script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
#
# </head>
# <br />
# <b>Warning</b>: preg_match(): Unknown modifier '[' in <b>/home/clients/augrillondort.com/http/lng.php</b> on line <b>35</b><br />

Modifié par nimel (26 Jun 2007 - 14:38)
Salut nimel Smiley cligne ,

Lorsque le PHP est interprété il génère du code html et c'est ce dernier qui est validé... Donc en clair ce n'est jamais le PHP qui est en cause lors d'une validation W3C... A moins bien sûr qu'il ne soit pas interprété Smiley rolleyes : soit que ta page n'a pas l'extension php (ou php5), soit que ton hébergeur ne gère pas le PHP Smiley murf .

Pour en être sûr, il suffit d'afficher la source de ta page et voir si tu as toujours des balises <?php> par exemple...

A+ Smiley smile
Salut,

Là le <br /> vient de la sortie de ton script php qui retourne une erreur .


<br />
<b>Warning</b>: preg_match(): Unknown modifier '[' in <b>/home/clients/augrillondort.com/http/lng.php</b> on line <b>35</b><br />
Merci de ta réponse Heyoan,

J'ai oublié de préciser que le site tourne aux petits oignons, tout le code PHP est utile et fonctionne donc mon hébergeur (professionnel) gère sans pb.
D'ailleurs quand je visualise le code source dans mon navigateur il est propre et je ne voie pas les mêmes choses que je validateur W3C (auquel je donne bien l'adresse url sur le serveur à analyser). J'y comprend rien.

Pour faire court les lignes en causes dans ma page .php :
13 -
14 - </head>
15 - <?php include("lng.php"); ?>
16 -
17 - <body onload=.....

Dans le code source vu par mon navigateur:

13 -
14 - </head>
15 -
16 -
17 - <body onload= ............

Dans le code vu par le validateur:
13 -
14 - </head>
15 - <br />
16 - <b>Warning</b>: preg_match(): Unknown modifier '[' in <b>/home/clients/augrillondort.com/http/lng.php</b> on line <b>35</b><br />
17 - <br />

J'en conclu que c'est la page lng.php qui pose problème et donc renvoie des <br /> (mais d'où ils sortent ceux là?) avant le body. Mais justement comme tu le dis si bien, ce ne sont QUE des fonctions php et le validateur ne devrait pas s'en occuper. Non ? Si ?
J'avoue que lng.php est un truc que j'ai lâchement copié (en fait un copain me l'a passé vu que je ne suis pas encore un kador) sans trop chercher à comprendre alors ça va être dur pour moi s'il y a un pb dedans. En plus ça marche bien comme ça.
Oui PeterPetrelli,
j'étais en train d'écrire à peu près ça quand tu as posté, mais cette déduction ne m'avance pas beaucoup (mon cerveau ne pédale pas bien vite).
Ah oui ! j'avais pas fais gaffe Smiley rolleyes

Ta validation ne passe pas car ton code PHP plante (preg_match dans ta page lng.php ligne 35)...

Donc ton problème n'est pas un problème de validation mais de code Smiley smile
OUPS! Eh ben alors là suis pas dans la .... l'embarra!
Ais-je le droit de soumettre ici ce code à vos lumières lumineuses ?
OK sympa. C'est parti. c'est un peu long mais je met tout comme ça ... vous aurez tout.
La ligne 35 c'est:
if(preg_match("//[\[\( ]{$K}[;,_\-\)]//",$_UA))

(J'ai l'impression qu'il me dit des gros mots ce code).

<?

function lixlpixel_get_env_var($Var)
{
	if(empty($GLOBALS[$Var]))
	{
		$GLOBALS[$Var]=(!empty($GLOBALS['_SERVER'][$Var]))?
		$GLOBALS['_SERVER'][$Var]:
		(!empty($GLOBALS['HTTP_SERVER_VARS'][$Var]))?
		$GLOBALS['HTTP_SERVER_VARS'][$Var]:'';
	}
}

function lixlpixel_detect_lang()
{
	// Detect HTTP_ACCEPT_LANGUAGE & HTTP_USER_AGENT.
	lixlpixel_get_env_var('HTTP_ACCEPT_LANGUAGE');
	lixlpixel_get_env_var('HTTP_USER_AGENT');
	$_AL=strtolower($GLOBALS['HTTP_ACCEPT_LANGUAGE']);
	$_UA=strtolower($GLOBALS['HTTP_USER_AGENT']);
	// Try to detect Primary language if several languages are accepted.
	foreach($GLOBALS['_LANG'] as $K)
	{
		if(strpos($_AL, $K)===0)
		return $K;
	}
	// Try to detect any language if not yet detected.
	foreach($GLOBALS['_LANG'] as $K)
	{
		if(strpos($_AL, $K)!==false)
		return $K;
	}
	foreach($GLOBALS['_LANG'] as $K)
	{
		if(preg_match("//[\[\( ]{$K}[;,_\-\)]//",$_UA))
		return $K;
	}
	// Return default language if language is not yet detected.
	return $GLOBALS['_DLANG'];
}

// Define default language.
$GLOBALS['_DLANG']='en';

// Define all available languages.
// WARNING: uncomment all available languages
$GLOBALS['_LANG'] = array(
	'af', // afrikaans.
	'ar', // arabic.
	'bg', // bulgarian.
	'ca', // catalan.
	'cs', // czech.
	'da', // danish.
	'de', // german.
	'el', // greek.
	'en', // english.
	'es', // spanish.
	'et', // estonian.
	'fi', // finnish.
	'fr', // french.
	'gl', // galician.
	'he', // hebrew.
	'hi', // hindi.
	'hr', // croatian.
	'hu', // hungarian.
	'id', // indonesian.
	'it', // italian.
	'ja', // japanese.
	'ko', // korean.
	'ka', // georgian.
	'lt', // lithuanian.
	'lv', // latvian.
	'ms', // malay.
	'nl', // dutch.
	'no', // norwegian.
	'pl', // polish.
	'pt', // portuguese.
	'ro', // romanian.
	'ru', // russian.
	'sk', // slovak.
	'sl', // slovenian.
	'sq', // albanian.
	'sr', // serbian.
	'sv', // swedish.
	'th', // thai.
	'tr', // turkish.
	'uk', // ukrainian.
	'zh' // chinese.
);

if ($lng == "") {$lng = $_GET["lng"];}
if ($lng == "") {$lng = lixlpixel_detect_lang();}
if ($lng == "fr")
{
	$lng2 = "en";
}
else
{
	$lng2 = "fr";
}
if (($lng <> "fr") && ($lng <> "en")) { $lng = "en"; } 
include("texte_fixe-$lng.php");
include("texte-$lng.php");
?> 
re',

il me semble qu'il manque le délimiteur `...

Essaye :
if(preg_match("[b][#blue]`[/#][/b]//[\[\( ]{$K}[;,_\-\)]//[b][#blue]`[/#][/b]",$_UA))
pour voir Smiley murf
Alors là chapeau bas !!!
Je n'ai plus que 57 erreurs et en tout cas celle-ci a disparu. Et en plus la détection de langage fonctionne encore. Merveilleux voir même magique !

Allez, je me penche sur les 57 autres erreurs, certaines me paraissent facile sinon je reviendrai faire un tout par ici.

Bizaplusse Heyoan.
Hélà ! J'ai un copyright sur les expressions :
Bizaplus,
Bizaplusse,
Bizapluche,
Bizadtaleur,
Bizaçsoir,
Bizatouss,
etc, etc... Smiley biggol Smiley biggol Smiley biggol

*Edit: pour le résolu il faut éditer ton premier post et rajouter [résolu] dans le titre Smiley cligne
Modifié par Heyoan (26 Jun 2007 - 14:33)