Envoi de piece jointe dans formulaire

Fermé
JEROME0912 Messages postés 5 Date d'inscription lundi 19 mai 2008 Statut Membre Dernière intervention 22 mai 2008 - 21 mai 2008 à 15:07
bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 - 23 mai 2008 à 10:49
Bonjour,

je viens de faire un nouveau formulaire de devis avec l'enboi de picèce jointe, mais je pense qu'il doit y avoir un soucis.

Voici le code erreur lorsque je test l'envoi :

Warning: move_uploaded_file(./httpdocs/images_up/lecteur_disquette.gif) [function.move-uploaded-file]: failed to open stream: No such file or directory in /var/www/vhosts/ediclic.fr/httpdocs/nadform2.php on line 106

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpOyISbx' to './httpdocs/images_up/lecteur_disquette.gif' in /var/www/vhosts/ediclic.fr/httpdocs/nadform2.php on line 106
L'image a été uploadée avec succès

Voici le codage coter PHP si cela peut vous aidez à trouver une solution.

<html>
<head>

</head>
<body>
<?
function check_mail ($champ9) {
if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $champ9)) ||
(preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$champ9)) ) {
$host = explode('@', $champ9);
if(checkdnsrr($host[1].'.', 'MX') ) return true;
if(checkdnsrr($host[1].'.', 'A') ) return true;
if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
}
return false;
}
$MailTo = "Service-client@ediclic.fr";
$MailCc = "gg@ediclic.fr";
$MailSubject = "Devis PAO site";
$MailHeader = "From: Service-client@ediclic.fr";
$min_size="3";
$max_size="5000";
$Envoi = 1;
$MailBody .="Question 1 : ";

$items = 4; //initialisation du nombre d'items possibles

