5568 sujets

Sémantique web et HTML

Bonsoir à tous,

Voilà, j'ai un soucis qui va certainement vous faire sourire, la réponse devant être évidente.
Mais... je sèche complètement !

C'est tout simple :
J'ai fait un petit formulaire en HTML commençant par cela :
<form action="formulaire.php" method="post">


Cela devrait donc envoyer les informations vers mon fichier "formulaire.php".
Sauf que non !
Lorsque je clique sur mon bouton "submit" en bas du formulaire, c'est une nouvelle page internet qui s'ouvre avec www.lenomdemonsite/formulaire.php

Comment faire pour envoyer les informations vers mon fichier php?
Je ne comprends pas...

Merci à vous toutes et tous par avance ! Je ne sais plus comment faire.

/Laurent.
Modérateur
Salut,

Il n'y a pas de question idiote. Smiley cligne

Si ton fichier est à la racine, essai d'écrire ceci :


<form action="/formulaire.php" method="post">

ou


<form action="/ton_fichier.php" method="post">
Bonsoir Nlux,

Merci beaucoup de ce soutien ! et de ta réponse, c'est très sympa.

Effectivement, ma page HTML avec le formulaire et mon fichier avec le script en php sont bien à la racine de mon site.

Mais malheureusement, même en suivant ton conseil du "/ ", rien n'y fait.
Quand je clique sur le bouton "envoyer" de mon formulaire, cela ouvre une nouvelle page HTML plutôt qu'envoyer la requête à mon fichier php.

Je ne comprends vraiment pas pourquoi !

Merci pour le fait qu'il n'y ai pas de questions idiotes... C'est plutôt moi qui le suit du fait de ne pas y arriver ! Smiley langue
salut,
c'est le comportement normal... Après l'envoi du formulaire, on est redirigé vers ton fichier de traitement "formulaire.php".
Je pense que tu veux rester sur la même page et dans ce cas, le traitement doit donc se faire sur la même page.
Tu mets le script contenu dans "formulaire.php" directement dans la page contenant le formulaire et tu remplaces le fichier contenu dans action (qui au passage est un attribut et non une balise) par un $_SERVER['PHP_SELF']

<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
Modérateur
Zelalsan a écrit :
salut,
c'est le comportement normal... Après l'envoi du formulaire, on est redirigé vers ton fichier de traitement "formulaire.php".
Je pense que tu veux rester sur la même page et dans ce cas, le traitement doit donc se faire sur la même page.
Tu mets le script contenu dans "formulaire.php" directement dans la page contenant le formulaire et tu remplaces le fichier contenu dans action (qui au passage est un attribut et non une balise) par un $_SERVER['PHP_SELF']

&lt;form action="&lt;?= $_SERVER['PHP_SELF'] ?&gt;" method="post"&gt;


+1 Bien vu. Je n'avais pas du tout pensé à ce cas. Smiley smile

Pour chipoter, il est bon d'écrire ceci en natif :

<form action="<?= htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">

Pourquoi utiliser htmlspecialchars() ? Cela évite injection SQL ou autres.
niuxe a écrit :
Pourquoi utiliser htmlspecialchars() ? Cela évite injection SQL ou autres.

Je ne sais pas si je dis peut être une connerie mais je ne pense pas qu'il y ait un rapport concret avec les injections SQL. D'une part, un $_SERVER['PHP_SELF'] n'affichera que le script en cours d'exécution par rapport à la racine du web (avec rien d'autre en plus) et d'autre part, les htmlspecialchars et htmlentities servent à convertir certains caractères en entités HTML donc encore une fois, rien à voir avec une injection SQL. Ces deux derniers servent plus à protéger l'affichage issue d'une donnée utilisateur ou d'une URL.
Les injections SQL se protègent avec des requêtes préparées ou avec d'autres techniques mais à ma connaissance pas avec un htmlspecialchars.
Bonjour !

Et surtout, mille mercis de prendre le temps d'écrire et de répondre concernant mon problème.
Je vais immédiatement essayer les possibilités que vous m'avez tous les deux proposées.

Voici le code HTML de mon formulaire, que l'on peut voir à cette adresse : http://natateur.fr/commander.html

  <form action="<?= htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">
  <TABLE BORDER=0 >
<TR>
  <TD width="316" align=right> <br />
    Nom : </TD>
  <TD width="162"><br />
  <input type="text" size="20" name="nom1" value=""> </TD></TR>
<TR>
  <TD align=right>Prénom :</TD>
  <TD><input type="text" size="20" name="prenom1" value=> </TD></TR>
<TR>
  <TD align=right> Téléphone :</TD>
  <TD><input type="text" size="20" name="email" value=""> </TD></TR>
<TR>
  <TD align=right> E-Mail : </TD>
  <TD><input type="text" size="20" name="etablissement" value=""> </TD></TR>
<TR>
  <TD align=right> Ville:  </TD><TD><input type="text" size="20" name="ville" value=""> </TD></TR>

<TR>
  <TD align=right> Fonction :</TD><TD>
          <select name="fonction" id="fonction">
          <option value="Directeur de piscine">Directeur de piscine</option>
          <option value="Personnel de mairie">Personnel de mairie</option>
          <option value="Enseignant">Enseignant</option>
          <option value="Etudiant">Etudiant</option>
          <option value="autre">Autre</option>
      </select></TD></TR>

</TABLE>

  <br />
  <h3><br />
</h3>
<TABLE BORDER=0>
<TR>
  <TD><input type="checkbox" name="kit[]" value="Le Kit Expo" />
Le Kit Expo  </TD>
  <TD align=right>1000 Euros TTC</TD>
  <TD>                
    <select name="quantité1" id="quantité1">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="+10">+10</option>
  </select></TD>
</TR>
<TR>
  <TD><input type="checkbox" name="diaporamam30" value="Le Diaporama30" />
Le Diaporama de 30'</TD>
  <TD align=right> 350 Euros TTC </TD>
  <TD>                
    <select name="quantité2" id="quantité2">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="+10">+10</option>
  </select></TD>
</TR>
<TR>
  <TD width="166"><input type="checkbox" name="diaporamam60" value="Le Diaporama60" />
    Le Diaporama de 60'</TD>
  <TD align=right>          650 Euros TTC</TD>
  <TD width="129">                
    <select name="quantité3" id="quantité3">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
      <option value="6">6</option>
      <option value="7">7</option>
      <option value="8">8</option>
      <option value="9">9</option>
      <option value="+10">+10</option>
    </select></TD>
    </TR>
</TABLE>

<h3>&nbsp;</h3>

  <P>
  <textarea name="commentaire" CLASS="foo" id="commentaire" rows="10" cols="55"></textarea>

<style>
textarea.foo
{
resize:none;
}

</style>
  <DIV ALIGN="left">
  <input type="submit" name="envoyer" value="Envoyer votre formulaire de commande" />
  <input type="reset" name="annuler" value="Annuler">
</DIV>
</form>



Une question... comment doit-on intégrer le script PHP dans la page HTML du formulaire?
Et dans $_SERVER['PHP_SELF'] , faut-il donner un nom à PHP_SELF, comme formulaire.PHP_SELF, par exemple?

C'est finalement bien moins simple que je ne le pensais... Smiley rolleyes