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 :

Probleme de conditions


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Par défaut Probleme de conditions
    bonjour j'ai un script avec plusieurs conditions, mais il y'en a une qu'il ignore même si elle est mauvaise. Elle concerne l'extension d'un fichier à uploader.
    Voici mon code :
    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
     
    .......
    if(isset($_FILES['html']) && $_FILES['html']!='')
    	{
    		$filename = $_FILES['html']['name'];
    		$userfile_type= $_FILES['html']['type'];
    		$upfile = 'pictures/'.$filename;
    		}
    		elseif ($userfile_type != (('application/pdf')||('application/msdoc')))
    			{
    			print 'Le fichier n\'a pas une extension valide';
    			exit;
    			}else{
    			move_uploaded_file($_FILES['html']['tmp_name'], 
                         $upfile); 
    					 }
      	$sql = "insert into cours 
                (page, headline,story_text , created, modified, picture, userid)
              values 
                ('$page','$headline', '$story_text', $time, $time, '$filename', '"
                 .$_SESSION['userid']."')";
    	}
    .....
    C'est au niveau du "elseif" que mon script derappe, il devrait empecher l'upload mais il ne fionctionne pas
    Merci pour votre aide :-)

  2. #2
    Membre confirmé Avatar de sanosuke85
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 206
    Par défaut
    oyo

    de mes souvenirs c'est l'extension du fichier le ['type'] qui est pris en compte ; ensuite j'ai du mal avec ton code (je ne connais pas encore l'utilisation des || ^^) mais je me demande si 'application/pdf' est bon justement... Pour moi ça pourrait provenir de là... fais un echo de tes deux variables pour les comparer (type de ton fichier et ce qui doit être différent de l'application pdf)...

    En espérant avoir été assez clair et utile ^^

  3. #3
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif ($userfile_type != 'application/pdf' || $userfile_type !=  'application/msdoc')
    Ou bien ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $allowed_types = array('application/pdf', 'application/msdoc');
    ...
    ...
    elseif (!in_array($userfile, $allowed_types)) {
    ...

    Sinon sanosuke85 tu fais de l'objet mais tu connais pas || ...

  4. #4
    Membre éclairé Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Par défaut
    Mr.N cela ne me donne rien avec aucune des 2 propositions

  5. #5
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Et genre avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(isset($_FILES['html']) && $_FILES['html']!='') 
       { 
          $filename = $_FILES['html']['name']; 
          $ext = substr(strstr($filename, '.'), 1);
          $upfile = 'pictures/'.$filename; 
          } 
          elseif ($ext != 'doc' or $ext != pdf)

  6. #6
    Membre éclairé Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Par défaut
    Je vous mets tout le code.
    Donc j'ai 2 conditions principales :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['story']) && $_POST['story']!='')
    ==> C'est un UPADATE
    A l'interieur de cette condition, si le $_FILES est defini alors on remplace l'ancien fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (isset($_FILES['html']['name'])&&($_FILES['html']['name']!='')){
    Et pareil si c'est un INSERT.
    Voici le code :
    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
    if (isset($_POST['story']) && $_POST['story']!='') 
    {   // update
    $story = $_POST['story'];
     	 if (isset($_FILES['html']['name'])&&($_FILES['html']['name']!='')){
    		$filename = $_FILES['html']['name'];
    		$upfile = 'pictures/'.$filename;
                        move_uploaded_file($_FILES['html']['tmp_name'], $upfile);
       		$sql = "SELECT picture FROM cours WHERE id=$story";
      		$result = mysql_query($sql, $conn);
      		$num_results=mysql_num_rows($result);
     		for ($i=0; $i<$num_results; $i++)
      		{
      		$row=mysql_fetch_array($result);
      		}
      		if(!$result)
      		{
      		$erreur ="problème";
      		}
      		else
      		{
      		$fichier1="pictures/$row[0]";
    		if(file_exists($fichier1))
    		{
    		unlink($fichier1);
    		}
    		}                 
    		$sql = "update cours
              set headline = '$headline', 
                  story_text = '$story_text',
                  page = '$page',
                  modified = $time,
    			  picture = '$filename'
              where id = $story";
    		}
    		else{
    		$sql = "update cours
              set headline = '$headline', 
                  story_text = '$story_text',
                  page = '$page',
                  modified = $time
    			 where id = $story";
    		}
    ==> là cela gère l'UPDATE
    et cela continu pour L'INSERT :
    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
    }else {         
    	// insert
    	if(isset($_FILES['html']) && $_FILES['html']!='')
    	{
    		$filename = $_FILES['html']['name'];
    		$userfile_type= $_FILES['html']['type'];
    		$upfile = 'pictures/'.$filename;
    		$allowed_types = array('application/pdf', 'application/msdoc'); 
     
    		}
    		elseif (!in_array($userfile, $allowed_types)) { 
     
    			print 'Le fichier n\'a pas une extension valide';
    			exit;
    			}else{
    			move_uploaded_file($_FILES['html']['tmp_name'], 
                         $upfile); 
    					 }
      	$sql = "insert into cours 
                (page, headline,story_text , created, modified, picture, userid)
              values 
                ('$page','$headline', '$story_text', $time, $time, '$filename', '"
                 .$_SESSION['userid']."')";
    	}
     
    	if(!isset($_FILES['html']))
    	{
    $sql = "insert into cours 
                (page, headline,story_text , created, modified, picture, userid)
              values 
                ('$page','$headline', '$story_text', $time, $time, 'NULL', '"
                 .$_SESSION['userid']."')";
     
    }
    	$result = mysql_query($sql, $conn);
    	if (!$result) {
     	 print "Erreur d'exécution <pre>$sql</pre>";
      	print mysql_error();
      	exit;
    	}
    	echo $_FILES['html'];

  7. #7
    Membre éclairé Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Par défaut
    cela me donne rien Anduriel

  8. #8
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Il faut sortir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $allowed_types = array('application/pdf', 'application/msdoc');
    du if
    T?u dois le mettre au tout début de ton script, voir de ton application.

    De plus affiche le type qui est rejetté ça permet de de mieux debugger

  9. #9
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Pourtant avec mon code ça te retourne l'extension... Tu as fais un echo de $ext pour voir?

  10. #10
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Juste mon grain de sel (qui ne résoud pas le problème) pour dire que :
    1. faire confiance au mime_type envoyer par le navigateur est une mauvaise chose car parfois faux
    2. faire confiance à l'extension est pire à mon avis

  11. #11
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Oui d'un coté c'est vrai s'il est renommé...

  12. #12
    Membre éclairé Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Par défaut
    même en le sortant du if cela ne me donne rien !
    Alors comment faire pour autoriser que certains fichiers ?

Discussions similaires

  1. Probleme requete condition
    Par vanou dans le forum ASP
    Réponses: 10
    Dernier message: 15/06/2006, 16h41
  2. Réponses: 15
    Dernier message: 05/05/2006, 09h13
  3. [AS] Probleme de condition
    Par Treuze dans le forum Flash
    Réponses: 8
    Dernier message: 25/03/2006, 15h27
  4. probleme de condition et de boucle
    Par avantoux dans le forum ASP
    Réponses: 5
    Dernier message: 23/03/2006, 08h59
  5. probleme gestion condition switch - case
    Par DarkMax dans le forum Langage
    Réponses: 5
    Dernier message: 07/09/2005, 14h25

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