FORUM

forum / PHP / Traiter un formulaire email avec piece jointe

Vous n êtes pas connecté

Page :1 2

Traiter un formulaire email avec piece jointe

Auteurs Messages
filou80 Posté à 18h32 le 25 Mar 14

Membre inscrit le 25/03/2014
Messages : 120
Localisation : somme
Bonjour à tous

J'ai un formulaire de contact avec message sujet et pièce jointe, j'aurai aimer faire un fichier qui traite le formulaire, j'aurai aimer recevoir un mail en reprenant le formulaire et en stockant le fichier dans un répertoire chez mon hébergeur, le problème est que je sais pas comment faire.
Avec extension de fichier et taille que j'aurai pu personnaliser.

Si quelqu'un pourrai m'aider.

Merci par avance
said Posté à 20h11 le 25 Mar 14

Membre inscrit le 16/09/2012
Messages : 1513
Localisation :
Salut!
Pour l'envoie de l'email, tu peux utiliser la fonction mail. Tu peux voir ici http://www.samomoi.com/php/les-fonctions.php#3
Pour l'envoie du fichier dans le serveur, tu peux utiliser move_uploaded_file.Tu peux te référer de ce tuto 
http://www.samomoi.com/php/Envoyer-des-fichiers-sur-le-serveur.php

filou80 Posté à 21h28 le 25 Mar 14

Membre inscrit le 25/03/2014
Messages : 120
Localisation : somme
Merci pour ton aide, mais je comprend pas je peux envoyer n'importe quelle fichier même du Word en .doc



voila le script :


<?php
//Récupération des variables<br />
//Fichier nom du fichiers
$nomFichier  = $_FILES['fichier']['name'] ;
$tailleFichier  = $_FILES['fichier']['size'] ;
$nomTmp      = $_FILES['fichier']['tmp_name'] ;
$typeFichier   = $_FILES['fichier']['type'] ;
$error           = $_FILES['fichier']['error'] ;

$TO = "[email=ludoinformatique80@ludoinformatique80.fr]ludoinformatique80@ludoinformatique80.fr[/email]";
$h  = "From: " . $TO;
$message = "";
while (list($key, $val) = each($HTTP_POST_VARS)) {
  $message .= "$key : $val
";
}

mail($TO, $nomFichier, $message, $h);
?>

<?php //nom du fichier
if ($_FILES["fichier"]["name"]=="")
{
 echo "<b>Le message à bien été envoyer.</b>";
 
 
 exit();
}
else
{
 //verification du poids du fichier
 if ($_FILES["fichier"]["size"]>1000000)
 {
  echo "<b>veuillez selectionner un fichier moins gros</b>";
  exit();
 } 
?>

<?php
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );
//1. strrchr renvoie l'extension avec le point (« . »).
//2. substr(chaine,1) ignore le premier caractère de chaine.
//3. strtolower met l'extension en minuscules.
$extension_upload = strtolower(  substr(  strrchr($_FILES['icone']['name'], '.')  ,1)  );
if ( in_array($extension_upload,$extensions_valides) ) echo "Extension correcte";

$chemin = "./upload/" ;
 
  if (copy($nomTmp,$chemin.$nomFichier))
  echo("<br>Le téléchargement à réussi") ;
  
  else
  echo("<br>Le téléchargement à échoué") ;
    
  }//
?>



filou80 Posté à 21h38 le 25 Mar 14

Membre inscrit le 25/03/2014
Messages : 120
Localisation : somme
De même je reçoit le mail, avec les données du formulaire (nom prenom etc..), même si l'extension et la taille n'est pas bonne, par contre le fichier n'est pas transférer dans mon répertoire chez mon hébergeur.
J'aurai aimer bloquer l'envoi du mail quand l'extension et la taille ne correspond.
Comment faire ?

Merci par avance de votre aide et merci au forum 
said Posté à 00h15 le 26 Mar 14

Membre inscrit le 16/09/2012
Messages : 1513
Localisation :
Le code a des mineures erreurs. Et même s'il était propre, ça n'aurait dû pas fonctionner comme tu le veux car il est mal arrangé.
Est ce que je peux voir le code du formulaire ?
filou80 Posté à 07h49 le 26 Mar 14

Membre inscrit le 25/03/2014
Messages : 120
Localisation : somme
Bonjour

Voici le script de mon formulaire :



<?php require_once('Connections/ludoinformatique.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
  session_start();
}

// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
  $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
  //to fully log out a visitor we need to clear the session varialbles
  $_SESSION['MM_Username'] = NULL;
  $_SESSION['MM_UserGroup'] = NULL;
  $_SESSION['PrevUrl'] = NULL;
  unset($_SESSION['MM_Username']);
  unset($_SESSION['MM_UserGroup']);
  unset($_SESSION['PrevUrl']);
 
  $logoutGoTo = "abientot.php";
  if ($logoutGoTo) {
    header("Location: $logoutGoTo");
    exit;
  }
}
?>
<?php
if (!isset($_SESSION)) {
  session_start();
}
$MM_authorizedUsers = "";
$MM_donotCheckaccess = "true";

// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
  // For security, start by assuming the visitor is NOT authorized.
  $isValid = False;

  // When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
  // Therefore, we know that a user is NOT logged in if that Session variable is blank.
  if (!empty($UserName)) {
    // Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
    // Parse the strings into arrays.
    $arrUsers = Explode(",", $strUsers);
    $arrGroups = Explode(",", $strGroups);
    if (in_array($UserName, $arrUsers)) {
      $isValid = true;
    }
    // Or, you may restrict access to only certain users based on their username.
    if (in_array($UserGroup, $arrGroups)) {
      $isValid = true;
    }
    if (($strUsers == "") && true) {
      $isValid = true;
    }
  }
  return $isValid;
}

$MM_restrictGoTo = "accesrefuser.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {  
  $MM_qsChar = "?";
  $MM_referrer = $_SERVER['PHP_SELF'];
  if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
  if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
  $MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
  $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
  header("Location: ". $MM_restrictGoTo);
  exit;
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;   
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_ludoinformatique, $ludoinformatique);
$query_Recordset1 = "SELECT * FROM inscription";
$Recordset1 = mysql_query($query_Recordset1, $ludoinformatique) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<!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" />
<meta name="description" content="Site personnel d'echange entre amis et divers,Crack wii">
<meta name="keywords" lang="fr" content="Internet, Informatique, Telephone, Site internet, Crack wii, et autre">
<META HTTP-EQUIV="Content-Language" content="fr">
<meta name="reply-to" content="[email=ludoinformatique80@ludoinformatique80.fr]ludoinformatique80@ludoinformatique80.fr[/email]">
<meta name="category" content="Internet">
<meta name="robots" content="index, follow">
<meta name="distribution" content="global">
<meta name="revisit-after" content="1 days">
<meta name="author" lang="fr" content="Ludo">
<meta name="copyright" content="">
<meta name="generator" content="Dreamweaver">
<meta name="identifier-url" content="http://ludoinformatique80.fr">
<meta name="expires" content="never">
<meta name="Date-Creation-ddmmyyyy" content="26112013">
<meta name="Date-Revision-ddmmyyyy" content="26112013">

<link rel="shortcut icon" href="favicon.ico" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" type="image/x-icon" href="http://ludoinformatique80.fr/images/favicon.ico" />
<link rel="icon" type="image/png" href=http://ludoinformatique80.fr/images/favicon.png" />
<link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico" />
<link rel="icon" type="image/png" href="/images/favicon.png" />
<link href='http://ludoinformatique80.fr/images/favicon.ico' rel='icon' type='image/x-icon'/>
<title>Contact</title>
<style type="text/css">
body {
 margin-left: 0px;
 margin-top: 0px;
 margin-right: 0px;
 margin-bottom: 0px;
 text-align: center;
 background-color: #9CF;
 font-size: 12px;
 font-family: "Times New Roman";
}
.texte {
 font-family: "Lucida Handwriting";
 font-size: 18px;
}
.corpsdetexte {
 font-family: "Lucida Handwriting";
 font-size: 12px;
}
</style>



