Forum Eurower.com Index du Forum

Forum Eurower.com
Bienvenue sur le forum de Eurower
 
 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

fonction getimagesize()

 
Poster un nouveau sujet   Répondre au sujet    Forum Eurower.com Index du Forum -> Service WEB sur .NET
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
akazerty



Inscrit le: 10 Mai 2004
Messages: 7

MessagePosté le: Lun Mar 07, 2005 23:22    Sujet du message: fonction getimagesize() Répondre en citant

Bonjour à tous,

Voila j'ai créée sur mon site un système d'album photo pour chacun de mes membres, mais lors de l'envois de l'image, je réalise plusieurs vérification comme l'extension du fichier ou encore la dimension de l'image. Mais lors de cette derniere vérification, j'utilise la fonction getimagesize("$_FILES['fichier']['tmp_name']") qui va me donner la largeur et hauteur de l'image, cela marchait en local mais lors du passage sur le net, cela m'indique que je n'es pas les droits necessaire sur les fichiers temporaire. Comment puis-je donc vérifier la dimension avant que celle-ci soit envoyé sur le serveur?

merci d'avanc epour vos réponse et bonne fin de soirée
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Calao



Inscrit le: 20 Jan 2004
Messages: 442
Localisation: Bruxelles (Jette)

MessagePosté le: Mar Mar 08, 2005 00:28    Sujet du message: Répondre en citant

tu l'envoies sur le serveur, tu vérifies et si c'est pas bon tu l'effaces, mais en plus à la sécurité serveur, rajoute un petit javascript qui teste du côté client pour éviter de devoir uploader l'image si c'est pas bon.
Dans ce cas il l'uploadera uniquement si l'image est valide ou si le javascript est désactivé.
_________________
Calao - www.slaceblog.be
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
akazerty



Inscrit le: 10 Mai 2004
Messages: 7

MessagePosté le: Mar Mar 08, 2005 20:27    Sujet du message: Répondre en citant

oui je voudrais faire mes vérifications avant d'uploader sur le serveur pour une question de sécurité mais si la personne n'accepte pas les javascript alors un executable pourrait etre envoyé sans probleme aussi, désolé je débute dans l'upload de fichier Very Happy
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
eurower
Site Admin


Inscrit le: 03 Jan 2002
Messages: 1458
Localisation: Lyon

MessagePosté le: Mer Mar 09, 2005 00:58    Sujet du message: Répondre en citant

On peut voir le script correspondant ?
L'upload est oki sur le serveur !

Si vuos faites un move_upload après, il faut que le répertoire de destination ai les bons droits !
_________________
Modérateur des forums
Président de l'association

Hébergement eurower.net
Association loi 1901
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Calao



Inscrit le: 20 Jan 2004
Messages: 442
Localisation: Bruxelles (Jette)

MessagePosté le: Mer Mar 09, 2005 02:23    Sujet du message: Répondre en citant

le truc c'est que tu dois d'abord uploader ton fichier sur le serveur dans ton répertoire et ensuite tester à partir de la position uploadée.
Rappel getimagesize() à besoin d'un chemin complet (http://tondomaine.truc/rep/fichier) ensuite si c'est pas bon tu l'efface du serveur et tu retourne à ton script avec un petit message d'erreur.
Par contre pour le type du fichier tu peux tester à partir de la position temporaire.
_________________
Calao - www.slaceblog.be
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
akazerty



Inscrit le: 10 Mai 2004
Messages: 7

MessagePosté le: Mer Mar 09, 2005 19:50    Sujet du message: Répondre en citant

En fait j'ai créé une fonction dont voici le code

Code:
 function upload($file_taille_max,$max_width,$max_height,$dossier_destination){

   if($dossier_destination=="" || !is_dir($dossier_destination)){
      echo "dossier de destination non renseigné ou inexistant";
      exit();
   }
   
   if (isset($_FILES['fichier']) && is_array($_FILES['fichier'])){
      
        if(isset($_FILES['fichier']['error']))$fichier_error = $_FILES['fichier']['error']; else{echo 'probleme de configuration 3',exit();}
      
        if(!empty($fichier_error)){
          switch ($fichier_error){
                   case 1:
                   echo"<span class=texteRUBRIQUE>Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !</span><br>";
                   break;
                   case 3:
                   echo "<span class=texteRUBRIQUE>L'envoi du fichier a été interrompu pendant le transfert !</span><br>";
                   break;
                   case 4:
                   echo "<span class=texteRUBRIQUE>Le fichier que vous avez envoyé a une taille nulle !</span><br>";
                   break;
          }exit();
      }else{
         if(!empty($_FILES['fichier']['name']))$fichier_name=$_FILES['fichier']['name']; else{echo 'probleme de configuration 1',exit();}
         
            if(!empty($_FILES['fichier']['tmp_name']))$fichier_tmp_name=$_FILES['fichier']['tmp_name']; else{echo 'probleme de configuration 2',exit();}
         
            if(!empty($_FILES['fichier']['size']))$fichier_size=$_FILES['fichier']['size']; else{echo 'probleme de taille fichier',exit();}
         
            if($fichier_size>$file_taille_max){
            $file_tailleko_max=$file_taille_max/1000;
         echo '<span class=texteRUBRIQUE>taille du fichier supérieur a la limite autorisé : '.$file_tailleko_max.' octets</span><br>'; exit();}
         
         $size = getimagesize("$fichier_tmp_name");
         $width=$size[0];
            $height=$size[1];
           
            if($width>$max_width){echo "<span class=texteRUBRIQUE>Dimension de l'image supérieur a la limite autorisé : $max_width x $max_height pixels</span><br>"; exit();}   
            if($height>$max_height){echo "<span class=texteRUBRIQUE>Dimension de l'image supérieur a la limite autorisé : $max_height x $max_width pixels</span><br>"; exit();}
 
            
         $temp=explode('.',$fichier_name);                                    #
         $extension=strtolower($temp[count($temp)-1]);                                    #
         $ext_a_modif="(php|php3|php4|php5|htm|html|txt|inc)";   
         $ext_aut="(jpg|jpeg|gif)";      
            if(ereg($ext_aut,$extension)){           
   
                   $name_ss_ext=eregi_replace("[^A-Z0-9]", "",strtolower(strtr(substr($fichier_name, 0, -strlen($extension)-1),"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËéèêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn")));
                $extension='.'.eregi_replace($ext_a_modif,'[\\1]',$extension);                     #
         
                   if(file_exists($dossier_destination."/".$name_ss_ext.$extension)){
                        $i=0;
                    while(file_exists($dossier_destination."/".$name_ss_ext."_".$i.$extension))$i++;
                    $fichier_name=$name_ss_ext."_".$i.$extension;
                  }else
                    $fichier_name=$name_ss_ext.$extension;
                     $res_copy=move_uploaded_file($fichier_tmp_name, $dossier_destination.'/'.$fichier_name);
         
                  if($res_copy){
                      print "<span class=texteRUBRIQUE>Le fichier <b>".$fichier_name."</b>a bien été envoyé et enregistré.</span><br>";
                  return $fichier_name;
                  }else{
                      print "<span class=texteRUBRIQUE>Fichier <tt><b>".$fichier_name."</b></tt> non envoyé.</span><br>";
                  return 0;
                  }

        }
            else{
            echo "<span class=texteRUBRIQUE>Seul les extension en .jpeg,.jpg et .gif sont autorisés</span>";
            exit();
         }
      }
   }else echo '<span class=texteRUBRIQUE>fichier à uploader non renseigné</span><br>';

}
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
eurower
Site Admin


Inscrit le: 03 Jan 2002
Messages: 1458
Localisation: Lyon

MessagePosté le: Mer Mar 09, 2005 21:38    Sujet du message: Répondre en citant

On peut avoir l'erreur retourné par le serveur lors d'un upload ?
_________________
Modérateur des forums
Président de l'association

Hébergement eurower.net
Association loi 1901
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
akazerty



Inscrit le: 10 Mai 2004
Messages: 7

MessagePosté le: Jeu Mar 10, 2005 09:42    Sujet du message: Répondre en citant

Voila j'aurais du le mettre dès le dbut pour simplifier les choses

Code:

Warning: getimagesize() [function.getimagesize]: open_basedir restriction in effect. File(/tmp/upload_tmp_dir/php8njLwB) is not within the allowed path(s): (/home/a/akazerty/user/:/usr/local/lib/php/:/home/system/user/www/shared/:/home/system/user/www/www.eurower.net/errors/) in /home/a/akazerty/user/www/info/fonctions.php on line 93

Warning: getimagesize(/tmp/upload_tmp_dir/php8njLwB) [function.getimagesize]: failed to open stream: Operation not permitted in /home/a/akazerty/user/www/info/fonctions.php on line 93

Warning: move_uploaded_file(avatar/images.jpeg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/a/akazerty/user/www/info/fonctions.php on line 117

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/upload_tmp_dir/php8njLwB' to 'avatar/images.jpeg' in /home/a/akazerty/user/www/info/fonctions.php on line 117
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
akazerty



Inscrit le: 10 Mai 2004
Messages: 7

MessagePosté le: Jeu Mar 10, 2005 12:27    Sujet du message: Répondre en citant

C'est bon j'ai réglké le problème, la fonction getimagesize() ne marche pas sur les fichier temporaire donc j'ai fais comme l'indiquait Calao.
J'ai créé une fonction pour l'upolad puis j'ai recréé une deuxieme fonction vérifiant les dimensions de l'image, si elles sont bonnes, l'adresse de l'image est sauvegardé dans la bdd, sinon l'image est supprimé et un message d'erreur s'affiche.
Maintenant tout marche nikel, merci pour tout Wink
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Calao



Inscrit le: 20 Jan 2004
Messages: 442
Localisation: Bruxelles (Jette)

MessagePosté le: Jeu Mar 10, 2005 17:39    Sujet du message: Répondre en citant

Et maintenant c'est bien tu as fait une sécurité côté serveur mais par dessus rajoute une sécurité côté client pour le confort de l'utilisateur, cela ménagera le serveur et fera d'autant plus plaisir aux utilisateurs de ne pas devoir attendre le chargement de la page pour leur dire qu'il y a une erreur.
Pour cela tu le sais surement mais javascript fera l'affaire.
_________________
Calao - www.slaceblog.be
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
eurower
Site Admin


Inscrit le: 03 Jan 2002
Messages: 1458
Localisation: Lyon

MessagePosté le: Jeu Mar 10, 2005 18:43    Sujet du message: Répondre en citant

Puis bon, l'erreur est explicite la !

Impossible d'ouvrir un fichier dans /tmp, c'est écris :-s
_________________
Modérateur des forums
Président de l'association

Hébergement eurower.net
Association loi 1901
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Forum Eurower.com Index du Forum -> Service WEB sur .NET Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com