Probleme avec formulaire php

neya -  
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 :)
A voir également:

11 réponses

Azraka Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   13
 
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
0
neya
 
effectivement ca je ne savais pas ...
peut tu m expliquer comment faire pour faire ca ?
merci beaucoup
0
Azraka Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   13
 
Ç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.
0
neya
 
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
0
Azraka Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   13
 
Il faut essayer de faire ton click droit sur le dossier où tu veux uploader tes fichers, pas sur les fichiers eux même ^^
0
neya
 
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
0
Azraka Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   13
 
À la limite essaye avec un autre client ftp (j'utilise winscp) mais sinon je sais pas d'où ça peut venir, désolé :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neya
 
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
0
neya
 
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
0
Azraka Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   13
 
Et ben voilà, un problème de résolu ^^

Pour te rediriger tu peux utiliser un header :
header ('Location :tapage.html')
Le seul inconvénient de cette méthode c'est qu'il ne faut pas qu'il y ai de html avant cette ligne mais vu ton code ça devrait être bon.
0
neya
 
ok merci pour tout je vais tester ca ;)
0
neya
 
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
0
Azraka Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   13
 
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.
0
neya
 
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
0
Azraka Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   13
 
Je te fais ça ce soir ;)
0
neya
 
ok j attend avec impatience lol
merci pour tout tout tou ;)
0
Azraka Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   13
 
Bon alors en fait li'dée c'est que partout où t'as un echo tu mettes un header
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 ^^)
0