8768 sujets

Développement web côté serveur, CMS

Bonsoir,

Je rencontre un problème avec un formulaire, lorsque l'utilisateur envoie ce qu'il a rentré dans l'ensemble des champs, cela ne l'avertit pas de son action. Conséquence, je reçois plusieurs fois le mail (voir même 99 fois le mail pour les plus téméraires !)

la page send-annu.php


<?php
session_start();//on démarre la session
// $errors = [];
  $errors = array(); // on crée une vérif de champs
if(!array_key_exists('nom', $_POST) || $_POST['nom'] == '') {
  $errors ['nom'] = "vous n'avez pas renseigné votre nom";
  }
  if(!array_key_exists('prenom', $_POST) || $_POST['prenom'] == '') {
  $errors ['prenom'] = "vous n'avez pas renseigné votre prénom";
  }
if(!array_key_exists('email', $_POST) || $_POST['email'] == '' || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
  $errors ['email'] = "vous n'avez pas renseigné votre email professionnel";
  }
if(!array_key_exists('telephone', $_POST) || $_POST['telephone'] == ''){
  $errors ['telephone'] = "vous n'avez pas renseigné votre téléphone professionnel";
  }
if(isset($_POST['multiselect'])){
  $multiselect = array();
  foreach($_POST['multiselect'] as $return_choice){
  $multiselect[] = $return_choice;
  }
  $multiselect = implode(' ; ', $multiselect);
  }
if(!array_key_exists('adeli', $_POST) || $_POST['adeli'] == '') {
  $errors ['adeli'] = "vous n'avez pas renseigné votre numéro ADELI";
  }
if(!array_key_exists('adresse', $_POST) || $_POST['adresse'] == '') {
  $errors ['adresse'] = "vous n'avez pas renseigné votre adresse";
  }
if(!array_key_exists('cp', $_POST) || $_POST['cp'] == '') {
  $errors ['cp'] = "vous n'avez pas renseigné votre code postal";
  }
if(!array_key_exists('ville', $_POST) || $_POST['ville'] == '') {
  $errors ['ville'] = "vous n'avez pas renseigné votre ville";
  }
if(!array_key_exists('commentaire', $_POST) || $_POST['commentaire'] == '') {
  $errors ['commentaire'] = "vous n'avez pas renseigné votre message de présentation";
  }  
