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 :

[PHP-JS] Selon [Switch] (Problème)


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut [PHP-JS] Selon [Switch] (Problème)
    Salut

    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
    <?php 
     
    // Dossier de destination du fichier
    $folder = "C:/Documents and Settings/Easy/Bureau/SiteWeb/www/dep/";
     
    // Tableau array des différents types
     
    $allowed_types = array("application/pdf");
     
    $fsize = $HTTP_POST_FILES['fichier']['size'];
    $fname = $HTTP_POST_FILES['fichier']['name'];
    $ftype = $HTTP_POST_FILES['fichier']['type'];
    $fsize = $HTTP_POST_FILES['fichier']['size'];
    $ftmp = $HTTP_POST_FILES['fichier']['tmp_name'];
     
    echo "Taille : $fsize";  echo "<br>";
    echo "Nom Fichier : $fname";  echo "<br>";
    echo "Type : $ftype";  echo "<br>";
    echo "Chemin : $ftmp";  echo "<br>";
     
    if(copy($ftmp,''.$folder.''.$fname.'')) {$error = 0;}
     
    if(!in_array($ftype, $allowed_types)){$error = 1;}
     
    switch($error){
     
    case'1':
    echo("Format de fichier incorrecte.");
    break;
    case'0':
    echo("Copie réussie");
    break;
    }
    ?>
    Lorsque je sélectionnes un fichier PDF , je dois avoir le message "copie réussie" , c'est le cas donc ça va.

    Par contre quand c'est un autre type de fichier. J'ai affiché "Format incorrecte" mais la copie se réalise quand meme...

    Cordialement

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Par défaut
    bonsoir,

    c'est tout à fait normal, ton code n'est pas logique. En effet, tu teste le type de fichier APRES avoir copier ce dernier ! Il faut le faire avant !
    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
     
    <?php   
    // Dossier de destination du fichier 
    $folder = "C:/Documents and Settings/Easy/Bureau/SiteWeb/www/dep/";   
    // Tableau array des différents types   
    $allowed_types = array("application/pdf");   
    $fsize = $HTTP_POST_FILES['fichier']['size']; 
    $fname = $HTTP_POST_FILES['fichier']['name']; $ftype = $HTTP_POST_FILES['fichier']['type']; 
    $fsize = $HTTP_POST_FILES['fichier']['size']; 
    $ftmp = $HTTP_POST_FILES['fichier']['tmp_name'];   
     
    echo "Taille : $fsize"; 
    echo "<br>"; 
    echo "Nom Fichier : $fname"; 
    echo "<br>"; 
    echo "Type : $ftype"; 
    echo "<br>"; 
    echo "Chemin : $ftmp"; 
    echo "<br>";
     
    if(!in_array($ftype, $allowed_types))
    {
         echo("Format de fichier incorrecte."); 
    }  
    else
    {
          if(copy($ftmp,''.$folder.''.$fname.'')) 
                echo("Copie réussie"); 
    }
    ?>
    en plus, comme tu peux le voir, le switch est superflue

  3. #3
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Ok merci.

    C'est qu'en fait , je comptais intégrer plusieurs cas.

    Dont la vérification (si le fichier existe , ainsi que sa taille)

    Je croyais ça fesait mieux que d'intégrer plusieurs si. Mais bon si cette solution marche , je vais faire abstraction de l'esthétique.

  4. #4
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Par défaut
    Salut
    Autre chose, dans ton code, tu spécifies des codes erreurs par des entiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(copy($ftmp,''.$folder.''.$fname.'')) {$error = 0;}
     
    if(!in_array($ftype, $allowed_types)){$error = 1;}
    Mais dans ton switch tu les traites comme des strings. C'est un peu puriste, mas ça évite des surprises:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    switch($error){
    case'1':
    echo("Format de fichier incorrecte.");
    break;
    case'0':
    echo("Copie réussie");
    break;
    }
    Donc enlèves les quotes dans les case de ton switch, c'est plus propre

  5. #5
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Oui mathieugamin , j'ai retiré les quote , mais cela n'as rien changé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if($fsize > $MAX_FILE_SIZE)
    	{echo("Fichier trop volumineux");}	
    elseif
     
    	(!in_array($ftype, $allowed_types))
    	echo("Format incorect");
     
    elseif 
    	(!file_exists($folder."m_".$fname))
    	echo("existant");
     
    elseif
    	(copy($ftmp,''.$folder.''.$fname.'')) 
    	echo("OK");
    J'ai fais ça et il y a un problème lors de la copie (cela m'affiche existant)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Par défaut
    Hum, si le fichier n'existe pas , alors on affiche qu'il existe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    elseif 
    	(!file_exists($folder."m_".$fname))
    	echo("existant");
    Tu ne devrais pas plutôt mettre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    elseif 
    	(file_exists($folder."m_".$fname))
    	echo("existant");

Discussions similaires

  1. Réponses: 14
    Dernier message: 12/04/2007, 20h09
  2. [MySQL] exécuter un script php en commande linux : problème sur les fonctions mysql
    Par dr_octopus74 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/03/2007, 16h34
  3. aide pour fonction switch problème
    Par mitherkiller dans le forum C
    Réponses: 10
    Dernier message: 02/03/2007, 15h03
  4. [EasyPHP] Pour débuter avec PHP j'ai un problème
    Par Claude l'ancien dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 14/02/2007, 11h37
  5. Réponses: 6
    Dernier message: 19/10/2006, 10h45

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