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&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&act=pass">Modifier son pass</a><br /><br />'
. 'Vous êtes inscrit depuis le '.$date.'</p>'
. '<form method="post" action="index.php?ref=user&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 '
. '<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