GanJasTeR
Messages postés27Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention31 mai 2007
-
5 mars 2007 à 19:47
GanJasTeR
Messages postés27Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention31 mai 2007
-
6 mars 2007 à 13:33
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'Votre profil a été modifié avec succès.
';
redirect('index.php?ref=user&act=profil', 3);
}
else{
echo'Il y a eu une erreur lors de l\'upload de votre avatar.
';
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'[index.php?ref=user&act=pass Modifier son pass]
'
. 'taile maximale : 100ko | Dimensions maximales : 100x100
Laissez vide pour ne pas changer
'
. '
'
. '
</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 verif_total($file,$cat){ // $file correspondrait donc $ $_FILES['avatar'] et $cat au type de fichier que je souhaite (image, fichier, musique...)
// 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;
GanJasTeR
Messages postés27Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention31 mai 2007 6 mars 2007 à 13:33
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
lespleiades
Messages postés25Date d'inscriptionlundi 8 mai 2006StatutMembreDernière intervention 6 août 2007 6 mars 2007 à 02:14
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^^