<style type="text/css">
#apDiv1 {
 position:absolute;
 width:208px;
 height:106px;
 z-index:1;
 left: 1034px;
 top: 24px;
 background-color: #9CF;
}
</style>
<script src="SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" />
</head>



<body>
<table width="100%" border="0">
  <tr>
    <td align="center"><img src="images/ludoinformatiquebanniere.png" width="750" height="100" align="middle" /></td>
  </tr>
</table>
<table width="70%" border="0">
  <tr>
    <td width="17%"><?php $toc= $_SESSION['MM_Username'];
$sql = mysql_query("SELECT login FROM inscription WHERE mail='$toc'" );
$data = mysql_fetch_array($sql); 
echo '<p>Bonjour  '.$data['login'].' </p>';?></td>
    <td width="17%">&nbsp;</td>
    <td width="17%">&nbsp;</td>
    <td width="17%">&nbsp;</td>
    <td width="16%">&nbsp;</td>
    <td width="16%" align="right"><a href="<?php echo $logoutAction ?>">Déconnecter</a></td>
  </tr>
</table>
<table width="100%" border="0">
  <tr>
    <td align="center" bgcolor="#0F0C94"><ul id="MenuBar1" class="MenuBarHorizontal">
      <li><a href="connecter.php">Accueil</a></li>
      <li><a href="#">El&eacute;ment</a></li>
      <li><a href="#">Script</a></li>
      <li><a href="wordpress/index.php">blogue</a></li>
      <li><a class="MenuBarItemSubmenu" href="#">Profil</a>
        <ul>
          <li><a href="#">Modifier</a></li>
          <li><a href="#">Supprimer</a></li>
          </ul>
        </li>
      <li><a href="contact.php">Contact</a></li>
    </ul></td>
</tr>
  <tr> </tr>
</table>
<table width="70%" border="0" align="center">
  <tr>
    <td align="center"><p>&nbsp;</p>
    <p><span class="titre"><span class="texte">Formulaire de contact</span></span></p></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><form action="test.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
      <table width="100%" border="0" align="center">
        <tr>
          <td width="12%">&nbsp;</td>
          <td width="88%" align="left"><label for="nom"></label>
            <input type="hidden"  name="nom" type="text" id="nom" value="<?php $toc= $_SESSION['MM_Username'];
$sql = mysql_query("SELECT nom FROM inscription WHERE mail='$toc'" );
$data = mysql_fetch_array($sql); 
echo '  '.$data['nom'].' ';?>" /></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td align="left"><input type="hidden"  name="prenom" type="text" id="nom" value="<?php $toc= $_SESSION['MM_Username'];
$sql = mysql_query("SELECT prenom FROM inscription WHERE mail='$toc'" );
$data = mysql_fetch_array($sql); 
echo '  '.$data['prenom'].' ';?>" /></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td align="left"><input type="hidden"  name="mail" type="text" id="nom" value="<?php $toc= $_SESSION['MM_Username'];
$sql = mysql_query("SELECT mail FROM inscription WHERE mail='$toc'" );
$data = mysql_fetch_array($sql); 
echo '  '.$data['mail'].' ';?>" /></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td align="left"><input type="hidden"  name="login" type="text" id="nom" value="<?php $toc= $_SESSION['MM_Username'];
$sql = mysql_query("SELECT login FROM inscription WHERE mail='$toc'" );
$data = mysql_fetch_array($sql); 
echo '  '.$data['login'].' ';?>" /></td>
        </tr>
        <tr>
          <td align="left" class="corpsdetexte">Sujet :</td>
          <td align="left"><label for="sujet"></label>
            <input name="sujet" type="text" id="sujet" onfocus="if(this.value==this.defaultValue)value=''" onblur="if(this.value=='')value=this.defaultValue;" value="Sujet du message" size="45" /></td>
        </tr>
        <tr>
          <td align="left" valign="top" class="corpsdetexte"><span class="corpsdetexte">Message :</span></td>
          <td align="left"><label for="message"></label>
            <textarea name="message" id="message" cols="45" rows="10"></textarea></td>
        </tr>
        <tr>
          <td align="left"><span class="corpsdetexte">Fichier :</span></td>
          <td align="left"><label for="fichier"></label>
            <input name="fichier" type="file" id="fichier" size="45" /></td>
        </tr>
        <tr>
          <td class="corpsdetexte">&nbsp;</td>
          <td align="left"><p>
            <label for="code"></label>
          </p></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td align="left"><input type="submit" name="button" id="button" value="Envoyer" />
            <input type="reset" name="button2" id="button2" value="Réinitialiser" /></td>
        </tr>
      </table>
    </form></td>
  </tr>
