8721 sujets

Développement web côté serveur, CMS

Bonjour,
au risque d'avoir l'air ridicule je poste tout de même mon problème. A force d'avoir le nez dedans je ne vois plus la solution qui doit être simple sur mon script PHP.
Voici le problème :
Lorsqu’on valide l’envoi du formulaire sans avoir fait d'erreur, une image de félicitations apparait (j'ai préféré pour une question de graphisme) en faisant disparaitre le formulaire.
J'ai mis en place le même système pour un message d'erreur, l'image s’affiche au dessus du formulaire et du coup la mise en page se décale et l’on se retrouve avec un ascenseur (dans la pratique c’est normal pour que l’internaute recommence son envoi) mais dans ce cas ça m’arrange pas au niveau graphique, je préfèrerai que le message d’erreur s’affiche mais fasse disparaitre le formulaire comme pour l'envoi sans erreur.

Si quelqu'un a une solution, merci d'avance; voici le code de ma page formulaire :

<?php
/* On s'occupe en 1er du traitement PHP */
$success = '0';
$error = '';
if(isset($_POST))
{
  if(isset($_POST['email']))
  {
    $email = trim($_POST['email']);
    if(empty($email))
    {
      $error = 'emptymail';
    }
	elseif(!check_email_address($email))
    {
      $error = 'incorrectemail';  
    }
    else
    {
      $sujet = "Inscription";
      $message = "Adresse email : ".$_POST['email']."\r\n";
      $message = "Message automatique confirmant l'inscription de l'adresse ci-dessus. " .trim(nl2br($_POST['message']))."\r\n";
      $entete = 'From: '.$email."\r\n".
            'Reply-To: '.$email."\r\n".
      'X-Mailer: PHP/'.phpversion();
      if (mail($email,$sujet,$message,$entete))
      {
        $success = 1;
      } else 
      {
        $error = 'emptymail';
      } 
    }
  }
}
else
{ 
  /* si le visiteur vient direcetement sur cette page, il est redirigé vers le formulaire */
  header('location:../inscription.html');
  exit;
}

/* Ici les fonctions dont j'ai besoin pour le traitement PHP */

/*
 * check_email_address($email) renvois true ou false si l'adresse email est valide ou pas.
 */
  
function check_email_address($email) 
{
    // First, we check that there's one @ symbol, and that the lengths are right
    if (!preg_match("/^[^@]{1,64}@[^@]{1,255}$/", $email)) 
    {
        // Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
        return false;
    }
    // Split it into sections to make life easier
    $email_array = explode("@", $email);
    $local_array = explode(".", $email_array[0]);
    for ($i = 0; $i < sizeof($local_array); $i++) {
        if (!preg_match("/^(([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-][A-Za-z0-9!#$%&'*+\/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $local_array[$i]))
        {
            return false;
        }
    }
    if (!preg_match("/^\[?[0-9\.]+\]?$/", $email_array[1])) 
    { // Check if domain is IP. If not, it should be valid domain name
        $domain_array = explode(".", $email_array[1]);
        if (sizeof($domain_array) < 2) {
            return false; // Not enough parts to domain
        }
        for ($i = 0; $i < sizeof($domain_array); $i++) {
            if (!preg_match("/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$/", $domain_array[$i]))
            {
                return false;
            }
        }
    }
    return true;
}

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>inscription</title>
<link href="css/texte.css" rel="stylesheet" type="text/css">
<style type="text/css">
body {  
  margin-left: 0px;
  margin-top: 0px;
  margin-right: 0px;
  margin-bottom: 0px;
}
</style>
</head>

<body leftmargin="0" topmargin="0">

<?php if($success == '1') : ?>
  <img src="mon url/imgvalidation.png" alt="" />
<?php else : ?>  
  <?php if($error == "emptymail") : ?>
  <img src="mon url/imgerreur01.png" alt="" />
  <?php elseif($error == "incorrectemail") : ?>
 <img src="mon url/imgerreur01.png" alt="" />
  <?php elseif($error == "emailfailed") : ?>
 <img src="mon url/imgerreur01.png" alt="" />
  <?php endif; ?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" style="background-image:url(../php/images/imginscription_01.png); background-repeat: no-repeat; ">
  <table width="391" height="145" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="391" height="20">&nbsp;</td>
    </tr>
    <tr>
      <td width="391" height="57" valign="top">
      <table width="391" height="57" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="295" valign="top">
   &nbsp;&nbsp;&nbsp;&nbsp; <input id="email" name="email" type="text" placeholder="Indiquez votre Email" size="38px" style="position:absolute"/></td>
      <td width="80" height="57">
      <input type="image"  onclick="submit"  src="../php/images/btinscription_a.png"></button></td>
    </tr>
  </table>
  </td>
    </tr>
  </table>
</form>
<?php endif; ?>

    
    </body>
</html>

Modifié par thiath (22 Sep 2014 - 20:01)