$site=$HTTP_POST_VARS['site']; 

  if(!empty($errors)){ 
  $_SESSION['errors'] = $errors;
  $_SESSION['inputs'] = $_POST;
  header('Location: inscription-annuaire-dieteticien-nutritionniste.php');
  }else{
  $_SESSION['success'] = 1;
  $headers  = 'MIME-Version: 1.0' . "\r\n";
  $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  $headers .= 'FROM:' . htmlspecialchars($_POST['email']);
  $to = 'local@diet.com';
  $objet = 'Inscription annuaire diet : ' . htmlspecialchars($_POST['nom']) .' ' . htmlspecialchars($_POST['prenom']) .'';
  $message_content = '
  <table>
  <tr>
  <td><b>Emetteur du message:</b></td>
  </tr>
  <tr>
  <td>'. $objet . '</td>
  </tr>
  <tr>
  <td>' . htmlspecialchars($_POST['adresse']) . '</td>
  </tr>
  <tr>
  <td>' . htmlspecialchars($_POST['cp']) . '</td>
  </tr>
  <tr>
  <td>' . htmlspecialchars($_POST['ville']) . '</td>
  </tr>
  <tr>
  <td>' . htmlspecialchars($_POST['email']) . '</td>
  </tr>
  <tr>
  <td><b>Tél: </b>' . htmlspecialchars($_POST['telephone']) . '</td>
  </tr>
  <tr>
  <td><b>ADELI: </b>' . htmlspecialchars($_POST['adeli']) . '</td>
  </tr>
  <tr>
  <td>' . htmlspecialchars($_POST['site']) . '</td>
  </tr>
  <tr>
  <td><b>Contenu du message:</b></td>
  </tr>
  <tr>
  <td>' . htmlspecialchars($multiselect) . '</td>
  </tr>
  <tr>
  <td>'. htmlspecialchars($_POST['commentaire']) .'</td>
  </tr>
    <tr><td>--<br>Cet email a été envoyé via le formulaire d ajout dans l annuaire du site Diététicien Nutritionniste Santé (http://www.dieteticien-nutritionniste-sante.com)</td></tr>
  </table>
  ';
	mail($to, $objet, $message_content, $headers);
  header('Location: inscription-annuaire-dieteticien-nutritionniste.php');
  }


la page du formulaire


<?php
  session_start();
  ?>
<!DOCTYPE html>
<head></head>
<body>
<?php if(array_key_exists('errors',$_SESSION)): ?>
  <div class="alert alert-danger">
  <?= implode('<br>', $_SESSION['errors']); ?>
  </div>
  <?php endif; ?>
  <?php if(array_key_exists('success',$_SESSION)): ?>
  <div class="alert alert-success">
  Votre inscription dans notre annuaire, nous a été envoyé. Vous serez prochainement ajouté dans votre région.
  </div>
  <?php endif; ?> 

	<form enctype="multipart/form-data" action="send-annu.php" method="post">
	<fieldset><legend>Vos coordonnées</legend>
		<p><label for="nom">Nom :</label><input required="true" type="text" id="nom" name="nom" value="<?php echo isset($_SESSION['inputs']['nom'])? $_SESSION['inputs']['nom'] : ''; ?>" tabindex="1" /></p>
		<p><label for="prenom">Prénom :</label><input required type="text" id="prenom" name="prenom" value="<?php echo isset($_SESSION['inputs']['prenom'])? $_SESSION['inputs']['prenom'] : ''; ?>" tabindex="2" /></p>		
		<p><label for="email">Email :</label><input required type="email" id="email" name="email" value="<?php echo isset($_SESSION['inputs']['email'])? $_SESSION['inputs']['email'] : ''; ?>" tabindex="3" /></p>
		<p><label for="telephone">Téléphone :</label><input required type="tel" id="telephone" maxlength="10" name="telephone" value="<?php echo isset($_SESSION['inputs']['telephone'])? $_SESSION['inputs']['telephone'] : ''; ?>" tabindex="4" /></p>
		</fieldset>

	<fieldset id="lieu exercice"><legend>Lieu d'exercice</legend> 
		<p><label for="cabinet"><input type="checkbox" name="multiselect[]" id="cabinet" value="à mon cabinet" tabindex="5"> J'exerce en cabinet</label> 
			 <br> 
			<label for="domicile"><input type="checkbox" name="multiselect[]" id="domicile" value="à domicile" tabindex="6"> Je consulte à domicile</label> 
		</p> 
	</fieldset> 
	<fieldset id="infosupp"><legend>Informations supplémentaires</legend>
		<p><label for="adeli">Numéro ADELI :</label><input required type="text" name="adeli" maxlength="10" title="Veuillez saisir votre numéro ADELI" value="<?php echo isset($_SESSION['inputs']['adeli'])? $_SESSION['inputs']['adeli'] : ''; ?>" tabindex="7" /></p> 
		<p><label for="adresse">Adresse :</label><input required type="text" name="adresse" title="Veuillez saisir votre adresse" value="<?php echo isset($_SESSION['inputs']['adresse'])? $_SESSION['inputs']['adresse'] : ''; ?>" tabindex="8" /></p> 
		<p><label for="cp">Code postal :</label><input required type="text" name="cp" maxlength="5" title="Veuillez saisir votre code postal" value="<?php echo isset($_SESSION['inputs']['cp'])? $_SESSION['inputs']['cp'] : ''; ?>" tabindex="9" /></p> 
		<p><label for="ville">Ville :</label><input required type="text" name="ville" title="Veuillez saisir votre ville" value="<?php echo isset($_SESSION['inputs']['ville'])? $_SESSION['inputs']['ville'] : ''; ?>" tabindex="10" /></p>  
		<p><label for="site">Site internet :</label><input type="url" name="site" placeholder="www." value="<?php echo isset($_SESSION['inputs']['site'])? $_SESSION['inputs']['site'] : ''; ?>" tabindex="11" /></p>
	</fieldset>
<div class="article__category">
<p class="small-link">- Veuillez faire de vraies phrases, sobres, descriptives et éviter tout language promotionnel.<br>- Les inscriptions qui contiennent des expressions telles que "la meilleure diététicienne", "perdez 5 kg par semaine", "le plus efficace", ... ne sont pas acceptées.
<br>- Votre présentation doit être suffisament fournie mais synthétique et ne fera pas mention de votre site personnel, ni de vos horaires. Les descriptifs du type "toutes infos sur mon site" sont à proscrire.
</div>	
	<fieldset><legend>Présentation des prestations proposées</legend>
		<p><label for="commentaire">Message :</label><textarea required id="commentaire" type="text" name="commentaire" tabindex="12" cols="40" rows="10" maxlength="840" style="overflow: hidden; word-wrap: break-word; resize: horizontal; height: 206px;"><?php echo isset($_SESSION['inputs']['commentaire'])? $_SESSION['inputs']['commentaire'] : ''; ?></textarea></p>
	</fieldset>

	<button type="submit" name="envoi">Envoyer</button>
</form>
</body>
</html>
<?php
	unset($_SESSION['inputs']);
	unset($_SESSION['success']);
	unset($_SESSION['errors']);


Pourriez-vous m'aider à comprendre pourquoi le message de confirmation ne s'affiche pas ?
Modifié par dafid5 (09 Oct 2016 - 08:20)
Quelqu'un aurait-il une idée sur le problème de ce formulaire ? une suggestion ?

merci pour votre aide
Bonjour,
Je viens de tester les deux pages en local (en changeant l'email de destination pour ne pas créer de problème),
tout fonctionne bien, le message "success" s'affiche bien après l'envoi du mail et le retour à la page du formulaire.

Test réalisé en local avec MAMP, et PHP 5.6.7

Peut-être un pb de version de PHP, afficher les erreurs serait utile,
et changer le test d'afficahge du message de succès en :

if ( (isset($_SESSION['success'])) and ($_SESSION['success'] == 1)) {
...
} 


Modifié par farang (15 Oct 2016 - 10:56)
farang a écrit :
Bonjour,
Je viens de tester les deux pages en local (en changeant l'email de destination pour ne pas créer de problème),
tout fonctionne bien, le message "success" s'affiche bien après l'envoi du mail et le retour à la page du formulaire.

Test réalisé en local avec MAMP, et PHP 5.6.7



Je te remercie, cela me décourage encore plus .....

en lien mon site vers un de mes formulaires .... qui a la même fonction d'envoi
lien
Une hypothèse, est-ce qu'un script peut empêcher le fonctionnement de ma requête de confirmation PHP ??
changer le test peut-être, comme indiqué ci dessus,
et lister toutes les variables de session en début de formulaire, après session_start(); pour voir si $_SESSION['success'] existe ?

la page contact.php ne permet pas de vérif on ne voit pas le code PHP bien entendu
farang a écrit :
Bonjour,
Je viens de tester les deux pages en local (en changeant l'email de destination pour ne pas créer de problème),
tout fonctionne bien, le message "success" s'affiche bien après l'envoi du mail et le retour à la page du formulaire.

Test réalisé en local avec MAMP, et PHP 5.6.7

Peut-être un pb de version de PHP, afficher les erreurs serait utile,
et changer le test d'afficahge du message de succès en :

if ( (isset($_SESSION['success'])) and ($_SESSION['success'] == 1)) {
...
} 



Bonsoir, j'ai insérer ce code sur la page contact, est-ce bien là que je devais le mettre ?

Si c'est le cas, cela ne fonctionne pas et lorsque je tente de me mettre sur la page contact, la page ne fonctionne pas.

De plus, une infos que je n'avais pas donné, je suis sous une version php 5.6



<?php
  session_start();
  if ((isset($_SESSION['success'])) and ($_SESSION['success'] == 1)) {
    echo "OK"
} 
  ?>
<!DOCTYPE html>