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 :

Limiter le nombre de fichier d'un dossier à 1.


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut Limiter le nombre de fichier d'un dossier à 1.
    Bonsoir,

    Je suis entrain de créer un script permettant de stocker dans un dossier l'image qui va servir aux membres d'images perso.

    Seulement, j'aimerais ajoutée une restriction.

    - Je veux que dans le dossier, il ne se trouve qu'un seul fichier. Si jamais le membre envoie une photo par le biais du formulaire, ça remplacera la poto stocké par la photo envoyé.

    Sauf que j'ai vraiment aucune idée de la manière de comment m'y prendre. :s Voilà 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['envoyer_photo'])){
    	if($_FILES['photo']['error']){
    		switch($_FILES['photo']['error']){
    			case 1: 
    				$erreur = 'La photo dépasse la limte de 1 Mo';
    			break;
    			case 2:
    				$erreur = 'La photo dépasse la limte de 1 Mo';
    			break;
    			case 3:
    				$erreur = 'Une erreur est survenue durant le transfert';
    			break;
    			case 4:
    				$erreur = 'Veuillez renseigner une photo';
    			break;
     
    		}
    	}
    	else{
    		if(!is_dir('photos/')){
    			mkdir('photos', 0700);
    		}
    		if(!is_dir('photos/'.$pseudo)){
    			mkdir('photos/'.$pseudo, 0700);
    		}
    		if(!is_dir('photos/'.$pseudo.'/photo_profil')){
    			mkdir('photos/'.$pseudo.'/photo_profil', 0700);
    		}
    		$destination_photo = 'photos/'.$pseudo.'/photo_profil/';
    		move_uploaded_file($_FILES['photo']['tmp_name'],$destination_photo.$_FILES['photo']['name']);
    	}
    	if($erreur != ''){
    		echo '<span class="erreur_para">'.$erreur.'</span><br /><br />';
    	}
    }
    ?>
    <form method="post" enctype="multipart/form-data">
    	Photo de profil : <br />
    	<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
    	<input type="file" name="photo" style="margin-left:50px;"><br /><br />
    	<input type="submit" name="envoyer_photo"> 
    </form>
    Merci et bonne soirée.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Renomme la photo avec un nom fixe.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut
    En effet, c'est une bonne chose.

    Seulement, j'ai testé avec des photos de différentes extensions et elles ne se remplace pas. :s

    Seulement, je ne sais pas comment faire pour régler ce problème d'extension.

    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
     
    if(isset($_POST['envoyer_photo'])){
    	$extensions_valides = array('.jpg','.jpeg','.gif','.png');
    	$extension_upload = strtolower(strrchr($_FILES['photo']['name'],'.'));
    	if($_FILES['photo']['error']){
    		switch($_FILES['photo']['error']){
    			case 1: 
    				$erreur = 'La photo dépasse la limte de 1 Mo';
    			break;
    			case 2:
    				$erreur = 'La photo dépasse la limte de 1 Mo';
    			break;
    			case 3:
    				$erreur = 'Une erreur est survenue durant le transfert';
    			break;
    			case 4:
    				$erreur = 'Veuillez renseigner une photo';
    			break;
     
    		}
    	}
    	elseif(!in_array($extension_upload,$extensions_valides)){
    		$erreur = 'Extension du fichier non valide. Les extensions acceptés sont jpg, jpeg, gif, png';
    	}
    	else{
    		$nom = 'photo_profil';
    		if(!is_dir('photos/')){
    			mkdir('photos', 0700);
    		}
    		if(!is_dir('photos/'.$pseudo)){
    			mkdir('photos/'.$pseudo, 0700);
    		}
    		if(!is_dir('photos/'.$pseudo.'/photo_profil')){
    			mkdir('photos/'.$pseudo.'/photo_profil', 0700);
    		}
    		$destination_photo = 'photos/'.$pseudo.'/photo_profil/';
    		$nom = 'photo_profil'.$extension_upload;
    		move_uploaded_file($_FILES['photo']['tmp_name'],$destination_photo.$nom);
    	}
    	if($erreur != ''){
    		echo '<span class="erreur_para">'.$erreur.'</span><br /><br />';
    	}
    }

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Puisque tu n'as qu'un seul fichier par dossier, tu peux effacer tous les fichiers déjà présent.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut
    Pas faux, j'ai fais une petite recherche sur quelques regex, et j'ai pondu ça :

    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
     
    else{
    	$nom = 'photo_profil';
    	if(!is_dir('photos/')){
    		mkdir('photos', 0700);
    	}
    	if(!is_dir('photos/'.$pseudo)){
    		mkdir('photos/'.$pseudo, 0700);
    	}
    	if(!is_dir('photos/'.$pseudo.'/photo_profil')){
    		mkdir('photos/'.$pseudo.'/photo_profil', 0700);
    	}
    	$liste = scandir('photos/'.$pseudo.'/photo_profil');
    	unlink('photos/'.$pseudo.'/photo_profil/'.$liste[2].'');
    	$destination_photo = 'photos/'.$pseudo.'/photo_profil/';
    	$nom = 'photo_profil'.$extension_upload;
    	move_uploaded_file($_FILES['photo']['tmp_name'],$destination_photo.$nom);
    }
    if($erreur != ''){
    	echo '<span class="erreur_para">'.$erreur.'</span><br /><br />';
    }


    Le script fonctionne bien.

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

Discussions similaires

  1. Limite du nombre de fichiers dans un dossier sous Fedora4 ?
    Par arkofab dans le forum RedHat / CentOS / Fedora
    Réponses: 1
    Dernier message: 15/08/2007, 00h58
  2. Réponses: 2
    Dernier message: 05/01/2007, 12h27
  3. Réponses: 31
    Dernier message: 30/09/2006, 22h08
  4. [VBA-E]Compter nombre de fichier dans un dossier
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/05/2006, 14h36
  5. [MFC] Limitation du nombre de fichiers...
    Par chronos dans le forum MFC
    Réponses: 5
    Dernier message: 02/06/2004, 10h40

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