JeuWeb - Crée ton jeu par navigateur
limiter dimension image upload + barre exp double sens - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : limiter dimension image upload + barre exp double sens (/showthread.php?tid=2129)



limiter dimension image upload + barre exp double sens - Kassak - 12-12-2007

Yop yop! A va bien?


Une petite question, comment limiter la taille de l'image que le membre souhaite uploader?
Pour le moment j'ai limité a 15ko la taille de l'image, mais le membre peut très bien envoyer une image de 5000px/5000px sans problème, ce qui m'ennuie un peu, non?^^


Et aussi, j'ai un système de barre d'expérience, barre de vie, de mana( non pas la "barre de faire"!!), et je souhaite le modifié, pour que ça fasse une barre spéciale, par exemple pour le karma du joueur.
Je m'explique, une barre ou le "0" et au milieu, a droite c'est les valeurs positives, et a gauche les négatives. Vous voyez?
Je vois pas trop comment modifier ça, voici mon code pour une barre normale ( barre de vie, avec HPmax et HP pour definir la taille) :

Code PHP :
<?
$LargeurMax
= 160;

$LargeurBarreMax = $LargeurMax ;
$LargeurBarre = ($HP * $LargeurBarreMax) / $HPmax; // taille de la barre centrale
$arriere = $LargeurBarreMax - $LargeurBarre;


echo
'<table class="barre" cellspacing="0" cellpadding="0">';
// la barre centrale fera la taille de notre % de vie ramené à notre largeur max
echo '<td background="image/rouge.gif" width="'.$LargeurBarre.'" height="10" ></td>';
echo
'<td bgcolor="#999999" width="'.$arriere .'" height="10" ></td></table>';
?>


Vilou vilou, merci de m'eclaircir


RE: limiter dimension image upload + barre exp double sens - Plume - 12-12-2007

Pour la taille de l'image, je te renvoie vers [ getImageSize() ]

Pour le reste, ça vient Smile

~L~


RE: limiter dimension image upload + barre exp double sens - Zamentur - 12-12-2007

Si le karma est borné c'est à dire qu'il ya des valeur minimum est maximum du karma, il est possible de faire ceci:


Code PHP :
<?
//Donnée
$taille_barre=160;
$karma_max=5;
$karma_min=-4;
$karma=-2;

//Taille de l'intervalle
$intervale_karma=$karma_max-$karma_min;

//Clacul des proportions des 3 parties de la barre
$largeur=abs($karma/$intervale_karma);
$arriere=abs($karma_min/$intervale_karma)-($karma<0)*$largeur;
$avant=$karma_max/$intervale_karma-($karma>0)*$largeur;

//Mise à l'echelle
$largeur=round($largeur*$taille_barre);
$arriere=round($arriere*$taille_barre);
$avant=round($avant*$taille_barre);

//Affichage
echo '<table class="barre" cellspacing="0" cellpadding="0">';
echo
'<td bgcolor="#999999" width="'.$arriere .'" height="10" ></td>';
if (
karma>0) echo '<td background="image/bleu.gif" width="'.$largeur.'" height="10" ></td>';
else echo
'<td background="image/rouge.gif" width="'.$largeur.'" height="10" ></td>';
echo
'<td bgcolor="#999999" width="'.$avant .'" height="10" ></td>';
echo
'</table>';
?>

Bon a noter que c'est pas très jolie...
Mais là ce code te permer de faire ta barre de karma et aussi tes autres barre qui sont en fait des cas simplifié($karma_min=0) de la barre de karma

Comme tu as plusieurs barre à afficher tu devrais faire une fonction qui fasse çà tout seul, du genre:


Code PHP :
<?
//Fonction qui calcul les proportions unitaires de la barre
function proportion_barre($carac,$carac_min,$carac_max) {
$intervalle=$carac_max-$carac_min;
$prop_carac=abs($carac/$intervale)
return array(
abs($carac_min/$intervale)-($carac<0)*$prop_carac,
$prop_carac,
$avant=$carac_max/$intervale-($carac>0)*$prop_carac
);
}

/*
Fonction qui creer une barre de taille fixe
J'ai fait en 2 fonction au cas ou il y aurais plusieurs style de barre à faire
*/
function creation_barre($carac,$carac_min,$carac_max,$taille) {
$proportion=proportion_barre($carac,$carac_min,$carac_max);

$barre=($proportion[0]!=0)?'<div class="barre_neg" width="'.round($taille*$largeur).'" ></div>':'';
$barre.=($proportion[1]>0)?'<div class="barre_carac_pos" width="'.round($taille*$largeur).'" ></div>':'<div class="barre_carac_neg" width="'.round($taille*$largeur).'" ></div>';
$barre.=($proportion[1]!=0)?'<div class="barre_pos" width="'.round($taille*$largeur).'" ></div>':'';
return
$barre;
}

