8768 sujets

Développement web côté serveur, CMS

bonjour

je souhaiterais a travers un formulaire html prendre les infos et les envoyer, la partie envoie d'info marche (les mails s'envoie avec le nom email message sujet) mais le fichier ne s'envoie jamais sans provoquer d'erreur

Je suis débutant en php d'ou le besoin de votre aide alors ne vous alarmer pas sur certaines erreur ^^

merci d'avance !

<form class="form" method="post" action="php/contactMail.php">
 
                    <p class="name">
                        <input type="text" name="nom" id="nom" placeholder="Nom Prenom" />
                    </p>
 
                    <p class="email">
                        <input type="text" name="mail" id="mail" placeholder="Adresse Mail" />
                    </p>
 
                    <p class="web">
                        <input type="text" name="objet" id="objet" placeholder="Sujet" />
                    </p>
 
                    <p class="text">
                        <textarea name="message" id="message" placeholder="Ecrivez votre message"></textarea>
                    </p>
 
                    <p class="fichier">
                        <input type="file" name="Fichier" value="">
                        <input type="hidden" name="MAX_FILE_SIZE" value="10000000">
                    </p>
 
                    <p class="submit">
                        <input type="submit" value="Envoyer" name="envoi" />
                    </p>
 
                </form>


<?php
/*
	********************************************************************************************
	CONFIGURATION
	********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'skydesigncorporation@gmail.com';
 
// copie ? (envoie une copie au visiteur)
$copie = 'oui'; // 'oui' ou 'non'
 
// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer.";
 
// Messages d'erreur du formulaire
$message_erreur_formulaire = "Vous devez d'abord envoyer le formulaire.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
 

# nom du répertoire à créer pour upload des pièces jointes
$rep = "../upload/";
# taille max de la pièce jointe
$taillemax = 10000000;
/*
	********************************************************************************************
	FIN DE LA CONFIGURATION
	********************************************************************************************
*/

// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
{
	// formulaire non envoyé
	echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{
	/*
	 * cette fonction sert à nettoyer et enregistrer un texte
	 */
	function Rec($text)
	{
		$text = htmlspecialchars(trim($text), ENT_QUOTES);
		if (1 === get_magic_quotes_gpc())
		{
			$text = stripslashes($text);
		}
 
		$text = nl2br($text);
		return $text;
	};
	/*
	 * Cette fonction sert à vérifier la syntaxe d'un email
	 */
	function IsEmail($email)
	{
		$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(? [decu]? [decu]?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(? [decu]?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
		return (($value === 0) || ($value === false)) ? false : true;
	}
 
	// formulaire envoyé, on récupère tous les champs.
	$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
	$email   = (isset($_POST['mail']))   ? Rec($_POST['mail'])   : '';
	$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
	$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
 
	// On va vérifier les variables et l'email ...
	$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
 
	if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
	{
        
        
		// les 4 variables sont remplies, on génère puis envoie le mail
		$headers  = 'MIME-Version: 1.0' . "\r\n";
		$headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .
				'Reply-To:'.$email. "\r\n" .
				'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
				'Content-Disposition: inline'. "\r\n" .
				'Content-Transfer-Encoding: 7bit'." \r\n" .
				'X-Mailer:PHP/'.phpversion();
	
		// envoyer une copie au visiteur ?
		if ($copie == 'oui')
		{
			$cible = $destinataire.';'.$email;
		}
		else
		{
			$cible = $destinataire;
		};
 
		// Remplacement de certains caractères spéciaux
		$message = str_replace("&#039;","'",$message);
		$message = str_replace("&#8217;","'",$message);
		$message = str_replace("&quot;",'"',$message);
		$message = str_replace('<br>','',$message);
		$message = str_replace('<br />','',$message);
		$message = str_replace("&lt;","<",$message);
		$message = str_replace("&gt;",">",$message);
		$message = str_replace("&amp;","&",$message);
        
         # pièce jointe (nouveauté 12.10.2005)
  $piecejointe = "";
    if(!$erreur && strlen($_FILES['Fichier']['name'])) {
      $fichier = $_FILES['Fichier'];
      # upload du fichier sur le serveur
      $temp = $fichier['tmp_name'];
      $name = $fichier['name'];
      $size = $fichier['size'];
      $destination = $rep.$name;
      if($size > $taillemax)
        $erreur = "Taille du fichier $name > ".(int)($taillemax/1024)." Ko";
        elseif(!@is_uploaded_file($temp))
          $erreur = "Téléchargement du fichier $name impossible";
            elseif(!@move_uploaded_file($temp, $destination))
              $erreur = "Problème de transfert du fichier $name";
                if($erreur) $focus = 7;
        else {
                  # lecture du type de fichier
              if(!function_exists('mime_content_type')) {
            function mime_content_type($fichier) {
              # ajouter autant de combinaisons que souhaitées
              $mime = array(
                    '.gif' => 'image/gif',
            '.jpg' => 'image/jpeg',
            '.psd' => 'image/x-xwd',
            '.png' => 'image/png',
            '.txt' => 'text/plain',
            '.doc' => 'application/msword',
            '.xls' => 'application/vnd.ms-excel',
              );
              # par défaut
              if(!$type = $mime[strrchr($fichier,'.')]) $type = "application/octet-stream";
                return $type;
            }
        }
        $mimetype = mime_content_type($destination);
        # lecture et conversion du fichier
          if($openf = @fopen($destination, "rb")) {
            $fichier = fread($openf, filesize($destination));
            @fclose($openf);
            # encodage norme RFC 2045
            $piecejointe = chunk_split(base64_encode($fichier));
            } else {
                  $erreur = "Problème de lecture du fichier $name";
              $focus = 7;
             }
        }
     
    }
 
		// Envoi du mail
		$num_emails = 0;
		$tmp = explode(';', $cible);
		foreach($tmp as $email_destinataire)
		{
			if (mail($email_destinataire, $objet, $message, $headers, $destination))
                @unlink($destination);
				$num_emails++;
		}
 
		if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
		{
			echo '<script>alert("Message envoyé ! Redirection au clic sur le OK ");</script>';
        echo '<script>document.location.href = "../Contact.php";</script>';
		}
		else
		{
			echo '<script>alert("Envoie du mail échoué, veuillez réessayer. Redirection au clic sur le OK ");</script>';
        echo '<script>document.location.href = "../Contact.php";</script>';
		};
	}
	else
	{
		// une des 3 variables (ou plus) est vide ...
		echo '<script>alert("Vérifiez que tous les champs soient bien remplis et que votre email soit sans erreur. Redirection au clic sur le OK ");</script>';
        echo '<script>document.location.href = "../Contact.php";</script>';
	};
};// fin du if (!isset($_POST['envoi']))
?>