Formulaire en php

Résolu/Fermé
Gilexpat Messages postés 2 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 14 novembre 2007 - 14 nov. 2007 à 06:15
Gilexpat Messages postés 2 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 14 novembre 2007 - 14 nov. 2007 à 09:51
Bonjour, on m'a demande de faire un site simple et j'avais besoin d'un formulaire qui puisse envoye des image en surfant j'ai trouve sur le net ce qu'il me fallait( Envoi de formulaire sans javascript avec pièce jointe proposé par Pierre Pesty http://dev.ppan.net/ apres avoir mis ce script en application j'obtiens un message d'erreur de ce type (Parse error: syntax error, unexpected T_STRING in /home/ndhandfo/public_html/contact.php on line 84) Merci d'avance a tous pour votre aide a resoudre ce pb car etant debutant je patauge pas mal .

ci joint le detail de la page:
<?php
/*
Envoi de formulaire sans javascript avec pièce jointe
proposé par Pierre Pesty http://dev.ppan.net/
Variables à modifier selon paramètres et besoins :
*/
# le nom de page (et titre) change en fonction des événements
$pageName = "Contact form";
# en-tête de l'objet du mail (option: vide)
$entete = "[2ndhandforyou]";
# email du webmestre
$destinataire = "gil@2ndhandforyou.com";
# envoi en copie carbone (option: vide)
$email_cc = "";
# envoi en copie cachée (option: vide)
$email_bcc = "";
# emplacement de la feuille de styles
$cssform = "webdev_form.css";
# options de pièce jointe
# répertoire temporaire d'upload (option: vide ou $rep inconnu)
# NB. le répertoire "upload" doit être créé sur le serveur (en FTP)
$rep = "upload/"; // ne pas oublier le slash /
# taille max de la pièce jointe (multiple de 1024)
$taillemax = 204800;
# menu déroulant pour l'objet (option: vide)
# ajout d'option : 'n'=>'Choix 1', 'n+1'=>'Choix 2',
# la première ligne (optionnelle) impose un choix
$objets = array(
0 => 'Select',
1 => 'Buy',
2 => 'Sale',
3 => 'Other',
);
# choix du mode de confirmation d'envoi
# true ou 1 = redirection vers $pageconfirme
# false ou 0 = affichage du résumé du message
$redirection = false;
# si $redirection = true ou 1
# page vers laquelle rediriger l'internaute
$pageconfirme = "index.php";
/*
fin des modifications
*/

$erreur = false;
$message = false;
$focus = 0;