</table>
<table width="100%" border="0">
  <tr>
    <td align="center">&nbsp;</td>
  </tr>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<script type="text/javascript">
var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
</script>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>





filou80 Posté à 09h12 le 26 Mar 14

Membre inscrit le 25/03/2014
Messages : 120
Localisation : somme
Bonjour

Quand vous dite mal arrangé c'est a dire quoi, pourriez vous m'aider s'il vous plait.

bonne journée et bon courage
said Posté à 13h22 le 26 Mar 14

Membre inscrit le 16/09/2012
Messages : 1513
Localisation :
Je t'ai demandé seulement  ton formulaire afin de voir s'il peut avoir un mariage avec ton code php et le formulaire. Cela me permettrait de voir comment apporter une réponse à ta question.
Mais avec tout le code que tu viens de poster, je dois avouer que j'ai du mal à te suivre. Je ne peux pas nager dans ce code à la recherche de ton formulaire...
filou80 Posté à 15h14 le 26 Mar 14

Membre inscrit le 25/03/2014
Messages : 120
Localisation : somme
Oups désolé voila le script du formulaire :



<form action="test.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
      <table width="100%" border="0" align="center">
        <tr>
          <td width="12%">&nbsp;</td>
          <td width="88%" align="left"><label for="nom"></label>
            <input type="hidden"  name="nom" type="text" id="nom" value="<?php $toc= $_SESSION['MM_Username'];
$sql = mysql_query("SELECT nom FROM inscription WHERE mail='$toc'" );
$data = mysql_fetch_array($sql); 
echo '  '.$data['nom'].' ';?>" /></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td align="left"><input type="hidden"  name="prenom" type="text" id="nom" value="<?php $toc= $_SESSION['MM_Username'];
$sql = mysql_query("SELECT prenom FROM inscription WHERE mail='$toc'" );
$data = mysql_fetch_array($sql); 
echo '  '.$data['prenom'].' ';?>" /></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td align="left"><input type="hidden"  name="mail" type="text" id="nom" value="<?php $toc= $_SESSION['MM_Username'];
$sql = mysql_query("SELECT mail FROM inscription WHERE mail='$toc'" );
$data = mysql_fetch_array($sql); 
echo '  '.$data['mail'].' ';?>" /></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td align="left"><input type="hidden"  name="login" type="text" id="nom" value="<?php $toc= $_SESSION['MM_Username'];
$sql = mysql_query("SELECT login FROM inscription WHERE mail='$toc'" );
$data = mysql_fetch_array($sql); 
echo '  '.$data['login'].' ';?>" /></td>
        </tr>
        <tr>
          <td align="left" class="corpsdetexte">Sujet :</td>
          <td align="left"><label for="sujet"></label>
            <input name="sujet" type="text" id="sujet" onfocus="if(this.value==this.defaultValue)value=''" onblur="if(this.value=='')value=this.defaultValue;" value="Sujet du message" size="45" /></td>
        </tr>
        <tr>
          <td align="left" valign="top" class="corpsdetexte"><span class="corpsdetexte">Message :</span></td>
          <td align="left"><label for="message"></label>
            <textarea name="message" id="message" cols="45" rows="10"></textarea></td>
        </tr>
        <tr>
          <td align="left"><span class="corpsdetexte">Fichier :</span></td>
          <td align="left"><label for="fichier"></label>
            <input name="fichier" type="file" id="fichier" size="45" /></td>
        </tr>
        <tr>
          <td class="corpsdetexte">&nbsp;</td>
          <td align="left"><p>
            <label for="code"></label>
            <input name="code" type="text" id="code" onfocus="if(this.value==this.defaultValue)value=''" onblur="if(this.value=='')value=this.defaultValue;" value="Combien fait douze plus un en nombre" size="45" />
          </p></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td align="left"><input type="submit" name="button" id="button" value="Envoyer" />
            <input type="reset" name="button2" id="button2" value="Réinitialiser" /></td>
        </tr>
      </table>
    </form>


