Des erreurs bizarroïdes du W3C

Fermé
corentin.bc Messages postés 389 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 4 novembre 2022 - 9 mai 2016 à 17:46
corentin.bc Messages postés 389 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 4 novembre 2022 - 10 mai 2016 à 17:59
Salut à tous,

le W3C me détecte les erreurs suivants sur l'accueil de mon site :

1.
Error: Element head is missing a required instance of child element title.
From line 3, column 7; to line 4, column 1
r">?<head>??<meta
Content model for element head:
If the document is an iframe srcdoc document or if title information is available from a higher-level protocol: Zero or more elements of metadata content, of which no more than one is a title element and no more than one is a base element.
Otherwise: One or more elements of metadata content, of which exactly one is a title element and no more than one is a base element.
2.
Error: Attribute charset not allowed on element meta at this point.
From line 4, column 2; to line 4, column 23
>?<head>??<meta charset="utf-8">? <tit
Attributes for element meta:
Global attributes
name — Metadata name
http-equiv — Pragma directive
content — Value of the element
charset — Character encoding declaration
3.
Error: Element meta is missing one or more of the following attributes: content, itemprop, property.
From line 4, column 2; to line 4, column 23
>?<head>??<meta charset="utf-8">? <tit
Attributes for element meta:
Global attributes
name — Metadata name
http-equiv — Pragma directive
content — Value of the element
charset — Character encoding declaration
4.
Error: Element title not allowed as child of element body in this context. (Suppressing further errors from this subtree.)
From line 5, column 2; to line 5, column 8
"utf-8">? <title>Page d
Contexts in which element title may be used:
In a head element containing no other title elements.
Content model for element body:
Flow content.
5.
Error: Element link is missing required attribute property.
From line 6, column 2; to line 6, column 60
</title>? <link rel="stylesheet" type="text/css" href="css/ap.css" /><SCRIP
Attributes for element link:
Global attributes
href — Address of the hyperlink
crossorigin — How the element handles crossorigin requests
rel — Relationship between the document containing the hyperlink and the destination resource
media — Applicable media
hreflang — Language of the linked resource
type — Hint for the type of the referenced resource
sizes — Sizes of the icons (for rel="icon")
Also, the title attribute has special semantics on this element: Title of the link; alternative style sheet set name.
6.
Error: Stray end tag head.
From line 41, column 1; to line 41, column 7
</SCRIPT>?</head>?<body
7.
Error: Start tag body seen but an element of the same type was already open.
From line 42, column 1; to line 42, column 6
>?</head>?<body>?<div

et voici mon code :

accueil.php:
<?php $titre='Page d\'accueil de Accessibilité programmes 4.2'; ?>
<!DOCTYPE html>
<html lang="fr">
<head>
<?php include 'header.php';
include 'scripts136-PHP.html'; ?>
</head>
<body>
<div id="container"><div id="header">
<div id="logo"> <img src="images/ORDIVOX.BMP" alt="logo du site"/> </div>
</div>
<?php include "menu.php";
if((isset($_COOKIE['audio']) and $_COOKIE['audio'] == '1') or !isset($_COOKIE['audio'])) { ?>
<audio src="sons/accueil.mp3" autoplay></audio>
<?php } ?>
<a href="http://www.mapassionmesaiguilles.com/">Consulter le site de tricot, couture et broderie de ma mère</a>
<br />
<a href="#contenu">Ignorer le menu de la page</a>
<a id="menupage"></a>
<h2>Menu de la page</h2>
<ul>
<li><a href="#menusite">Retourner au menu général du site</a></li>
<li><a href="#horloge">Mais, quelles sont l'heure et la date actuelles ?</a></li>
<li><a href="#conteur">Voir le nombre de visiteurs de ce site</a></li>
</ul>
<div id="body" role="main">
<a id="contenu"></a>
<h1>accueil de accessibilité programmes 4.2</h1>
<p>Bienvenue sur le site qui vous résumera tout ou presque tous les logiciels accessibles et utilisables par des non/mal-voyants mais aussi par des voyants évidemment. :) <br /> Les logiciels proposés sur ce site sont garantis sans virus.<br />
Note: <br />
certains liens signalés comme renvoyant vers le serveur de l'éditeur renvoient sur un site alternatif pour les raisons suivantes: </p>
<ul>
<li>L'éditeur donne ce lien car son programme n'est pas directement hébergé sur son serveur</li>
<li>La version n'est pas dévelopée par l'éditeur donc il n'existe qu'un lien vers le site alternatif</li>
</ul>
<a id="horloge"></a>
<h2>Mais, quelles sont l'heure et la date actuelles ?</h2>
<?php include 'date.html';
include 'horloge.html';?>
<h2>Forum de Accessibilité programmes</h2>
<p>
Chers visiteurs,<br />
nous vous rappelons qu'un forum est à votre disposition <a href="phpboost">par ici</a>.<br />
Soyez nombreux dessus.</p>
<ul>
<li><a href="#menusite">retour au menu du site</a></li>
<li><a href="#menupage">Retourner au menu de la page</a></li>
</ul>
</div></div>
<?php include 'footer.php';?>
</body>
</html>

