begin process at 2012 02 12 08:22:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Passage de $_FILES par fonction


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Passage de $_FILES par fonction

lundi 5 mars 2007 à 19:47:26 | Passage de $_FILES par fonction

GanJasTeR

Bonjour à tous

La raison de ce message est un problème de passage d'une variable $_FILES à une fonction.
Sans plus tarder voici mon code.

index.php --> Page qui contient diverses fonctions (appelées par une variable d'url index.php?ref=page&act=action)
Je vous présente le code concerné qui est celui de la page du profil d'un membre :

function profil(){
 global $bdd_prefix, $sql; 

 open_table('Compte : Profil');

 if(isset($_POST['profil_modif'])){
   // Traitement du formulaire
  require_once('includes/uploads.inc.php');
  $login = $_POST['login'];
  $_SESSION['user']->login = $login;
  $mail = $_POST['mail'];
  $mail_visible = $_POST['mail_visible'];
  $erreur = false;
  // UPLOAD
  if(!empty($_POST['avatar'])){   // Comment savoir si l'utilisateur a rempli le champ ?
   if(!verif_total($_FILES['avatar'],'avatar'))   // Transmission des infos du fichier à la fonction de traitement de l upload (voir code plus bas : uploads.inc.php)
    $erreur = true;  
  }
  if(!$erreur){
   // UPDATE
   $req = "UPDATE ".$bdd_prefix."_user SET login='".$login."',mail='".$mail."',mail_visible='".$mail_visible."' WHERE id_user=".$_POST['id_user']."";
   $sql->requete_SQL($req);
   echo'<p class="centre_titre">Votre profil a été modifié avec succès.</p>';
   redirect('index.php?ref=user&amp;act=profil', 3); 
  }
  else{
   echo'<p class="centre_titre">Il y a eu une erreur lors de l\'upload de votre avatar.</p>';
   redirect('javascript:history.back()', 3);
  }   
 }

 else{
  // Formulaire du profil
  echo'<script type="text/javascript" src="includes/js/profil.js"></script>';
  $req = "SELECT * FROM ".$bdd_prefix."_user WHERE id_user='".$_SESSION['user']->id_user."'";
  $result = $sql->requete_SQL($req);
  $data = mysql_fetch_assoc($result);
  $id = $data['id_user'];
  $login = $data['login'];
  $mail = $data['mail'];
  $mail_visible = $data['mail_visible'];
  // On coche une case en fonction de la donnée
  if($mail_visible == 1){
   $checked1 = 'checked="checked"';
   $checked0 = '';
  }
  else{
   $checked0 = 'checked="checked"';
   $checked1 = '';
  }
  $date = $date = date_fr($data['date']);
  echo'<p class="centre_liens"><a href="index.php?ref=user&amp;act=pass">Modifier son pass</a><br /><br />'
  . 'Vous êtes inscrit depuis le '.$date.'</p>'
  . '<form method="post" action="index.php?ref=user&amp;act=profil" onsubmit="return(verif_profil(this))">'
  . '<p><label>Login</label><input type="text" name="login" value="'.$login.'" size="20" maxlength="20"  /></p>'
  . '<p><label>Mail</label><input type="text" name="mail" value="'.$mail.'" size="20" maxlength="30" /></p>'
  . '<p><label>Mail visible</label><input type="radio" name="mail_visible" value="1" '.$checked1.' />oui &nbsp;'
  . '<input type="radio" name="mail_visible" value="0" '.$checked0.' />non</p>'
 // Champ de mon envoi de fichier
  . '<p><input type="hidden" name="MAX_FILE_SIZE" value="102400" /></p>'
  . '<p><label>Avatar</label><input type="file" name="avatar" /></p>'
  . '<p class="nota">taile maximale : 100ko | Dimensions maximales : 100x100<br />Laissez vide pour ne pas changer</p>'
  . '<div class="centre"><p class="submit"><br /><input type="hidden" name="id_user" value="'.$id.'" />'
  . '<input type="submit" name="profil_modif" value="Modifier" /></p></div></form>';
 }
 close_table();

}


uploads.inc.php --> Traitement de l'upload (extension, taille, dimensions si image...)

//  Fonction qui attribut une taille de fichier
function donne_taille($type){
 switch($type){
  case'avatar':$taille = 102400;break;
  default:$taille = 0;break;
 }
 return $taille;
}

// Fonction qui retourne un tableau d'extensions en fonction du type
function donne_ext($type){
 switch($type){
  case'avatar':$ext = array('jpg','jpeg','gif','png');break;
  default:$ext = array();break;
 }
 return $ext;
}


// VERIF AUTO
function verif_auto($error){
 if($error > 0)
  return false;
 else
  return true;
}

// VERIF TAILLE
function verif_taille($taille_fichier,$type_fichier){
 $maxsize = donne_taille($type_fichier);
 if($taille_fichier > $maxsize)
  return false;
 else
  return true;
}

// VERIF EXTENSION
function verif_ext($nom_fichier,$type_fichier,$ext_up){  // verix_ext($_FILES['avatar']['name'],'avatar');
 $extensions_valides = donne_ext($type_fichier);
 if(in_array($ext_up,$extensions_valides))
  return true;
 else
  return false;
}

// VERIF DIMENSIONS (si image)
function verif_dimensions($image,$maxwidth,$maxheight){
 $image_sizes = getimagesize($image);
 $maxwidth = 100;
 $maxheight = 100;
 if($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
  return false;
 else
  return true;
}

// GESTION DU CHEMIN
function gestion_chemin($fichier,$nom){ 
 $resultat = move_uploaded_file($fichier,$nom);
 if($resultat)
  return true;
 else
  return false;
}

// VERIFICATION TOTALE
function verif_total($file,$cat){   // $file correspondrait donc $ $_FILES['avatar'] et $cat au type de fichier que je souhaite (image, fichier, musique...)

 global $bdd_prefix,$sql;

 $type_fichier = $cat;
 $nom_fichier = $file['name'];
 $taille = $file['size'];
 
 // VERIF AUTO
 $res_auto = verif_auto($file['error']);
 
 // VERIF TAILLE
 $res_taille = verif_taille($taille,$type_fichier);
 
 // VERIF EXTENSION
 $extension_upload = substr(strrchr($nom_fichier, '.'),1);
 $res_ext = verif_ext($nom_fichier,$type_fichier,$extension_upload);
 
 // VERIF DIMENSIONS (SI IMAGE)
 if($type_fichier == 'avatar')  // Si on a à faire avec une image (que avatar de traité pour l instant)
  $res_dim = verif_dimensions($file['tmp_name'],100,100);
 else
  $res_dim = true;
 
 // GESTION DU CHEMIN
 $nom = $cat.'_'.random(6);
 $nom = 'uploads/'.$cat.'/'.str_replace(' ','',$nom).'.'.$extension_upload;
 $res_chemin = gestion_chemin($file['tmp_name'],$nom);
 
 
 // APPLICATION
 if(!$res_auto || !$res_taille || !$res_ext || !$res_dim || !$res_chemin) // Si une des vérifications retourne false
  return false;
 else{
   // On insère les infos de l'upload dans la bdd
  $req = "INSERT INTO ".$bdd_prefix."_uploads VALUES('','1','".$nom_fichier."','".$taille."','','','".$nom."','".time()."')";
  $result = $sql->requete_SQL($req);
  if($result)
   return true;
  else
   return false;
 }
}


Voilà je vous ai tout donné peut être un peu en bordel mais l'essentiel de mon problème est là.

Merci

mardi 6 mars 2007 à 02:14:07 | Re : Passage de $_FILES par fonction

lespleiades

pour "un vrai bordel" ca tu l'as dit ^^ essaye dejas de separer ton formulaire de la verification en faisant 2 pages 1=formulaire 2=verif_formulaire ^^
je ne peut malheureusement pas enumerer toutes les fautes que je peut observer, tellement il y'en a, ex: login="".$login."" la ca ne sert strictement a rien puisque ta variable est dejas declarer plus haut ($login=$data{'login'];) et puis les """ la vraiment je me dit que tu nous a poster un brouillon, alors essaye dejas pour commencer:
$sql = "UPDATE ta_table_carj'y'comprend_rien SET login='$login', mail='$mail,etc..";
mais surtout essaye d'apprendre le php (c'est pas si difficile que ca^^) je ne veut pas etre desagreable croit moi, je voudrait bien t'aider,  mais la il te faudrait un minimum de bases, ...bref je ne pense pas qu'une personne te re-feras ton script, car il y a tout a re-faire (j exagere peut etre un peu, mais pas mal de trucs quand meme) alors, comence par des choses simples, un formulaire dejas c'est pas mal ^^, et re-post nous un truc lorsque cela auras une forme viable, mais nous avons tous été "noob", alors c'est normal le "copier/coller/j fait une popotte" ont la tous fait^^
mardi 6 mars 2007 à 13:33:07 | Re : Passage de $_FILES par fonction

GanJasTeR

Réponse acceptée !
Pour mon problème j'ai trouvé de quoi il s'agisait j'avais oublié de spécifier l'entête de données du formulaire.

Dans toutes tes critiques une m'a frappé qui est celle du copié collé... Chaque caractère de ce script (du site en général aussi) je l'ai tapé avec MON Clavier, sache aussi que tout le système de session, de gestion des membres et de SQL repose sur une POO parfaitement organisée.

J'ai pris le vice de mettre formulaire et traitement dans une meme page ca c est vrai. Ha et pour le login='".$login."' je n'ai pas bien compris pourquoi tu m'as dis que c'était déjà déclaré... Le script de index.php est séparé en 2 partie bien distinctes avec chacunes leurs propres variables.
C'est sûr qu'en voyant ce code sans voir le reste ca parait bordel c'est normal :) mais toute la structure de mon site est sur papier, chaque script est sur papier avant d'arriver sur le bloc note.

Je n'ai pas la science infuse du php sinon je n'aurais pas poster dans ce forum et je ne me prendrais pas la tête des heures sur l'oubli d'un ; mais je pense ne plus être un "noob"

Voilà ^^ sinon pour le post le problème est résolu


Merci


Cette discussion est classée dans : fichier, mail, taille, return, verif


Répondre à ce message

Sujets en rapport avec ce message

Problème de compatibilité de script [ par Chris54 ] Bonjour,J'ai un problème d'execution d'un script javascript sous netscape alors qu'il fonctionne parfaitement sous IE mais je ne sais pas pourquoi.Que piece jointe avec mail() [ par leauhic ] Bonjour, je voudrais envoyer un mail avec une piece jointe en php. J'ai trouvé comment faire mais j'ai un petit probleme. Cette piece jointe est le pl Envoi de mails grâce à une liste d'e-mail au format txt? [ par paprikarmasutra ] Voilà,je dispose d'un fichier texte qui énumère tous les e-mails de mes visiteurs, ligne par ligne, du type :trucmuch@yahoo.frzozo@hotmail.combidule@w focntion mail , taille limite dans $body? [ par johnpelu ] bonjour a tous , y a t'il une taille limite pour la variable $body de la fonction mail() ??????merci créer un autre fichier selon le poids du présent [ par pyranhaz ] Bonjour, Existe-il une astuce pour créer un fichier supplémentaire selon la taille du fichier présent ???Ce qui veut dire que si j'ai un fichier log q Return-Path [ par tardigrade ] Bonjour à tous,J'ai un problème de Return-Path lorsque j'utilise la fonction mail() de PHP.Lorsque que je passe au paramètre haeder de la fonction la mail et piece jointe apres validation formulaire [ par Malabarix ] Salut,Voila j'ai un formulaire sur mon site dans le quel je fais entrez différente informations dont un .apres selectionné l'mege de son vehicule, j'e Upload fichier php [ par alanbraxe31 ] Bonjour à tous!voila j'ai un gros soucis avec la fonction mail en php.je souhaites joindre un fichier à mon mail. A la réception du mail, les fichiers Mail et formulaire [ par Jackboy ] J'aimerai créer un formulaire, assez complexe (pas seulement email, nom, message,...) et j'aimerai avoir ce formulaire envoyer dans un email et format Envois de mail avec fichier joint [ par Titigre ] Coucou,Voilà je suis en train de faire une appli en php et à un moment je dois envoyer un mail avec un fichier joint (normalement le fichier joint ser


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,248 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales