Problème pour améliorer un formulaire!

Petit nouveau ! | 2 Messages

02 juil. 2011, 12:11

Bonjour à tous,

Je suis en train de construire un site Internet, mais comme je suis nul en PHP et même, en programmation en général, j'utilise diverses petites applications récupérées sur le Net pour faire mes mises en page et divers codages récupérés aussi sur le Net pour les parties que mon soft ne gère pas.
J'en suis à la page de contact.

Voici le codage de mon formulaire: (formulaire.html)
<form action="contactmail.php" method="post" name="contactmail" id="contactmail" target="_blank">
<table width="600" border="0" cellpadding="4" cellspacing="1" >
  <tr>
    <td colspan="2"><div align="center" class="Style1"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Formulaire pour nous contacter :</strong> </font></div></td>
    </tr>
  <tr>
    <td ><div align="right" ><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Votre adresse mail :</font></div></td>
    <td ><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
      <input name="mail" type="text" id="mail" size="20" maxlength="100"/>
    </font></td>
  </tr>
  <tr>
    <td><div align="right" >
      <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
      <label for="objet">Objet du mail :</label>
      </font></div></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
      <input name="objet" type="text" size="20" maxlength="100" />
    </font></td>
  </tr>
  <tr>
    <td align="right" valign="top">      <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
      <label for="msg">Votre message :</label>
      </font>
      <div align="right" ></div>
      <div align="right" ></div></td>
    <td>      <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
      <textarea name="msg" cols="40" rows="4"></textarea>
    </font></td>
  </tr>
  <tr>
    <td><div align="right" ><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Image de s&eacute;curit&eacute;: </font></div></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><img src="cryptimage.php" alt="image de securisation du formulaire" title="image de securisation du formulaire" /></font></td>
  </tr>
  <tr>
    <td><div align="right" >
      <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
      <label for="verif">Recopier la combinaison ci dessus dans le champ qui suit :</label>
      </font></div></td>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
      <input name="verif" type="text" size="10" maxlength="5" />
    </font></td>
  </tr>
  <tr>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><span class="Style3"></span></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
      <input name="submit" type="submit" value="Envoyer le message" />
    </font></td>
  </tr>
