8792 sujets

Développement web côté serveur, CMS

Hello tout le monde.

J'ai un problème de validation sur un formualaire.
Le serveur rajoute un champ input de type hidden pour le PHPSID automatiquement et me cause une erreur lors de la validation. Ce n'est peut-etre pas très claire, voici un bout de code.

Mon template :

<!--Menu Gauche-->
<div id="contLeft">
  <h3 id="nav">Navigation</h3>
    <ul class="ssmenu">
      <li><a href="/?do=showAdmin" title="Administration">Scans</a></li>
      <li><a href="/?do=showAdmin" title="Administration">Forums</a></li>
    </ul> 

<h3 id="rech">Recherche</h3>
  <form action="/?do=search" method="post" >
    <p>
      <input type="text" name="word" id="wd"/> <input type="submit" value="Go !" id="sub"/>
     </p>
</form>
<h3 id="part">Partenaires</h3>
<ul class="ssmenu">
  <li>...</li>
</ul> 
</div>


Lorsque j'affiche avec le code avec le validateur :
 <!--Menu Gauche-->
 <div id="contLeft"><h3 id="nav">Navigation</h3>
 <ul class="ssmenu">
 <li><a href="/?do=showAdmin&amp;PHPSESSID=a2825e5ecebb2328cc470d3fb3f41636" title="Administration">Scans</a></li>
 <li><a href="/?do=showAdmin&amp;PHPSESSID=a2825e5ecebb2328cc470d3fb3f41636" title="Administration">Forums</a></li>
</ul>

<h3 id="rech">Recherche</h3>
<form action="/?do=search" method="post" >
[b] [#red]<input type="hidden" name="PHPSESSID" value="a2825e5ecebb2328cc470d3fb3f41636" />[/b][/#]
<p>
<input type="text" name="word" id="wd"/> <input type="submit" value="Go !" id="sub"/></p>
</form>
<h3 id="part">Partenaires</h3>
<ul class="ssmenu">
<li>...</li>
</ul>
</div>


J'ai mis en gras l'erreur enfin je crois Smiley langue .

L'erreur du validateur
a écrit :
Error Line 62, column 122: document type does not allow element "input" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag .

...="a2825e5ecebb2328cc470d3fb3f41636" /><p>

The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element.

One possible cause for this message is that you have attempted to put a block-level element (such as "<p>" or "<table>") inside an inline element (such as "<a>", "<span>", or "<font>").


Voilà je ne sais pas trop comment résoudre cette crise. Quelqu'un peut-il m'aider ??
Modifié par xS_ (12 Mar 2006 - 16:54)
Salut,

tu dois donner une balise de type block en parent de ton input.
L'élément <form> ne peut recevoir que des éléments de types block comme enfant.
Au fait,
ça n'a rien à voir avec PHP, c'est purement une erreur dans le code HTML, je déplace dans le salon qui va bien.

Peux-tu corriger ton titre en "Validation xHTML et formulaire" ou quelque chose dans ce gout là, ça facilitera les recherches futures sur le sujet.
Modifié par Olivier (12 Mar 2006 - 13:24)
Je me mélange un peu dans les blocs et tout le reste.

Si j'ai bien compris il faut que j'encadre mon imput (le champ de type hidden) par un élément de type bloc.
Le problème est que ce champ s'insère à mon insu entre le <form ...> et le <p> dans lequel j'ajoute mes éléments inputs.

J'ai donc essayé de mettre un élément bloc juste avant le form mais je tombe sur le même type d'erreur (en espèrant que le fichier était bien chargé sur mon ftp)

Ai-je compris la réponse ou je suis à coté de la plaque
En gros, ton code doit donner quelque chose dans ce gout là :


<form ..>
<div>
<input />
<input />
...
</div>
</form>

Ca, si tu n'as qu'une partie à ton formulaire

<form ..>
<fieldset>
<legend>...</legend>
<input />
<input />
</fieldset>

<fieldset>
<legend>...</legend>
<input />
<input />
</fieldset>
</form>


Si tu as plusieurs parties à ton formulaire.
djfeat a écrit :
C'est bien un problème de PHP, et plus précisément de session.


Ah bah merdalors !
Quand PHP fout la merdouille...

Bon, retour dans le salon PHP, avec la solution au problème en prime !
Bonjour à tous !

J'ai le même souci sur mes pages, hébergées sur un serveur mutualisé... Je ne peux pas utiliser le ini_set, qui semblait être la solution à mon problème...

Pour info :
a écrit :
document type does not allow element "input" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag .


Sur le code :

<div id="sondage">
		<form action="/sondages/index.html" method="post">
			<h3>Sondage</h3>
			<p>...</p>
		</form>
</div>


Le truc, c'est que le serveur me rajoute un champ caché après l'ouverture de ma balise FORM :
<div id="sondage">
		<form action="/sondages/index.html" method="post">[b]<input type="hidden" name="PHPSESSID" value="987676UBSDHSD89" />[/b]
			<h3>Sondage</h3>
			<p>...</p>
		</form>
</div>


Quelqu'un aurait une piste pour résoudre cette bizarremrie ?
Administrateur
Bonjour et bienvenue beowax,

tu aurais mieux fait d'ouvrir un nouveau sujet plutôt que de poster dans un sujet marqué comme [ Résolu] (avec un lien vers le sujet de référence bien sûr).
Si ini_set ne fonctionne pas, il ne reste plus qu'à contacter l'hébergeur ou à en changer, je suppose?