for ($i = 1; $i <= $items; $i++) { //boucle sur le nombre d'items

$MailBody .= "$champ1[$i], "; //stockage des items choisis dans la variable MailBody
}
if ($champ2 == "0"){
echo("Vous avez oublié de choisir une valeur dans le menu déroulant.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Choix du produit : $champ2\n";
}
if ($champ3 == "0"){
echo("Vous avez oublié de choisir une valeur dans le menu déroulant Recto.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Choix du Recto : $champ3\n";
}
if ($champ4 == "0"){
echo("Vous avez oublié de choisir une valeur dans le menu déroulant Verso.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Choix du Verso : $champ4\n";
}
if ($champ5 == "0"){
echo("Vous avez oublié de choisir une valeur dans le menu déroulant Pelliculage.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Pelliculage : $champ5\n";
}
if ($champ6 == ""){
echo("Vous avez oublié le Commentaire.<br>");
$Envoi = 0;
}
elseif (strlen($champ6) <= $min_size) {
echo("Votre message est trop petit.<br>");
$Envoi = 0;
}
elseif (strlen($champ6) >= $max_size) {
echo("Votre message est trop long.");
$Envoi = 0;
}
else {
$affich_champ6 = htmlentities($champ6); // affiche le code HTML à l'état brut.
$affich_champ6 = StripSlashes($affich_champ6); // enlève, au texte affiché, les \ aux apostrophes, exemple : l\'habitude
$envoi_champ6 = StripSlashes($champ6); // enlève les \ aux apostrophes, exemple : l\'habitude
$MailBody .= "Votre texte : $envoi_champ6\n";
}
if (isset($_FILES['fichier']))
{
//$_FILES existe on récupère les infos qui nous intéressent
$fichier=$_FILES['fichier']['name'];//nom réel de l'image
$size=$_FILES['fichier']['size']; //poids de l'image en octets
$tmp=$_FILES['fichier']['tmp_name'];//nom temporaire de l'image (sur le serveur)
$type=$_FILES['fichier']['type'];//type de l'image
//On récupère la taille de l'image
list($width,$height)=getimagesize($tmp);
if (is_uploaded_file($tmp)) //permet de vérifier si le fichier a été uplodé via http
{
//vérification du type de l'img, son poids et sa taille
if ($type=="image/gif" && $size<=20500 && $width<=100 && $height<=100 )
{
// type mime gif, poids < à 20500 octets soit environ 20Ko, largeur = hauteur = 100px
//Pour supprimer les espaces dans les noms de fichiers car celà entraîne une erreur lorsque vous voulez l'afficher
$fichier = preg_replace ("` `i","",$fichier);//ligne facultative :)
//On vérifie s'il existe une image qui a le même nom dans le répertoire
if (file_exists('./images_up/'.$fichier))
{
//Le fichier existe on rajoute dans son nom le timestamp du moment pour le différencier de la première (comme cela on est sûr de ne pas avoir 2 images avec le même nom :) )
$nom_final= preg_replace("`.gif`is",date("U").".gif",$fichier);
}
else {
$nom_final=$fichier; //l'image n'existe pas on garde le même nom
}
//on déplace l'image dans le répertoire final
move_uploaded_file($tmp,'./httpdocs/images_up/'.$nom_final);
//Message indiquant que tout s'est bien passé
echo "L'image a été uploadée avec succès<br/>";
}
else {
//Le type mime, ou la taille ou le poids est incorrect
echo 'Votre image a été rejetée (poids, taille ou type incorrect)';
}
}
}
//Pour tester si l'image est bien à sa place
echo '<img src="./httpdocs/images_up/'.$nom_final.'" border="0" />';
echo '<br/>';
echo '<a href="javascript:history.back();">Retour</a>';

if ($champ8 == ""){ //nom du champ1
echo("Vous n'avez pas complété le champ 8.<br>"); //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 1; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "Nom ou Raison Sociale : $champ8\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($champ9 == "") {
echo (" Vous n'avez pas complété le champ 9.<br>");
$Envoi = 0;
}
else {
if (check_mail ($champ9)) {
$MailBody .= "Adresse Email : $champ9\n";
}
else {
echo ("l'adresse Email du champ 9 n'est pas valide<br>");
$Envoi = 0;
}
}
if ($champ10 == ""){
echo("Vous n'avez pas complété le champ 10<br>");
$Envoi = 0;
}
else {
$MailBody .= "Adresse complète : $champ10\n";
}
if ($champ11 == ""){
echo("Vous n'avez pas complété le champ 11.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Télephone : $champ11\n";
}
if ($Envoi == 0) { //vérification que la variable envoi est bien à 1
echo("<p><a href=\"Javascript:history.go(-1)\"><center><strong>RETOUR</strong></center></a></p>");
//Pas d'envoi du message et retour au formulaire
}
//Envoi du message
if ($Envoi == 1) { //vérification que la variable envoi est bien à 1
echo("<p><strong>type de réalisation : <font color=\"#0000FF\">$champ1</font>\n");
echo("<br>Choix du produit : <font color=\"#0000FF\">$champ2</font>\n");
echo("<br>Choix du Recto: <font color=\"#0000FF\">$champ3</font>\n");
echo("<br>Choix du Verso : <font color=\"#0000FF\">$champ4</font>\n");
echo("<br>Pelliculage: <font color=\"#0000FF\">$champ5</font>\n");
echo("<br>Votre texte : <font color=\"#0000FF\">$affich_champ6</font>\n");
echo("<br>Nom ou Raison Sociale : <font color=\"#0000FF\">$champ7</font>\n");
echo("<br>Adresse Email : <font color=\"#0000FF\">$champ8</font>\n");
echo("<br>Adresse complete : <font color=\"#0000FF\">$champ9</font>\n");
echo("<br>Téléphone : <font color=\"#0000FF\">$champ10</font>\n");
echo("<p> </p>");
mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message
//mail($MailCc, $MailSubject, $MailBody, $MailHeader); //envoi du communiqué (enlever // pour le rendre opérationnel
echo("<p>Votre message a bien été envoyé.<br>Merci de vos commentaires.");
echo("<p> </p><p> </p><p align=\"center\"><a href=\"index.php\">Retour</strong></a></p>"); //affichage d'un message de confirmation.
}
?>
</body>
</html>


Merci de votre aide

2 réponses

bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
21 mai 2008 à 18:02
Salut,
je crois que j'ai eu le même genre de problème avec le move_uploaded_file et j'ai utilisé la commande "copy" qui utilise la même syntaxe avec les mêmes arguments. Dans ton cas, ça donnerait :
copy($tmp,'./httpdocs/images_up/'.$nom_final);

Vois ce que ça donne, j'espère que ça marchera
@+
0
JEROME0912 Messages postés 5 Date d'inscription lundi 19 mai 2008 Statut Membre Dernière intervention 22 mai 2008
22 mai 2008 à 15:57
Salut BBAR,

je viens de faire la modification comme tu l'avais dit.

Voici ce que j'obtiens :

Warning: copy(./httpdocs/images_up/lecteur_disquette.gif) [function.copy]: failed to open stream: No such file or directory in /var/www/vhosts/ediclic.fr/httpdocs/nadform2.php on line 106
L'image a �t� upload�e avec succ�s


je ne vois vraiment pas pourquoi cela ne fonctionne pas, si vous avez une autre idée...
0
bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
23 mai 2008 à 10:49
salut,
peux-tu m'éclaircir un point, s'il te plaît : entre la ligne 96 et la ligne 106, tu fais d'abord un test d'existantce de l'image (répertoire ./images_up/) et ensuite tu déplaces l'image dans un autre répertoire ( ./httpdocs/images_up/).
D'après le message d'erreur, le chemin donné ligne 106 n'est pas le bon.
@+
0