</table>
</form>
Mon cryptimage.php
<?php
session_start();
$liste = "abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$code = '';
while(strlen($code) != 5) {
$code .= $liste[rand(0,63)];
}
$_SESSION['code']=$code;
$larg = 60;
$haut =20;
$img = imageCreate($larg, $haut);
$rouge = imageColorAllocate($img,255,0,0);
$noir = imageColorAllocate($img,0,0,0);
$code_police=15;
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: post-check=0, pre-check=0', false); 
header("Content-type: image/jpeg");
imageString($img, $code_police,($larg-imageFontWidth($code_police)*strlen("".$code.""))/2,0, $code,$noir);
imagejpeg($img,'',65);
imageDestroy($img);
?>
Et enfin mon contactmail.php
<?php
session_start();
if(!isset($_SESSION['code']) OR strlen($_SESSION['code']) !=5) exit("Erreur !");
if($_SESSION['code'] != $_POST['verif']) exit("Erreur les valeurs sont différentes !");
$exp = $_POST['mail'];
$objet = stripslashes($_POST['objet']);
$msg = stripslashes($_POST['msg']);
$envoi=mail("[email protected]", $objet, $msg,"From: $exp\r\n"."Reply-To: $exp\r\n");
if($envoi) echo" Le mail a bien été envoyé, vous recevrez une réponse très prochainement!";
else echo"L'envoi a échoué, merci de renouveler l'opération !";
session_unset();
session_destroy();
?>
Quand je remplis de formulaire et que le code n'est pas identique à l'image générée de façon aléatoire, une nouvelle fenêtre s'ouvre (une page blanche) avec comme texte:
" Erreur les valeurs sont différentes !"
Je voudrais que ce texte ne s'affiche pas dans une nouvelle fenêtre mais dans un message box et que le fait de fermer ce message box rafraîchisse mon " formulaire.html" comme quand j'appuis sur F5 (les champs restent renseignés mais l'image aléatoire change).
J'aimerais aussi placer un petit bouton à côté de l'image aléatoire de manière à la changer en cas de problème de lecture (fonction identique à F5 mais placé à côté de l'image.)
Enfin, si le code renseigné dans le champ de mon formulaire est identique à l'image aléatoire, le mail est envoyé, une nouvelle fenêtre s'ouvre (une page blanche) avec comme texte:
"Le mail a bien été envoyé, vous recevrez une réponse très prochainement!"
Je voudrais que ce texte ne s'affiche pas dans une nouvelle fenêtre mais dans un message box (comme pour le cas ou le code est mauvais) et que le fait de fermer ce message box ferme la page formulaire et me ramène à la page d'accueil de mon site.

J'ai essayé plusieurs choses avec des morceaux de code trouvé ici et là, mais rien de concluant!
Si quelqu'un pouvait m'aider, je lui en serais très reconnaissant!

Merci d'avance.

Philippe

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 juil. 2011, 19:01

Si tu ne veux pas changer de page lors de l'envoi de ton formulaire, tu as deux options.

Soit ouvrir une fenêtre popup dans laquelle tu vas envoyer les données de ton formulaire (le traitement se fera alors dans la popup qui peut avec du javascript recharger la page qui l'a ouverte). L'inconvénient c'est que les popup sont de moins en moins appréciées et de plus en plus souvent bloquées par les navigateurs.
L'autre option consiste à n'utiliser que du javascript et en particulier ajax qui te permet d'interroger le serveur sans changer de page (cf. forum FAQ). Cela te permettrait de vérifier si les données saisies sont correctes et d'informer l'utilisateur avec une alert() ou autre.. la contrainte, c'est qu'il faut se mettre au javascript :)

Ceci étant, le javascript te seraient fortement utile également pour recharger l'image :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 2 Messages

03 juil. 2011, 20:44

Merci pour votre réponse. :D

Quand j'ai décidé de construire mon site Internet, j'ai procédé comme le font sans doute toutes les personnes qui, comme moi, n'ont aucune notion de programmation informatique, quelque-soit le langage.
J'ai récupéré sur Internet un kit graphique gratuit qui me plaisait bien, j'ai téléchargé une application elle aussi gratuite qui m'a permis d'éditer ce kit et de l'adapter au sujet de mon site (kompozer), et c'était parti!
Avec ce type de soft, il suffit de placer ce que l'on veut où l'on veut et le codage html ce fait tout seul.
Une fois ma première page réalisée, j'ai juste fait un copier coller de cette page, j'ai renommé la copie puis je l'ai éditée afin de construire ma seconde page, et ainsi de suite.
Après, j'ai fait les liens de page en page toujours par le biais de l'application.

Le seul moment où je suis rentré dans le code source, c'est quand j'ai voulu insérer ce formulaire.
J'ai trouvé les codes sur Internet, j'ai suivi les indications qui étaient fournies avec (remplacer .php par .txt pour éditer le fichier avec notepad, remplacer les XXX.. par votre adresse mail, etc...).
Puis j'ai placé le code source du formulaire dans la page qui l'accueille, toujours à partir de l'application, en mode mixte (moitié de l'écran en graphique et l'autre moitié avec le codage).
Je me suis placé là où je voulais coller mon formulaire côté graphique, cela a placé le curseur au bon endroit côté codage et j'ai fait "coller".
Voilà la limite de mes connaissances. :oops:

Suite à votre reponse, j'ai été lire les sujets dans la FAQ où il y avait AJAX ou JAVASCRIPT d'écrit dans le titre, et je n'ai rien compris! :(
Je pense qu'effectivement, apprendre le JAVASCRIPT pourrait être une très bonne chose, mais je pense aussi qu'il faudrait d'abord que j'apprenne les bases de la programmation en général! :?

Je me suis permis de poser ma demande ici car comme je n'y connais rien de rien (je pense que vous l'avez compris!) je pensais que pour obtenir le résultat voulu, il suffirait de modifier quelques lignes de code et/ou d'en ajouter certaines autres, je pensais que cela était relativement simple pour une personne qui connait le sujet.
Il semble que je me suis trompé! :roll:

Si pour obtenir le résultat que je recherche, cela demande des heures et des heures de programmation pour tout re-écrire de A à Z, je ne me permettrais pas de demander à quelqu'un de le faire à ma place :non: , et moi, j'en suis incapable.

Merci de m'avoir répondu.

Amicalement.

Philippe

:wink:

ViPHP
ViPHP | 1996 Messages

04 juil. 2011, 00:03

Ou tu peux aussi précharger la section avec des CSS en mode display:none; et quand l'utilisateur clic sur un bouton ou un lien ou une truc tout court, le javascript document.getElementById('maSection').style.diplay='block'; (très simple celui là) montrera la page en question (transformera en display:block;). C'est une sorte de fausse pop-up...
<div id='maSection' style='display: none; width: 600px; height: 400px; margin: 0 auto; border: yellow 1px solid; background-color : #FFC; text-align : center;'>
 Affichage du formulaire
</div>

<input type="button" value="Afficher le formulaire" onClick="document.getElementById('maSection').style.display='block';" />
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr