JeuWeb - Crée ton jeu par navigateur
Problème de getimagesize [REGLE] - 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 : Problème de getimagesize [REGLE] (/showthread.php?tid=514)

Pages : 1 2


Problème de getimagesize [REGLE] - Chewbacca - 05-12-2006

Bonjour.
Voici mon problème :
Je voudrais limiter la taille des avatars sur mon site. J'utilise donc getimagesize.
Tout ça marche très bien en local, mais pas sur le web (mon hébergeur est keohosting, php4.3.10-18, avec safe mode off)
Merci d'avance de vos réponses, si ça peut vous aider, je vous file le bout de code qui coince :
Code PHP :
<?php 
$size
=getimagesize($_POST['avatar']);
                if ($size[0]>175 || $size[1]>250)
                {
                        echo 'Votre image est trop grande';
                }
                else
                
{              
                mysql_query
("UPDATE Membres SET avatar='".$avatar."'  WHERE id='".$_GET['membre']."'")or die (mysql_error);
                }



RE: Problème de getimagesize - LittleQI - 05-12-2006

Peux-tu nous dire ce qu'affiche echo $size; juste après ton utilisation de getimagesize() ?


RE: Problème de getimagesize - Maegia - 05-12-2006

C'est l'index 0 de ton tableau $size qui contient la largeur, et l'index 1, la longueur. L'index 2 que tu utilises dans ta condition if contient en fait le type d'image analysé, soit jpg, gif, png, etc, d'où l'erreur. Il y a même un index 3, qui contient une chaîne de caractères idéale pour être placé dans les balises <img>. Enfin, l'important reste simplement que tu n'utilises pas les bons index. Tu devrais plutôt avoir :

Code PHP :
<?php 
$size
=getimagesize($_POST['avatar']);

if (
$size[0]>175 || $size[1]>250)
{
        echo 'Votre image est trop grande';
}
else
{
              
        mysql_query
("UPDATE Membres SET avatar='".$avatar."'  WHERE id='".$_GET['membre']."'")or die (mysql_error);
}

Je me permets aussi de te questionner sur la sécurité de ta requête... Qu'arrive-t'il si je modifie la valeur GET de membre manuellement ? J'updaterai mon avatar sur un autre joueur... ? Ou pire, si je modifie ma requête de telle sorte que la valeur $_GET['membre'] = '""; DELETE FROM Membres WHERE id > 0'; ?


RE: Problème de getimagesize - Chewbacca - 05-12-2006

Merci, mais ça ne marche toujours pas sur le web.
Pour répondre à tes questions :
En fait, le formulaire ne s'affiche que si l'id de la session=$_GET['membre']
Je ne comprends pas comment on pourrait faire la requête DELETE, mais la sécurité, c'est pas mon fort.
Si vous avez encore des suggestions, merci d'avance.


RE: Problème de getimagesize - Maegia - 06-12-2006

C'est alors probablement la valeur que tu postes dans $_POST['avatar'] qui est erroné, car la dernière fonction, sachant de plus qu'elle ne nécessite pas la librairie GN, devrait fonctionner. Où se situe ton erreur exactement ? L'avatar de s'update pas ? Pourrait-ce être dû au fait que, dans un premier temps, tu fais référence à l'avatar par $_POST['avatar'] et, dans un deuxième temps, par $avatar sans pour autant l'avoir redéfinie ?


RE: Problème de getimagesize - Chewbacca - 06-12-2006

Non, en fait mon code marche parfaitement en local.
Un print_r($size) m'affiche ceci en local :
Array ( [0] => 700 [1] => 470 [2] => 2 [3] => width="700" height="470" [bits] => 8 [channels] => 3 [mime] => image/jpeg )
et sur le web, rien.


RE: Problème de getimagesize - joshua - 06-12-2006

J'ai deja eu ce probleme. Il s'agissait d'un module de gestion des images qui n'était pas chargé sous php. As tu vérifié que tous les modules sont chargés? (de mémoire il s'appelle gb qqch comme ca...)


RE: Problème de getimagesize - barst - 06-12-2006

C'est le module GD et tu peux le voir avec un phpinfo().

Non sinon, la valeur de $avatar est-elle un url d'image distante ou locale à ton script ?
Il me semble que tu ne peux faire le getImageSize que sur des images locales à ton script. (à vérifier sur la doc php)

Voici la doc : http://fr2.php.net/getimagesize
Donc GD n'est pas obligatoire mais l'accès à l'image doit être possible donc teste la valeur retour de la fonction getimagesize

Code PHP :
<?php 
$size
=getimagesize($_POST['avatar']);
if(
false === $size) //3 "="
{
echo
"Erreur !!!!<br />";
}
else
{
if (
$size[0]>175 || $size[1]>250)
{
echo
'Votre image est trop grande';
}
else
{
mysql_query("UPDATE Membres SET avatar='".$avatar."' WHERE id='".$_GET['membre']."'")or die (mysql_error);
}
}



RE: Problème de getimagesize - Chewbacca - 06-12-2006

Merci.
J'ai fait ce que tu m'as dit.
En local, si l'image est trop grande, ça ne l'enregistre pas.
En revanche, sur le web, ça marque "erreur!!!!"


RE: Problème de getimagesize - joshua - 06-12-2006

Quand tu fais phpinfo, le module GD est bien présent?