# l'utilisateur a validé le formulaire
if (!empty($_POST)) {

# vérification des champs requis (Nom, Objet, Message, Email ou Tel)
if (empty($_POST['Message'])) {
$erreur = "Please type a message";
$focus = 1; // modification couleur du champ de saisie concerné
}
if (empty($_POST['Objet'])) {
$erreur = "Please select an objet";
$focus = 2;
}
if (empty($_POST['Nom'])) {
$erreur = "Please enter your name";
$focus = 3;
}
# email et tel sont vides : pas glop !
if (empty($_POST['Email']) && empty($_POST['Tel'])) {
$erreur = "Please enter email & phone number";
$focus = 4;
}
# vérification de l'email non vide
elseif (!empty($_POST['Email'])) {
if(!preg_match('`^:alnum:([-_.]?:alnum:)*@:alnum:([-_.]?:alnum:)*\.([a-z]{2,4})$`',$_POST['Email'])) {
$erreur = "Invalid email";
$_POST['Email'] = "";
$focus = 5;
}
# vérification du téléphone (no spaces)
} elseif (!is_numeric(str_replace(" ","",$_POST['Tel']))) {
$erreur = "Invalid phone number";
$_POST['Tel'] = "";
$focus = 6;
}
# pièce jointe (nouveauté 12.10.2005)
$attach file = "upload/";
if(!$erreur && strlen($_FILES['File']['name'])) {
$file = $_FILES['File'];
# upload du fichier sur le serveur
$temp = $file['tmp_name'];
$name = $file['name'];
$size = $file['size'];
$destination = $rep.$name;
if($size > $sizemax)
$erreur = "File size $name > ".(int)($sizemax/1024)." Ko";
elseif(!@is_uploaded_file($temp))
$erreur = "Download file $name impossible";
elseif(!@move_uploaded_file($temp, $destination))
$erreur = "Problem transferring file $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;
}
}
/*
pour utiliser mime_content_type()
éditer le fichier php.ini et enlever le commentaire sur :
extension=php_mime_magic.dll
sous Windows ajouter ces 2 lignes :
mime_magic.debug = On
mime_magic.magicfile = "c:\chemin_du_fichier\magic.mime"
NB : fonction non activée chez OVH
*/
$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;
}
}

}
# pas d'erreur donc on continue
if(!$erreur) {

# traitement du tableau $_POST qui contient les paires name => value
$message_final = "";
foreach($_POST as $key => $value) {
# la deuxième partie du test passe les champs non désirés dans le mail
# pour passer d'autres champs les séparer par |
if (strlen($value) && !eregi("(MAX_FILE_SIZE|Objet)", $key))
$message_final .= "$key : ".strip_tags($value)."\n";
}
# formatage du message de confirmation affiché (option)
# conversion des sauts de ligne et des caractères spéciaux
$message = ereg_replace("(\n|\r|\r\n)", "<br>", htmlentities($message_final));
# si $objets est un tableau : Objet = select donc index = $_POST['Objet']
if(is_array($objets))
$objet = "$entete ".$objets[$_POST['Objet']];
# sinon Objet = input donc en français dans le texte !
else
$objet = "$entete ".$_POST['Objet'];
# si l'email n'est pas renseigné on le remplace par celui
# du destinataire, en ajoutant une alerte au message
$final_mail = $_POST['Email'];
if(empty($_POST['Email'])) {
$final_mail = $destinataire;
$message_final .= "\nNe pas répondre par mail : email absent.\n";
}
# en-têtes
$headers = "From: ".$final_mail;
if(strlen($email_cc))
$headers .= "\nCC: ".$email_cc;
if(strlen($email_bcc))
$headers .= "\nBCC: ".$email_bcc;
# hôte expéditeur
$message_final .= "Hôte : ".gethostbyaddr($_SERVER['REMOTE_ADDR']);
# si pièce jointe on ajoute l'en-tête spécifique avec séparateurs
if(strlen($piecejointe)) {
$boundary = "/-------".md5(uniqid(rand()))."-------/"; // séparateur
$headers .= "\nMIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=\"$boundary\"\n";
$message_final =
"This is a multi-part message in MIME format.\n--$boundary\n".
"Content-Type: text/plain; charset=ISO-8859-1\n".
"Content-Transfer-Encoding: 7bit\n\n".
"$message_final\n\n--$boundary\n".
"Content-Type: $mimetype; name=\"$name\"\n".
"Content-Transfer-Encoding: base64\n".
"Content-Disposition: attachment; filename=\"$name\"\n\n".
"$piecejointe\n--".
$boundary."--\n";
}

# envoi du mail
if (@mail($destinataire, stripslashes($objet), stripslashes($message_final), $headers)) {
@unlink($destination); // suppression de la pièce jointe
if($redirection) {
# NB : traiter $_GET['mailOK'] dans $pageconfirme
@header("Location: ".$pageconfirme."?mailOK=1");
exit;
}
$pageName = "The email has been sent !";
} else {
$pageName = "Fail !";
$erreur = "Fail to send ! Please try again ! thanks";
}

} else {

$pageName = "wrong entry !";

} // if(!$erreur)

} else {

$_POST = false;

} // if ($_POST)
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><? echo $pageName?></title>
<meta name="author" content="Pierre Pesty">
<meta name="generator" content="http://dev.ppan.net/">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="<? echo $cssform?>" type="text/css" rel="stylesheet">
</head>
<body>
<div>
<? if (!$_POST || $erreur) { ?>
<? if (!$erreur) { ?>
<h4>Contact</h4>
<p>Merci de renseigner les champs marqués d'un astérisque (email et/ou téléphone)</p>
<? } else { ?>
<p class="alerte"><? echo $erreur?></p>
<? } ?>
<hr>
<form name="formulaire" action="<? echo $_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">
<p>
<label for="nom">Nom</label><input id="nom" <? if($focus == 3) echo "class=\"focus\"";?> name="Nom" maxlength="30" value="<? echo htmlentities($_POST['Nom'], ENT_QUOTES)?>">
</p>
<p>
<label for="email">Email</label><input id="email" <? if($focus == 5 || $focus == 4) echo "class=\"focus\"";?> name="Email" maxlength="60" value="<? echo htmlentities($_POST['Email'], ENT_QUOTES)?>">
</p>
<p>
<label for="tel">Téléphone</label><input id="tel" <? if($focus == 6 || $focus == 4) echo "class=\"focus\"";?> name="Tel" maxlength="20" value="<? echo htmlentities($_POST['Tel'])?>">
</p>
<p>
<? if ($objets) { ?>
<label for="objet">Objet</label><select name='Objet' <? if($focus == 2) echo "class=\"focus\"";?> id="objet">
<?
foreach($objets as $key => $val) {
echo " <option value='$key'";
// vérifier si une des entrées a été choisie
if($key == $_POST['Objet']) echo " selected";
echo ">$val\n";
}
?>
</select>
<? } else { ?>
<label for="objet">Objet</label><input id="objet" <? if($focus == 2) echo "class=\"focus\"";?> name="Objet" maxlength="60" value="<? echo htmlentities($_POST['Objet'], ENT_QUOTES)?>">
<? } ?>
</p>
<p>
<label for="message">Message</label><textarea <? if($focus == 1) echo "class=\"focus\"";?> id="message" name="Message"><? echo htmlentities(stripslashes($_POST['Message']))?></textarea>
</p>
<? if (file_exists($rep)) { ?>
<p>
<label for="fichier">Pièce jointe</label><input type="hidden" name="MAX_FILE_SIZE" value="<? echo $taillemax?>"><input type="file" id="fichier" <? if($focus == 7) echo "class=\"focus\"";?> name="Fichier" size="35">
</p>
<p>
<label> </label>NB : taille du fichier inférieure à <?= (int)($taillemax/1024)?> Ko
</p>
<? } ?>
<p>
<label> </label><input id="submit" type="submit" value="Envoyer"> <a href="./">Accueil</a>
</p>
</form>

<? } elseif($message) { ?>

<h3>Votre message a été envoyé !</h3>
<pre>
<? echo wordwrap(stripslashes($message),100)?>
</pre>
<p><a href="./">Cliquez</a> pour revenir en page d'accueil.</p>

<? } ?>

</div>

</body>
</html>

2 réponses

sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
14 nov. 2007 à 07:47
alors la ligne 84 es tla suivante
 $attach file = "upload/";


ta variable avec un espace est bizarre

$attach file

remplace peut etre par
$attach_file
4
Gilexpat Messages postés 2 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 14 novembre 2007
14 nov. 2007 à 09:51
Bonjours Sfel effectivement ta solution est la bonne le formulaire passe impec par contre les images ne sont pas presentes lors de la reception du mail. je regardes comment remedier a cela et si jamais tu as une idee elle est la bienvenue en tous cas un grand merci pour avoir pris le temps de decortiquer le code.
Salut bonne journee et peut etre a bientot
Gilexpat au pays du sourire.
0