filou80 Posté à 15h18 le 26 Mar 14

Membre inscrit le 25/03/2014
Messages : 120
Localisation : somme
La sa fonctionne mais je pas les extensions je peux enoyé des .doc ou.xls ou autre par contre la taille fonctionne.
LA j'aurai aimer savoir comment vérifier les extensions car plus haut tu as le script qui envoie le mail.
Et savoir comment faire pour ne pas recevoir le mail quand le fichier n'est pas envoyé car quand le fichier est trop gros j'ai bien un message qui me dit fichier trop gros mais je reçoit quand même le mail.
Comment faire avec tous sa .
Je suis débutant  novice

Merci par avance
said Posté à 18h17 le 26 Mar 14

Membre inscrit le 16/09/2012
Messages : 1513
Localisation :
Si ça marche, donc c'est bien. J'ai pas besoin donc de ton formulaire.
Suis ce logique:
On vérifie toutes données pour l'email.
On vérifie les données pour l'envoie du fichier
Si tout est ok, on envoie tous (l'email et le fichier).

Ce que je veux essayer te dire, ce que les deux envoies doit se faire en même et si tout est ok.

Dis moi le premier code que tu as envoyé fait parti de ton code ?
Il m'est difficile de te suivre.
filou80 Posté à 18h34 le 26 Mar 14

Membre inscrit le 25/03/2014
Messages : 120
Localisation : somme
Bonsoir

Le premier code est le fichier qui traite le formulaire a envoyé.
Dedans il y a un problème car je peux envoyé n'importe qu'elle extension.
Est je sais pas comment faire ?
Pourriez vous m'aider ?

cordialement
said Posté à 21h58 le 26 Mar 14

Membre inscrit le 16/09/2012
Messages : 1513
Localisation :
Juste en haut de cette ligne 
mail($TO, $nomFichier, $message, $h);
Ajoutes ce code:

$nomTmp      = $_FILES['fichier']['tmp_name'] ;
$typeFichier = $_FILES['fichier']['type'] ;
$chemin = "./upload/" ;
$nomFichier = $_FILES['fichier']['name'] ;
$maxsize = 1000000; //on définit le poid maximal de l'image
$error = $_FILES['fichier']['error'] ;
$chemin = "./upload/" ;
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );// on definit un tableau contenant les extensions voulu
$tailleFichier = $_FILES['fichier']['size'] ;
if ($error > 0)
{
exit('Veuillez reeayer');
}
if ( $tailleFichier > $maxsize) // si la taille est superieur la taille définit
{
exit('<b>veuillez selectionner un fichier moins gros</b>');
}
$extension_upload = strtolower(substr(strrchr($nomFichier, '.') ,1));
if (!in_array($extension_upload,$extensions_valides) )
{
exit('Extension du fichier incorrecte');
}
copy($nomTmp,$chemin.$nomFichier);




Et effaces tous le code que tu avais mis apropos de l'ajout du fichier.


filou80 Posté à 22h14 le 26 Mar 14

Membre inscrit le 25/03/2014
Messages : 120
Localisation : somme
Bonsoir

Merci pour votre réponse, si je veux modifier les fichiers que je veux recevoir, j'ai qu'a modifier la ligne de code la :



$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );// on definit un tableau contenant les extensions voulu

auriez vous une liste avec les format extension (ou mine).

merci encore merci
said Posté à 22h18 le 26 Mar 14

Membre inscrit le 16/09/2012
Messages : 1513
Localisation :
Oui c'est exactement ça. 
Samomoi

Page : 1 2