IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Plus propre que de multiples conditions


Sujet :

Langage PHP

  1. #1
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut Plus propre que de multiples conditions
    Bonjour, dans un script j'ai une serie de condition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       if ($extension == ".jpg" or $extension == ".jpeg" or $extension == ".JPG" or $extension == ".JPEG") { header("Content-Type: image/jpeg"); } // Indispenssable pour le téléchargement de l'image redimentionner.
       if ($extension == ".gif" or $extension == ".GIF") { header("Content-Type: image/gif"); } // Indispenssable pour le téléchargement de l'image redimentionner.
       //if ($extension == ".tif" or $extension == ".tiff" or $extension == ".TIFF" or $extension == ".TIF") { header("Content-Type: image/tiff"); } // Indispenssable pour le téléchargement de l'image redimentionner.
       if ($extension == ".png" or $extension == ".PNG") { header("Content-Type: image/png"); } // Indispenssable pour le téléchargement de l'image redimentionner.
    N'y a-t-il pas moyen de faire plus propre ?

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 892
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 892
    Points : 16 345
    Points
    16 345
    Par défaut
    Un switch.

  3. #3
    Membre averti Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 342
    Points
    342
    Par défaut
    Grace à la fonction pathinfo() de php, tu peux récupérer l'extension de ton fichier que tu viens d'uploader pour traiter ensuite. Je te file deux fonctions très utiles^^.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <?php
    //Retourne toutes les infos d'un fichier dans un tableau en remplacant les index string par des index int
     
    	function Path_info($path_file) {
    		if(file_exists($path_file)) {
    			$infos = pathinfo($path_file);
     
    			$tab_infos[0] = $infos["basename"];
    			$tab_infos[1] = $infos["extension"];
    			$tab_infos[2] = $infos["dirname"];
    			$tab_infos[3] = $infos["filename"];
     
    			return $tab_infos;
    		}
    	}
    	function Verif_file($path_file, $type) {
    		if(file_exists($path_file)) {
    			$tab_infos = Path_info($path_file);
    			$extension = $tab_infos[1];
    			if(is_array($type)) {
    				$statut = 0;
    				foreach($type as $elem) {
    					if($extension == $elem) {
    						$statut = 1;
    					}					
    				}
    				if($statut == 1) {
    					return true;
    				}
    				else {
    					return false;
    				}
    			}
    			else {
    				if($extension != $type) {
    					return false;
    				}
    				else {
    					return true;
    				}
    			}
    		}
    	}
    ?>
    Voici un exemple d'utilisation: tu peux passer dans la fonction soit une variable ($extension = "jpg" ou un tableau comme ci-dessous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
        $tab_extension = array("jpg", "JPG", "pdf", "PDF");
        if(Verif_file("chemin/vers/ton/fichier", $tab_extension) == true) {
    	echo "Upload du fichier";
        }
        else {
    	echo "Le fichier n'est pas au bon format";
        }
    ?>

  4. #4
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Bonjour et merci beaucoup à vous deux


    J'ai opter plutôt pour le switch c'est plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
        switch ($extension) 
    	 {
           case ".jpg":
             header("Content-Type: image/jpeg");
           break;
    	       case ".jpeg":
             header("Content-Type: image/jpeg");
           break;
           case ".JPG":
             header("Content-Type: image/jpeg");
           break;	 
           case ".JPEG":
             header("Content-Type: image/jpeg");
           break;
           case ".gif":
             header("Content-Type: image/gif");
           break;
           case ".GIF":
             header("Content-Type: image/gif");
           break;
           case ".png":
             header("Content-Type: image/png");
           break;
           case ".PNG":
             header("Content-Type: image/png");
           break;	   
    	  }

  5. #5
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 892
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 892
    Points : 16 345
    Points
    16 345
    Par défaut
    Tu peux encore le simplifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    switch ( strtolower( $extension ) ) 
    {
       case ".jpg":
       case ".jpeg":
          header("Content-Type: image/jpeg");
       break;
     
       case ".gif":
          header("Content-Type: image/gif");
       break;
     
       case ".png":
          header("Content-Type: image/png");
       break;	   
    }

  6. #6
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Merci encore vraiment génial

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Les PC sont de plus en plus bruyants que faire
    Par plichtal dans le forum Ordinateurs
    Réponses: 260
    Dernier message: 23/12/2011, 12h28
  2. Réponses: 4
    Dernier message: 09/06/2008, 17h35
  3. tyoe d'entier plus long que 32 bits
    Par LIMODIN dans le forum MFC
    Réponses: 4
    Dernier message: 13/01/2004, 20h08
  4. Réponses: 8
    Dernier message: 31/10/2003, 16h21
  5. [Datareport] Etat plus large que le papier
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 09/09/2002, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo