Des erreurs bizarroïdes du W3C

corentin.bc Messages postés 385 Date d'inscription   Statut Membre Dernière intervention   -  
corentin.bc Messages postés 385 Date d'inscription   Statut Membre Dernière intervention   -
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.

--
Amicalement! Corentin.

5 réponses

  1. Grandasse_ Messages postés 987 Date d'inscription   Statut Membre Dernière intervention   619
     
    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
  2. corentin.bc Messages postés 385 Date d'inscription   Statut Membre Dernière intervention   8
     
    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
    1. Grandasse_ Messages postés 987 Date d'inscription   Statut Membre Dernière intervention   619
       
      Merci pour le lien, c'est bien plus simple. Effectivement quelque chose cloche.
      Quel éditeur de texte utilise-vous ?
      0
  3. telliak Messages postés 3652 Date d'inscription   Statut Membre Dernière intervention   885
     
    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
  4. corentin.bc Messages postés 385 Date d'inscription   Statut Membre Dernière intervention   8
     
    Salut à vous 2,
    j'utilise Notepad++.
    pour le caractère dans head je vais revérifier tout ça.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. corentin.bc Messages postés 385 Date d'inscription   Statut Membre Dernière intervention   8
     
    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