header.php:
<meta charset="utf-8">
<title><?php print $titre; ?></title>
<link rel="stylesheet" type="text/css" href="css/ap.css" />

footer.php:
<div id="footer" role="contentinfo">
<p>
<a id="conteur"></a>
<?php include_once('compteur.php'); ?>
<br />
Ce site est hébergé par Patrick Zajda, merci à lui. :)
<br />
Copyright (C) 2015 - 2016 l'équipe accessibilité programmes


</p>

</div>

et compteur.php:
<?php

/*
  • Si le fichier où l'on stock,
  • les données n'existe pas encore
  • on le crée.
  • /


$fichier = '.htcompteur';
if( !file_exists($fichier) ) {
$fp = fopen($fichier, "w");
fwrite($fp, serialize(array()));
fclose($fp);
}

/*
  • Définition de variables
  • nécessaire au compteur :
  • - deux termes constants,
  • - l'ip du visiteur,
  • - la date et l'heure.
  • /


$argument_visites = 'visites';
$argument_requêtes = 'requêtes';
$ip = $_SERVER['REMOTE_ADDR'];
$time = date('YmdGis');

/*
  • Récupération des données du
  • compteur précédemment stockées.
  • /


$lignes = file($fichier) or die('Lecture du compteur impossible');
$donnees = unserialize($lignes[0]);

/*
  • Pour chaque clé du tableau de données
  • qui ne soit pas attribuée aux visites et aux requêtes
  • si la valeur correspond à une date antérieure
  • au même jour, on supprime l'ip du visiteur.
  • /


foreach( $donnees as $cle => $valeur )
{
if( substr($valeur, 0, 8) != substr($time, 0, 8) &&
$cle != $argument_visites &&
$cle != $argument_requêtes ) {
unset($donnees[$cle]);
}
}

/*
  • On incrémente ( ajoute +1 ) la valeur
  • du nombre de requêtes.
  • Si l'ip n'est pas encore enregistrée,
  • on incrémente la valeur du nombre de visites
  • et on ajoute l'ip dans le tableau accompagné
  • de la date et de l'heure de l'exécution.
  • /


$donnees[$argument_requêtes]++;
if( !$donnees[$ip] ) {
$donnees[$argument_visites]++;
$donnees[$ip] = $time;
}

/*
  • On effectue un petit report de variable
  • pour une utilisation ultérieur plus aisée.
  • /


$nb_visiteurs = $donnees[$argument_visites];
$nb_aujourdhui = count($donnees)-2;
$nb_requêtes = $donnees[$argument_requêtes];

/*
  • On stock le tableau dans le fichier de données
  • en écrasant sa valeur précédente.
  • /


$fp = fopen($fichier,"wb");
fwrite($fp, serialize($donnees));
fclose($fp);

/*
  • On affiche les résultats du compteur.
  • /


print "Ce site compte ". $nb_visiteurs. " visiteurs depuis le premier janvier de cette année et ";
print $nb_aujourdhui. " depuis minuit.";
print " Enfin il y a eu ". $nb_requêtes. " pages affichées depuis le premier janvier.";
?>



que dois-je faire à mon code pour ne plus avoir d'erreurs, je ne trouve pas?

Merci d'avance.

5 réponses

Grandasse_ Messages postés 924 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 27 avril 2023 592
9 mai 2016 à 19:25
Bonjour,
Est-ce qu'on peut avoir le rendu HTML plutôt que le PHP ?
N'hésitez pas à utiliser des outils pour patager du code : https://0bin.net/
0
corentin.bc Messages postés 389 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 4 novembre 2022 8
9 mai 2016 à 19:33
Slt,
rendu HTML, qu'entends-tu par-là?
En tout cas je me dis que le code donné par Firefox sera peut-être plus simple à analyser, le voici:

1 <!DOCTYPE html>
2 <html lang="fr">
3 <head>
4 <meta charset="utf-8">
5 <title>Page d'accueil de Accessibilité programmes 4.2</title>
6 <link rel="stylesheet" type="text/css" href="css/ap.css" /><SCRIPT type="text/javascript">
7 /*
8 Source : http://www.editeurjavascript.com
9 Adaptation : http://www.outils-web.com
10 */
11 function HeureCheckEJS()
12 {
13 krucial = new Date;
14 heure = krucial.getHours();
15 min = krucial.getMinutes();
16 sec = krucial.getSeconds();
17 jour = krucial.getDate();
18 mois = krucial.getMonth()+1;
19 annee = krucial.getFullYear();
20 if (sec < 10)
21 sec0 = "0";
22 else
23 sec0 = "";
24 if (min < 10)
25 min0 = "0";
26 else
27 min0 = "";
28 if (heure < 10)
29 heure0 = "0";
30 else
31 heure0 = "";
32 DinaHeure = heure0 + heure + ":" + min0 + min + ":" + sec0 + sec;
33 which = DinaHeure
34 if (document.getElementById){
35 document.getElementById("ejs_heure").innerHTML=which;
36 }
37 setTimeout("HeureCheckEJS()", 1000)
38 }
39 window.onload = HeureCheckEJS;
40 </SCRIPT>
41 </head>
42 <body>
43 <div id="container"><div id="header">
44 <div id="logo"> <img src="images/ORDIVOX.BMP" alt="logo du site"/> </div>
45 </div>
46 <hr />
47 <a href="#menupage">Ignorer le menu du site et aller directement au menu de la page</a><br />
48 <a id="menusite"></a>
49 <h2>menu du site</h2>
50 <div id="nav" role="navigation">
51 <ul id="menu">
52 <li><a href="/">Retour à l'accueil</a></li>
53 <li><a href="/AccessiKey.php">AccessiKey</a></li>
54 <li><a href="/bureautique.php">bureautique</a></li>
55 <li><a href="/compression-decompression.php">compression et décompression</a></li>
56 <li><a href="/courriers-electroniques-et-messageries.php">courriers électroniques et messageries instantanées</a></li>
57 <li><a href="/audio.php">écoute et retouche de fichiers audios et vidéos</a></li>
58 <li><a href="/internet.php">internet</a></li>
59 <li><a href="/jeux.php">jeux</a></li>
60 <li><a href="/vocal.php">lecteurs d'écran</a></li>
61 <li><a href="/MaintenanceKey.php">MaintenanceKey</a></li>
62 <li><a href="/modulesNVDA.php">modules du lecteur d'écran NVDA</a></li>
63 <li><a href="/securite_et_nettoyage.php">sécurité et nettoyage</a></li>
64 <li><a href="/sites_utiles.php">Sites utiles</a></li>
65 <li><a href="/tutos.php">tutoriels</a></li>
66 <li><a href="/utilitaires.php">utilitaires</a></li>
67 <li><a href="/contact.php">contacts et réseaux sociaux</a></li>
68 <li><a href="/flu_du_site.Xml">flux RSS du site</a></li>
69 <li><a href="/wanewsletter-2.3.4/subscribe.php">inscription et désinscription à la newsletter du site</a></li>
70 <li><a href="/settings.php">Préférences et réglages</a></li>
71 <li><a href="téléchargement">Télécharger des logiciels installables sans parcourir les pages du site</a></li>
72 <li><a href="portables/téléchargement">Télécharger des logiciels portables sans parcourir les pages du site</a></li>
73 <li><a href="https://www.nvda-fr.org/">Consulter le site NVDA-fr de Michel Such</a></li>
74 </ul>
75
76 </div>
77 <hr />
78 <a href="http://www.mapassionmesaiguilles.com/">Consulter le site de tricot, couture et broderie de ma mère</a>
79 <br />
80 <a href="#contenu">Ignorer le menu de la page</a>
81 <a id="menupage"></a>
82 <h2>Menu de la page</h2>
83 <ul>
84 <li><a href="#menusite">Retourner au menu général du site</a></li>
85 <li><a href="#horloge">Mais, quelles sont l'heure et la date actuelles ?</a></li>
86 <li><a href="#conteur">Voir le nombre de visiteurs de ce site</a></li>
87 </ul>
88 <div id="body" role="main">
89 <a id="contenu"></a>
90 <h1>accueil de accessibilité programmes 4.2</h1>
91 <p>Bienvenue sur le site qui vous résumera tout ou presque tous les logiciels accessibles et utilisables par des non/mal-voyants mais aussi par des voyants évidemment. :) <br /> Les logiciels proposés sur ce site sont garantis sans virus.<br />
92 Note: <br />
93 certains liens signalés comme renvoyant vers le serveur de l'éditeur renvoient sur un site alternatif pour les raisons suivantes: </p>
94 <ul>
95 <li>L'éditeur donne ce lien car son programme n'est pas directement hébergé sur son serveur</li>
96 <li>La version n'est pas dévelopée par l'éditeur donc il n'existe qu'un lien vers le site alternatif</li>
97 </ul>
98 <a id="horloge"></a>
99 <h2>Mais, quelles sont l'heure et la date actuelles ?</h2>
100 <SCRIPT type="text/javascript">
101 var mois=new Array(13);
102 mois[1]="Janvier";
103 mois[2]="Février";
104 mois[3]="Mars";
105 mois[4]="Avril";
106 mois[5]="Mai";
107 mois[6]="Juin";
108 mois[7]="Juillet";
109 mois[8]="Août";
110 mois[9]="Septembre";
111 mois[10]="Octobre";
112 mois[11]="Novembre";
113 mois[12]="Décembre";
114 var time=new Date();
115 var month=mois[time.getMonth() + 1];
116 var date=time.getDate();
117 var year=time.getYear();
118 if (year < 2000)
119 year = year + 1900;
120 document.write("Nous sommes le " +date + " ");
121 document.write(month + " " + year);
122 </SCRIPT>
123 <div id="ejs_heure">Initialisation</div>
124 <h2>Forum de Accessibilité programmes</h2>
125 <p>
126 Chers visiteurs,<br />
127 nous vous rappelons qu'un forum est à votre disposition <a href="phpboost">par ici</a>.<br />
128 Soyez nombreux dessus.</p>
129 <ul>
130 <li><a href="#menusite">retour au menu du site</a></li>
131 <li><a href="#menupage">Retourner au menu de la page</a></li>
132 </ul>
133 </div></div>
134 <div id="footer" role="contentinfo">
135 <p>
136 <a id="conteur"></a>
137 Ce site compte 5920 visiteurs depuis le premier janvier de cette année et 46 depuis minuit. Enfin il y a eu 14880 pages affichées depuis le premier janvier.
138 <br />
139 Ce site est hébergé par Patrick Zajda, merci à lui. :)
140 <br />
141 Copyright (C) 2015 - 2016 l'équipe accessibilité programmes
142
143
144 </p>
145
146 </div> </body>
147 </html>

