Probleme avec formulaire php
neya
-
Azraka Messages postés 252 Date d'inscription Statut Membre Dernière intervention -
Azraka Messages postés 252 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je me demandais si il fallais pas actionner qlq chose chez mon hebergeur (hosteur.com)pour pouvoir faire fonctionner un formulaire avec pieces jointe je vous envois mes code
pages html:
<center>
<form name="FormName" action="formmail.php" method="post" enctype="multipart/form-data" name="form">
Expéditeur <input type="text" name="email" size="35"> <br>
Sujet <input type="text" name="subject" size="35"> <br>
Message <textarea rows="12" name="msg" cols="60"></textarea> <br>
Fichier joint <input type="hidden" name="MAX_FILE_SIZE" value="100000"><input name="NomFichier" type="file" size="16">
Priorité <select name="priority" size="1">
<option value="1">Urgent
<option value="2">Haute
<option value="3">Moyenne
<option value="4">Basse
<option value="5">Très basse
</select> <br>
<input type="submit" value="Envoyer">
</form>
</center>
et voici ma page formmail.php:
$dest="meuniercreation@hotmail.com";
$reponse=StripSlashes("Formulaire envoyé avec succès");
class Mail
{
var $sendto= array();
var $from, $msubject;
var $acc= array();
var $abcc= array();
var $aattach= array();
var $priorities= array( '1 (Highest)', '2 (High)', '3 (Normal)', '4 (Low)', '5 (Lowest)' );
function Mail()
{
$this->autoCheck( true );
}
function autoCheck( $bool )
{
if( $bool )
$this->checkAddress = true;
else
$this->checkAddress = false;
}
function Subject( $subject )
{
$this->msubject = strtr( $subject, "\r\n" , " " );
}
function From( $from )
{
if( ! is_string($from) ) {
echo "Class Mail: error, From is not a string";
exit;
}
$this->from= $from;
}
function To( $to )
{
if( is_array( $to ) )
$this->sendto= $to;
else
$this->sendto[] = $to;
if( $this->checkAddress == true )
$this->CheckAdresses( $this->sendto );
}
function Cc( $cc )
{
if( is_array($cc) )
$this->acc= $cc;
else
$this->acc[]= $cc;
if( $this->checkAddress == true )
$this->CheckAdresses( $this->acc );
}
function Bcc( $bcc )
{
if( is_array($bcc) ) {
$this->abcc = $bcc;
} else {
$this->abcc[]= $bcc;
}
if( $this->checkAddress == true )
$this->CheckAdresses( $this->abcc );
}
function Body( $body )
{
$this->body= $body;
}
function Send()
{
$this->_build_headers();
if( sizeof( $this->aattach > 0 ) ) {
$this->_build_attachement();
$body = $this->fullBody . $this->attachment;
}
for( $i=0; $i< sizeof($this->sendto); $i++ ) {
$res = mail($this->sendto[$i], $this->msubject,$body, $this->headers);
}
}
function Organization( $org )
{
if( trim( $org != "" ) )
$this->organization= $org;
}
function Priority( $priority )
{
if( ! intval( $priority ) )
return false;
if( ! isset( $this->priorities[$priority-1]) )
return false;
$this->priority= $this->priorities[$priority-1];
return true;
}
function Attach( $filename, $filetype='application/x-unknown-content-type', $disposition = "inline" )
{
$this->aattach[] = $filename;
$this->actype[] = $filetype;
$this->adispo[] = $disposition;
}
function Get()
{
$this->_build_headers();
if( sizeof( $this->aattach > 0 ) ) {
$this->_build_attachement();
$this->body= $this->body . $this->attachment;
}
$mail = $this->headers;
$mail .= "\n$this->body";
return $mail;
}
function ValidEmail($address)
{
if( ereg( ".*<(.+)>", $address, $regs ) ) {
$address = $regs[1];
}
if(ereg( "^[^@ ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]|net|com|gov|mil|org|edu|int)$",$address) )
return true;
else
return false;
}
function CheckAdresses( $aad )
{
for($i=0;$i< sizeof( $aad); $i++ ) {
if( ! $this->ValidEmail( $aad[$i]) ) {
echo "Class Mail, method Mail : invalid address $aad[$i]";
exit;
}
}
}
function _build_headers()
{
$this->headers= "From: $this->from\n";
$this->to= implode( ", ", $this->sendto );
if( count($this->acc) > 0 ) {
$this->cc= implode( ", ", $this->acc );
$this->headers .= "CC: $this->cc\n";
}
if( count($this->abcc) > 0 ) {
$this->bcc= implode( ", ", $this->abcc );
$this->headers .= "BCC: $this->bcc\n";
}
if( $this->organization != "" )
$this->headers .= "Organization: $this->organization\n";
if( $this->priority != "" )
$this->headers .= "X-Priority: $this->priority\n";
}
function _build_attachement()
{
$this->boundary= "------------" . md5( uniqid("myboundary") );
$this->headers .= "MIME-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"$this->boundary\"\n\n";
$this->fullBody = "This is a multi-part message in MIME format.\n--$this->boundary\nContent-Type: text/plain; charset=us-ascii\nContent-Transfer-Encoding: 7bit\n\n" . $this->body ."\n";
$sep= chr(13) . chr(10);
$ata= array();
$k=0;
for( $i=0; $i < sizeof( $this->aattach); $i++ ) {
$filename = $this->aattach[$i];
$basename = basename($filename);
$ctype = $this->actype[$i];
$disposition = $this->adispo[$i];
if( ! file_exists( $filename) ) {
echo "Class Mail, method attach : file $filename can't be found"; exit;
}
$subhdr= "--$this->boundary\nContent-type: $ctype;\n name=\"$basename\"\nContent-Transfer-Encoding: base64\nContent-Disposition: $disposition;\n filename=\"$basename\"\n";
$ata[$k++] = $subhdr;
$linesz= filesize( $filename)+1;
$fp= fopen( $filename, 'r' );
$data= base64_encode(fread( $fp, $linesz));
fclose($fp);
$ata[$k++] = chunk_split( $data );
}
$this->attachment= implode($sep, $ata);
}
}
$subject=StripSlashes($subject);
$msg=StripSlashes($msg);
$msg="Message depuis votre site web:
$msg";
$m= new Mail;
$m->From( "$email" );
$m->To( "$dest");
$m->Subject( "$subject" );
$m->Body( $msg);
if ($email1!="") {
$m->Cc( "$email1");
}
$m->Priority($priority) ;
if ("$NomFichier_name"!="") {
copy("$NomFichier","../upload/$NomFichier_name");
$m->Attach( "../upload/$NomFichier_name", "application/octet-stream" );
}
$m->Send();
if ("$NomFichier_name"!="") {
Unlink("../upload/$NomFichier_name"); }
echo "$reponse";
?>
qud je lance la page devis sur mon site (www.meuniercreation.be)
qud je clic sur envoyer ilm affiche ceci
Warning: copy(../upload/08.jpg) [function.copy]: failed to open stream: Permission denied in /home/meunierc/public_html/formmail.php on line 186
Class Mail, method attach : file ../upload/08.jpg can't be found
j ai pourtant bien un dossier upload ... sinon sans fichier joint le formulaire marche .
merci de m aider :)
je me demandais si il fallais pas actionner qlq chose chez mon hebergeur (hosteur.com)pour pouvoir faire fonctionner un formulaire avec pieces jointe je vous envois mes code
pages html:
<center>
<form name="FormName" action="formmail.php" method="post" enctype="multipart/form-data" name="form">
Expéditeur <input type="text" name="email" size="35"> <br>
Sujet <input type="text" name="subject" size="35"> <br>
Message <textarea rows="12" name="msg" cols="60"></textarea> <br>
Fichier joint <input type="hidden" name="MAX_FILE_SIZE" value="100000"><input name="NomFichier" type="file" size="16">
Priorité <select name="priority" size="1">
<option value="1">Urgent
<option value="2">Haute
<option value="3">Moyenne
<option value="4">Basse
<option value="5">Très basse
</select> <br>
<input type="submit" value="Envoyer">
</form>
</center>
et voici ma page formmail.php:
$dest="meuniercreation@hotmail.com";
$reponse=StripSlashes("Formulaire envoyé avec succès");
class Mail
{
var $sendto= array();
var $from, $msubject;
var $acc= array();
var $abcc= array();
var $aattach= array();
var $priorities= array( '1 (Highest)', '2 (High)', '3 (Normal)', '4 (Low)', '5 (Lowest)' );
function Mail()
{
$this->autoCheck( true );
}
function autoCheck( $bool )
{
if( $bool )
$this->checkAddress = true;
else
$this->checkAddress = false;
}
function Subject( $subject )
{
$this->msubject = strtr( $subject, "\r\n" , " " );
}
function From( $from )
{
if( ! is_string($from) ) {
echo "Class Mail: error, From is not a string";
exit;
}
$this->from= $from;
}
function To( $to )
{
if( is_array( $to ) )
$this->sendto= $to;
else
$this->sendto[] = $to;
if( $this->checkAddress == true )
$this->CheckAdresses( $this->sendto );
}
function Cc( $cc )
{
if( is_array($cc) )
$this->acc= $cc;
else
$this->acc[]= $cc;
if( $this->checkAddress == true )
$this->CheckAdresses( $this->acc );
}
function Bcc( $bcc )
{
if( is_array($bcc) ) {
$this->abcc = $bcc;
} else {
$this->abcc[]= $bcc;
}
if( $this->checkAddress == true )
$this->CheckAdresses( $this->abcc );
}
function Body( $body )
{
$this->body= $body;
}
function Send()
{
$this->_build_headers();
if( sizeof( $this->aattach > 0 ) ) {
$this->_build_attachement();
$body = $this->fullBody . $this->attachment;
}
for( $i=0; $i< sizeof($this->sendto); $i++ ) {
$res = mail($this->sendto[$i], $this->msubject,$body, $this->headers);
}
}
function Organization( $org )
{
if( trim( $org != "" ) )
$this->organization= $org;
}
function Priority( $priority )
{
if( ! intval( $priority ) )
return false;
if( ! isset( $this->priorities[$priority-1]) )
return false;
$this->priority= $this->priorities[$priority-1];
return true;
}
function Attach( $filename, $filetype='application/x-unknown-content-type', $disposition = "inline" )
{
$this->aattach[] = $filename;
$this->actype[] = $filetype;
$this->adispo[] = $disposition;
}
function Get()
{
$this->_build_headers();
if( sizeof( $this->aattach > 0 ) ) {
$this->_build_attachement();
$this->body= $this->body . $this->attachment;
}
$mail = $this->headers;
$mail .= "\n$this->body";
return $mail;
}
function ValidEmail($address)
{
if( ereg( ".*<(.+)>", $address, $regs ) ) {
$address = $regs[1];
}
if(ereg( "^[^@ ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]|net|com|gov|mil|org|edu|int)$",$address) )
return true;
else
return false;
}
function CheckAdresses( $aad )
{
for($i=0;$i< sizeof( $aad); $i++ ) {
if( ! $this->ValidEmail( $aad[$i]) ) {
echo "Class Mail, method Mail : invalid address $aad[$i]";
exit;
}
}
}
function _build_headers()
{
$this->headers= "From: $this->from\n";
$this->to= implode( ", ", $this->sendto );
if( count($this->acc) > 0 ) {
$this->cc= implode( ", ", $this->acc );
$this->headers .= "CC: $this->cc\n";
}
if( count($this->abcc) > 0 ) {
$this->bcc= implode( ", ", $this->abcc );
$this->headers .= "BCC: $this->bcc\n";
}
if( $this->organization != "" )
$this->headers .= "Organization: $this->organization\n";
if( $this->priority != "" )
$this->headers .= "X-Priority: $this->priority\n";
}
function _build_attachement()
{
$this->boundary= "------------" . md5( uniqid("myboundary") );
$this->headers .= "MIME-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"$this->boundary\"\n\n";
$this->fullBody = "This is a multi-part message in MIME format.\n--$this->boundary\nContent-Type: text/plain; charset=us-ascii\nContent-Transfer-Encoding: 7bit\n\n" . $this->body ."\n";
$sep= chr(13) . chr(10);
$ata= array();
$k=0;
for( $i=0; $i < sizeof( $this->aattach); $i++ ) {
$filename = $this->aattach[$i];
$basename = basename($filename);
$ctype = $this->actype[$i];
$disposition = $this->adispo[$i];
if( ! file_exists( $filename) ) {
echo "Class Mail, method attach : file $filename can't be found"; exit;
}
$subhdr= "--$this->boundary\nContent-type: $ctype;\n name=\"$basename\"\nContent-Transfer-Encoding: base64\nContent-Disposition: $disposition;\n filename=\"$basename\"\n";
$ata[$k++] = $subhdr;
$linesz= filesize( $filename)+1;
$fp= fopen( $filename, 'r' );
$data= base64_encode(fread( $fp, $linesz));
fclose($fp);
$ata[$k++] = chunk_split( $data );
}
$this->attachment= implode($sep, $ata);
}
}
$subject=StripSlashes($subject);
$msg=StripSlashes($msg);
$msg="Message depuis votre site web:
$msg";
$m= new Mail;
$m->From( "$email" );
$m->To( "$dest");
$m->Subject( "$subject" );
$m->Body( $msg);
if ($email1!="") {
$m->Cc( "$email1");
}
$m->Priority($priority) ;
if ("$NomFichier_name"!="") {
copy("$NomFichier","../upload/$NomFichier_name");
$m->Attach( "../upload/$NomFichier_name", "application/octet-stream" );
}
$m->Send();
if ("$NomFichier_name"!="") {
Unlink("../upload/$NomFichier_name"); }
echo "$reponse";
?>
qud je lance la page devis sur mon site (www.meuniercreation.be)
qud je clic sur envoyer ilm affiche ceci
Warning: copy(../upload/08.jpg) [function.copy]: failed to open stream: Permission denied in /home/meunierc/public_html/formmail.php on line 186
Class Mail, method attach : file ../upload/08.jpg can't be found
j ai pourtant bien un dossier upload ... sinon sans fichier joint le formulaire marche .
merci de m aider :)
A voir également:
- Probleme avec formulaire php
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Confirmer le nouvel envoi du formulaire err_cache_miss - Forum Webmastering
11 réponses
Est-ce que t'as bien la permission d'écrire dans ton dossier d'upload ?
L'autre jour je me suis pris la tête pendant des heures sur un formulaire d'upload avant de voir qu'en fait j'avais pas mis toutes les permissions (777) pour le dossier de destination XD
L'autre jour je me suis pris la tête pendant des heures sur un formulaire d'upload avant de voir qu'en fait j'avais pas mis toutes les permissions (777) pour le dossier de destination XD
effectivement ca je ne savais pas ...
peut tu m expliquer comment faire pour faire ca ?
merci beaucoup
peut tu m expliquer comment faire pour faire ca ?
merci beaucoup
Ça dépend de ton logiciel ftp mais je pense qu'il suffit que tu tu fasses un click droit sur le dossier où tu veux uploader tes fichiers et que dans les propriétés du dossier tu coches toutes les permissions (si il y a une zone avec des 3 chiffres il faut que tu mettes 777) et normalement le problème est réglé.
Tiens moi au courant.
Tiens moi au courant.
re
j ai ftp classic et y pas de proprieter qud tu clic droit ...
qud je clic droit sur mon fichier il me donne les proprieter oui mais pas de chmod ou 777 ou d autre droit ....
merci
j ai ftp classic et y pas de proprieter qud tu clic droit ...
qud je clic droit sur mon fichier il me donne les proprieter oui mais pas de chmod ou 777 ou d autre droit ....
merci
mais lol ...
qud je suis ds mon ftp la fenetre de geuche c est mon pc la fenetre de droite c est mon hebergeur
et qud je clic sur le dossier de mon hebegeur la ou je vais envoyer tout mes fichier et dossier de mon site
je clic droit et la t a rename delete open download et rien d autre ....
snif ou mon ftp craint ou alors i dont now ...lol
merci pour l aide
qud je suis ds mon ftp la fenetre de geuche c est mon pc la fenetre de droite c est mon hebergeur
et qud je clic sur le dossier de mon hebegeur la ou je vais envoyer tout mes fichier et dossier de mon site
je clic droit et la t a rename delete open download et rien d autre ....
snif ou mon ftp craint ou alors i dont now ...lol
merci pour l aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ok j ai installer ton ftp c est mieux en effect la je clic droit sur mon dossier et proprieter puis je marque 666 la ou y a 4 chiffre? merci
bj
j ai resolu le probleme lol c etais bien ca mais en 777
uniquement sur le fichier upload et c est suffisant
merci encore
maintenant qlq un pourrais me dire comment faire ds mon formail .php pour que une fois le formulaire envoyer il te redirige vers une page html ?
merci beaucoup
j ai resolu le probleme lol c etais bien ca mais en 777
uniquement sur le fichier upload et c est suffisant
merci encore
maintenant qlq un pourrais me dire comment faire ds mon formail .php pour que une fois le formulaire envoyer il te redirige vers une page html ?
merci beaucoup
voilaj ai tester et ca marche pas car a mon avis je le place pas au bonne endroit ...
car il me redirige vers une page blanche avec ecrit Formulaire envoyé avec succès comme dans le script au debut
alors dois je effacer cette ligne de code et la remplacer par le header ?
$reponse=StripSlashes("Formulaire envoyé avec succès");
??? merci
car il me redirige vers une page blanche avec ecrit Formulaire envoyé avec succès comme dans le script au debut
alors dois je effacer cette ligne de code et la remplacer par le header ?
$reponse=StripSlashes("Formulaire envoyé avec succès");
??? merci
Le problème c'est qu'avant le header il ne faut pas de code html or le echo te génère.. du code html !
Je pense que tu devrais enlever le echo qui dit que ça a bien été uploadé et tu fais ta redirection à la place.
Après si tu veux vraiment dire à l'utilisateur que ça a marché (et c'est mieux de lui dire) tu peux passer un paramètre en GET et afficher, en fonction du paramètre, un message sur ta page html.
Je pense que tu devrais enlever le echo qui dit que ça a bien été uploadé et tu fais ta redirection à la place.
Après si tu veux vraiment dire à l'utilisateur que ça a marché (et c'est mieux de lui dire) tu peux passer un paramètre en GET et afficher, en fonction du paramètre, un message sur ta page html.
ok donc e dois bien remplacer cette ligne la
$reponse=StripSlashes("Formulaire envoyé avec succès");
??
mais y a un echo aussi au dessu a l envoi "ou l on inscrit le mail pour la reception "
pourrais tu me faire la ligne de code a inserer et ou exactement merci beaucoup
$reponse=StripSlashes("Formulaire envoyé avec succès");
??
mais y a un echo aussi au dessu a l envoi "ou l on inscrit le mail pour la reception "
pourrais tu me faire la ligne de code a inserer et ou exactement merci beaucoup
Bon alors en fait li'dée c'est que partout où t'as un echo tu mettes un header
Pour gérer tous les différents cas d'erreur (ou de réussite) il faudrait que tu passe un paramètre dans l'url genre
Après dans tapage.php tu récupères le paramètre ($_GET['erreur']) et en fonction de ça tu affiches un message. Par exemple si l'upload est réussi tu rediriges sur
Tu comprends le truc ?
(Désolé mais j'ai vraiment la flemme d'étudier ton source et te donner un code tout prêt. De toute façon c'est en se creusant le crâne qu'on apprend le mieux ^^)
header ('Location: tapage.php')
Pour gérer tous les différents cas d'erreur (ou de réussite) il faudrait que tu passe un paramètre dans l'url genre
('Location: tapage.php?erreur=2')
Après dans tapage.php tu récupères le paramètre ($_GET['erreur']) et en fonction de ça tu affiches un message. Par exemple si l'upload est réussi tu rediriges sur
('Location: tapage.php?erreur=0')Et dans tapage.php tu mets
if ($_GET['erreur'] == 0) echo 'Upload réussi';
Tu comprends le truc ?
(Désolé mais j'ai vraiment la flemme d'étudier ton source et te donner un code tout prêt. De toute façon c'est en se creusant le crâne qu'on apprend le mieux ^^)