/*
De cette façon il devient trés simpled 'afficher une barre
*/
?>



RE: limiter dimension image upload + barre exp double sens - Kassak - 12-12-2007

Merci merci, c'est exactement ce que je souhaité faireWink

Par contre, petite précision pour le [ getImageSize() ],...la doc ne me donne pas envie de lire, et encore moins de comprendre, de toute façon, a chaque fois que j'ai lu un truc dessus j'y ai jamais rien compris, je sais pas comment vous faites? Oo

Bref, par une personne humaine ça passe généralement mieux!

Voici mon code de traitement des données du formulaire, la page config.php contient le poids max, les extensions autorisées, l'url du dossier upload ainsi que le nom qu'aura l'image dans mon ftp, et voici le fichier traitement :

Code PHP :
<?session_start();

$pseudo_joueur = $_SESSION['pseudo'];
require_once(
'config.php');

if(isset(
$_POST['submit']))
{
if(
$_FILES['fichier']['size']>$poids_max)
{
$message='Le fichier est trop lourd !';
}
else
{
$extension_upload=substr(strrchr($_FILES['fichier']['name'], '.') ,1);
if(
in_array($extension_upload,$extensions_autorisees))
{
$nom=getName('uploads/',$extension_upload);
chmod ("/uploads/", 0644);
move_uploaded_file($_FILES['fichier']['tmp_name'],$nom);
chmod($nom, 0644);
$message='Votre fichier a bien été uploadé.';
mysql_query("UPDATE membre SET avatar= '".$nom."'WHERE pseudo = '".$pseudo_joueur."' ; ") or die (mysql_error());

}
else
{
$message='L\'extension n\'est pas autorisée';
}
}
header("location: option.php?a=$message");
exit;
}
else
{
header("location: option.php?a=$message");
exit;
}
?>

Voila, une petite précision sur cette fonction par rapport a mon code ne serait pas de refus, et ne me donnez pas un lien vers la doc, ca me donne envie de pleurer:mauvais:

Merci^^


RE: limiter dimension image upload + barre exp double sens - Plume - 12-12-2007

Tu veux qu'on fasse quoi ? Qu'on te dise comment procéder pour contrôler la résolution de l'image ?

~L~


RE: limiter dimension image upload + barre exp double sens - Zamentur - 13-12-2007

Citation :Par contre, petite précision pour le [ getImageSize() ],...la doc ne me donne pas envie de lire, et encore moins de comprendre, de toute façon, a chaque fois que j'ai lu un truc dessus j'y ai jamais rien compris, je sais pas comment vous faites? Oo
Euh ben va falloir apprendre à lire...
Cette doc est plutot bien expliqué et il suffit de regarder les exemple pour comprendre généralement ce qu'il faut mettre dans la fonction!
C'est aussi des personnes humaine qui ont ecris ces docs et je trouve qu'elles sont très clair.

Sache que moi non plus, avant que tu poses cette question, je ne savais pas exactement comment recuperer cette taille (une recherche dans la doc m'a suffit) . Je peux meme te dire que c'est à l'exemple #2 du lien donné par LexLxUs.

Si avec l'exemple #2 tu ne reussis pas à le faire c'est que dans ce cas ton probleme n'est pas de recuperer la taille de l'image, mais de creer un algorithme te permetant d'interdire de charger une image trop grande.
en gros un trucs style:
Code PHP :
<?php 
if ($width>100 OR $height>100) echo 'Votre image est trop grandes';
else {
//code
}
Autrement dit si tu as besoin qu'on t'indique çà alors que tu nous met un code bien plus complexe, et bien j'ai tendance à penser qu'il y a un hic...
Dans l'autre cas, (qui doit etre le tien), je pense qu'il faut un peu regarder les liens qu'on te donne, en étant un peu moins pessimiste quand au chance d'y trouver sa reponse!

J'ai en fait l'impression que tu devrais apprendre un peu à chercher dans cette fameuse doc, tu verras qu'une fois que ce sera fait tu trouveras les reponse très vite à tes questions et tu y apprendra beaucoup au passage.


RE: limiter dimension image upload + barre exp double sens - Plume - 13-12-2007

En clair, mauvaise foi inside, mais j'voulais pas le dire de peur d'être le méchant xD Finalement, c'est Zamentur le bad guy Confusediffle:

Lex.