et si non le site est ici:
https://www.accessibiliteprogrammes.fr
0
Grandasse_ Messages postés 924 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 27 avril 2023 592
9 mai 2016 à 21:20
Merci pour le lien, c'est bien plus simple. Effectivement quelque chose cloche.
Quel éditeur de texte utilise-vous ?
0
telliak Messages postés 3656 Date d'inscription mercredi 20 septembre 2006 Statut Membre Dernière intervention 29 mai 2024 876
9 mai 2016 à 22:50
Salut,

Doit y avoir un problème du côté du texte de la ligne <head> ou de celle qui suit. Un caractère provoque une fin inopinée de la balise <head> dans mon débogueur.
<!DOCTYPE html>
<html lang="fr">
<head> </head>
<body>
<meta charset="utf-8">
<title>Page d'accueil de Accessibilité programmes 4.2</title>
<link href="css/ap.css" type="text/css" rel="stylesheet">
<script type="text/javascript">
<div id="container">
...
0
corentin.bc Messages postés 389 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 4 novembre 2022 8
10 mai 2016 à 06:50
Salut à vous 2,
j'utilise Notepad++.
pour le caractère dans head je vais revérifier tout ça.
0
Grandasse_ Messages postés 924 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 27 avril 2023 592
10 mai 2016 à 08:13
Dans ce cas je te renvoie ici : "UTF-8 sans BOM" https://openclassrooms.com/forum/sujet/utf-8-sans-bom-et-notepad-61384

Est-ce que le problème persiste quand tu enregistres ta page en utf-8 sans BOM ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
corentin.bc Messages postés 389 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 4 novembre 2022 8
10 mai 2016 à 17:59
Re,
après l'exportation en utf-8 sans BOM tout fonctionne bien.
J'en ai profité pour réanalyser toutes mes pages.
Il reste une erreur dans settings.php, la voici:
1.
Error: The for attribute of the label element must refer to a non-hidden form control.
From line 53, column 1; to line 53, column 18
d="post">↩<label for="menu">Style

voici le lien de la page:
https://www.accessibiliteprogrammes.fr/settings.php
et enfin le code est le suivant:

<?php
$log = '';
if(isset($_GET['act']) and $_GET['act'] == 'form') {
if(isset($_POST['menu']))
setcookie('menu', $_POST['menu'], time() + 365*24*3600, null, null, false, true);
if(isset($_POST['audio'])) {
if($_POST['audio'] == 'on')
setcookie('audio', '1', time() + 4*365.25*24*3600, null, null, false, true);
else
setcookie('audio', '0', time() + 4*365.25*24*3600, null, null, false, true);
}
else
setcookie('audio', '0', time() + 4*365.25*24*3600, null, null, false, true);
header('Location: /settings.php?act=ok#log');
}
if(isset($_GET['act']) and $_GET['act'] == 'ok')
$log = 'ok';
?>


<?php $titre="Paramètres du site"; ?>
<!DOCTYPE HTML>
<HTML lang="fr">
<HEAD>
<?php include "header.php"; ?>
</HEAD>
<BODY>
<div id="container"><div id="header">
<div id="logo"> <img src="images/ORDIVOX.BMP" alt="logo du site"/> </div>
</div>
<?php include "menu.php";
if((isset($_COOKIE['audio']) and $_COOKIE['audio'] == "1") or !isset($_COOKIE['audio'])) { ?>
<audio src="sons/settings.mp3" autoplay></audio>
<?php } ?>
<div id="body" role="main">
<h1>Préférences</h1>
<?php
if($log != '') {
?>
<p id="log">
<?php
if($log == 'ok')
print('<strong>Les modification ont bien été prises en comptes.</strong>');
?>
</p>
<?php
}
?>
<p>
Ici vous pouvez effectuer quelques réglages.<br />
Les cookies doivent être autorisés pour que celà prenne effet.
</p>
<form action="?act=form" method="post">
<label for="menu">Style du menu:</label> <br />
<label><input type="radio" name="menu" value="ulli" <?php if (isset($_COOKIE['menu']) and $_COOKIE['menu'] == "ulli" or !isset($_COOKIE['menu'])) echo 'checked'; ?> />Liste à puces (Version 1.0, 4.1 et 4.2 du site)</label><br />
<label><input type="radio" name="menu" value="select" <?php if((isset($_COOKIE['menu']) and $_COOKIE['menu'] == "select")) echo 'checked'; ?> />Liste déroulante (Version 2.0, 3.0 et 4.0 du site)</label><br />
<label for="f_audio">Jouer un son en ouvrant une page du site:</label>
<input type="checkbox" id="f_audio" name="audio" <?php if((isset($_COOKIE['audio']) and $_COOKIE['audio'] == "1") or !isset($_COOKIE['audio'])) echo 'checked'; ?> /><br />
<input type="submit" value="Enregistrer" />
</form>

<a href="#menusite">retour au menu du site</a>

</div></div>
<?php include "footer.inc.php";?>
</BODY>
</HTML>

que dois-je faire subire à mon malheureux code por favor?

Merki.
0