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 :

modifier le nom de la photo uploadée


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut modifier le nom de la photo uploadée
    Bonjour à tous

    J'utilise ce script pour uploader une photo sur mon serveur, il fonctionne très bien

    j'aimerai que l'orsque la personne upload une photo, que cette photo ait toujours le nom "photo_1.jpg"

    est-il possible en modifiant ce script

    Merci vous

    Code html : 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
    46
    47
    48
    49
    50
    51
    52
    53
    54
       <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta charset="UTF-8">
        <title>Formulaire d'upload de fichiers</title>
    </head>
    <body>
    <form action="admin3.php" method="post" enctype="multipart/form-data">
      <label for="fileUpload"></label>
      <input type="file" name="team" id="fileUpload">
            <input type="submit" name="submit" value="Upload">
    </form>
    </body>
    </html>
     
     
    <?php
    // Vérifier si le formulaire a été soumis
    if($_SERVER["REQUEST_METHOD"] == "POST"){
        // Vérifie si le fichier a été uploadé sans erreur.
        if(isset($_FILES["team"]) && $_FILES["team"]["error"] == 0){
            $allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
            $filename = $_FILES["team"]["name"];
            $filetype = $_FILES["team"]["type"];
            $filesize = $_FILES["team"]["size"];
     
     
            // Vérifie l'extension du fichier
            $ext = pathinfo($filename, PATHINFO_EXTENSION);
            if(!array_key_exists($ext, $allowed)) die("Erreur : Veuillez sélectionner un format de fichier valide.");
     
     
            // Vérifie la taille du fichier - 5Mo maximum
            $maxsize = 5 * 1024 * 1024;
            if($filesize > $maxsize) die("Error: La taille du fichier est supérieure à la limite autorisée.");
     
     
            // Vérifie le type MIME du fichier
            if(in_array($filetype, $allowed)){
                // Vérifie si le fichier existe avant de le télécharger.
                if(file_exists("../images/" . $_FILES["team"]["name"])){
                    echo $_FILES["team"]["name"] . " existe déjà.";
                } else{
                    move_uploaded_file($_FILES["team"]["tmp_name"], "../images/team/" . $_FILES["team"]["name"]);
                    echo "";
                } 
            } else{
                echo "Error: Il y a eu un problème de téléchargement de votre fichier. Veuillez réessayer."; 
            }
        } else{
            echo "Error: " . $_FILES["team"]["error"];
        }
    }
    ?>

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Le choix du nom se fait via l'instruction move_uploaded_file. Maintenant je m'interroge sur le bien fondé de ta demande, car que se passe-t-il lorsque plusieurs photos sont uploadées successivement? La précédente sera écrasée puisque les noms sont identiques.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut
    oui c'est le but en fait je vais donner l'oportunité a une personne d'uploader la photo mais sans se prendre la tete du changement de nom

    du coup je fais comment

  4. #4
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 167
    Points
    17 167
    Par défaut
    @UDSP50
    Citation Envoyé par CosmoKnacki Voir le message
    Le choix du nom se fait via l'instruction move_uploaded_file. Maintenant je m'interroge sur le bien fondé de ta demande, car que se passe-t-il lorsque plusieurs photos sont uploadées successivement? La précédente sera écrasée puisque les noms sont identiques.
    Dans la réponse/proposition d'informations, move_uploaded_file est un lien, cliquez dessus!
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut
    Ah merci

    J'avais pas vu

    je vais voir si j'arrive a m'en sortir

    Merci

  6. #6
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    C'est vrai que j'ai tendance à faire des liens autour de balises code et du coup ça ne saute pas aux yeux car il n'est pas souligné et que la couleur reste proche. Il faudrait que je trouve un autre système mais je ne vois pas trop quoi faire.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  7. #7
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 386
    Points : 788
    Points
    788
    Par défaut
    Bonjour,

    attention à ce genre de vérifications simpliste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    if(!array_key_exists($ext, $allowed)) die("Erreur : Veuillez sélectionner un format de fichier valide.");
    Pareil dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
    $filetype = $_FILES["team"]["type"];
    //...
    if(in_array($filetype, $allowed)){ 
    //...
    Ceci devrait être configuré dans le runtime, plutôt qu'après l'opération d'analyse de la requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $maxsize = 5 * 1024 * 1024;
     if($filesize > $maxsize) die("Error: La taille du fichier est supérieure à la limite autorisée.");
    Vous allez avoir de mauvaises surprises.

    Bonne journée.

  8. #8
    Membre éclairé
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juin 2014
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2014
    Messages : 417
    Points : 834
    Points
    834
    Par défaut
    Je souscris aux propos de unanonyme.

    La façon de vérifier que le poids de l'image n'est pas supérieur à 5 Mo, c'est un peu n'importe quoi.
    Il faut vérifier que $_FILES["team"]["size"] ne soit pas supérieur à 5000000.

    Selon sa compression, une image Jpeg peut pour les même dimensions avoir un poids très différent.

    Tu te simplifierais l'écriture en faisant quelque chose comme $imageteam = $_FILES["team"];.

    Pour donner un nom unique à chaque image uploadée, tu peux te servir de la fonction uniqid()
    Cordialement

  9. #9
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 386
    Points : 788
    Points
    788
    Par défaut
    Bonjour,

    attention avec uniq_id, cette dernière porte mal son nom.

    Il existe tout un tas de situations dans lesquels,
    cette dernière, utilisée seule,
    ne donnera pas entière satisfaction.

    https://www.php.net/manual/fr/function.uniqid
    Avertissement

    Cette fonction ne garantie pas l'unicité des valeurs de retour.
    Il vaut mieux préférer la construction d'un nom
    unique via la topologie des données et de l'environnement (grosso modo, on ne va pas rentrer dans le détail des cas d'usage à forte charge ici).

    $team_id . uniq_id()

    Je notes au passage que malheureusement le site ne dispose pas
    d'un tutoriel adéquat pour la sécurité des uploads de fichier en php,
    pas une critique, juste un constat.
    Le site PHP.net sur ce sujet n'est pas non plus satisfaisant.

    https://antoine-herault.developpez.c...ls/php/upload/
    https://thierrylhomme.developpez.com/php/php_secure/
    https://www.php.net/manual/fr/security.php

    Je renvoi le lecteur intéressé vers la fiche OWASP
    https://cheatsheetseries.owasp.org/c...eat_Sheet.html

    Très particulièrement dans les liens qui y sont disséminés.

    Bonne journée.

Discussions similaires

  1. Modifier le "nom machine" (hostname)
    Par hawax dans le forum Réseau
    Réponses: 6
    Dernier message: 06/03/2009, 10h50
  2. [Upload] Code upload de fichier : modifier le nom
    Par Emotion dans le forum Langage
    Réponses: 2
    Dernier message: 08/09/2007, 14h31
  3. [Upload] Upload de photo et modifier le nom
    Par HwRZxLc4 dans le forum Langage
    Réponses: 14
    Dernier message: 08/05/2006, 21h24
  4. Modifier le nom d'une table.
    Par Asdorve dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/01/2005, 17h45
  5. Modifier le nom d'une base de donnée avec erreur sy
    Par mmn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/11/2003, 10h12

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