[résolu] Upload de fichiers (merci bcp)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [résolu] Upload de fichiers (merci bcp)

par Cyrano » 13 juin 2005, 17:43

[Résolu] pour de vrai là :?:

par Invité » 13 juin 2005, 17:23

Pas très doué boby79. Je t'ai pourtant dis "sois logique" mais il y a un détail qui t'a échappé. Quand tu ouvres une accolade, il y a une symétrie lors de la ermeture, mais tu ne peux ouvrir n'importe où non plus:

Tu as inséré un bloc à un endroit où s'exécure autre chose. C'est aussi à ça que sert l'indentation, c'Est pour la lecture plus facile du programme, sinon, on aurait même pas besoin de mettre les instruction sur plusieurs lignes, et ça fonctionnerait aussi bien.
        // copie du fichier
        if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier))
        {
            $message = "<p>Le fichier ". $_FILES['photo']['name'] ." a été correctement téléchargé vers ". $dest_dossier . $dest_fichier .".</p>\n";
        }
        else
        {
            $erreur = "Une erreur s'est produite, le téléchargement s'est interrompu.";
        }
    } /* <== Fin du if(!isset($erreur)) */
    /* Maintenant on peut insérer le bloc d'affichage de résultat */
    if(isset($erreur))
    {
        echo "<p>". $erreur ."</p>\n";
    }
    elseif(isset($message))
    {
        echo($message);
    }
} /* <== Fin du if(!isset($_FILES['photo'])) */
?>
Pas très doué, ça je savais :D

Bon, et bien merci beaucoup ça marche à merveille avec un fichier de 500Ko tout pile ca marche aussi, si je veux autoriser des photos de 1 Mo je mets "1024000" au lieu de "512000" c'est ça ?

Merci encore à toi :wink:

A bientot

par Cyrano » 13 juin 2005, 08:18

Pas très doué boby79. Je t'ai pourtant dis "sois logique" mais il y a un détail qui t'a échappé. Quand tu ouvres une accolade, il y a une symétrie lors de la ermeture, mais tu ne peux ouvrir n'importe où non plus:

Tu as inséré un bloc à un endroit où s'exécure autre chose. C'est aussi à ça que sert l'indentation, c'Est pour la lecture plus facile du programme, sinon, on aurait même pas besoin de mettre les instruction sur plusieurs lignes, et ça fonctionnerait aussi bien.
        // copie du fichier
        if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier))
        {
            $message = "<p>Le fichier ". $_FILES['photo']['name'] ." a été correctement téléchargé vers ". $dest_dossier . $dest_fichier .".</p>\n";
        }
        else
        {
            $erreur = "Une erreur s'est produite, le téléchargement s'est interrompu.";
        }
    } /* <== Fin du if(!isset($erreur)) */
    /* Maintenant on peut insérer le bloc d'affichage de résultat */
    if(isset($erreur))
    {
        echo "<p>". $erreur ."</p>\n";
    }
    elseif(isset($message))
    {
        echo($message);
    }
} /* <== Fin du if(!isset($_FILES['photo'])) */
?>

par boby79 » 13 juin 2005, 01:27

Image

:oops:

par boby79 » 12 juin 2005, 15:15

Code : Tout sélectionner

{ $message = "<p>Le fichier ". $_FILES['photo']['name'] ." a été correctement téléchargé vers ". $dest_dossier . $dest_fichier .".</p>\n"; }
Je pense que ca te pose problème de créer un bloc comme ca. Tu as du oublier un if ou quelque chose comme ca.
ok, je n'arrive pas à trouver l'erreur :? Merci de m'avoir répondu à nouveau smarties

par smarties » 12 juin 2005, 15:04

Code : Tout sélectionner

{ $message = "<p>Le fichier ". $_FILES['photo']['name'] ." a été correctement téléchargé vers ". $dest_dossier . $dest_fichier .".</p>\n"; }
Je pense que ca te pose problème de créer un bloc comme ca. Tu as du oublier un if ou quelque chose comme ca.

par boby79 » 12 juin 2005, 14:54

ça doit pas être au bon endroit :(
Parse error: parse error, unexpected T_ELSE in /home/clients/www/avds79.com/www/upload2.php on line 43

par boby79 » 12 juin 2005, 14:50

alros je pense que c'est comme cela :
<?php
if(isset($_FILES['photo']))
{
    // params
    unset($erreur);
    $taille_max = $_POST['taille_max'];
    $dest_dossier = 'photos/';
    // utilisez également des slashes sous windows : $dest_dossier = 'photos/';
    // vérifications
    if($_FILES["photo"]["type"] != "image/jpeg" && $_FILES["photo"]["type"] != "image/png" && $_FILES["photo"]["type"] != "image/gif")
    {
        $erreur = "Veuillez sélectionner un fichier de type png, gif ou jpg !";
    }
    elseif( file_exists($_FILES['photo']['tmp_name']) and $_FILES['photo']['size'] > $taille_max)
    {
        $erreur = "Votre fichier doit faire moins de ". $taille_max / 1024 ."Ko !";
    }
    // copie du fichier
    if(!isset($erreur))
    {
        $dest_fichier = basename($_FILES['photo']['name']);
        // formatage nom fichier
        // enlever les accents
        $dest_fichier = strtr($dest_fichier,
        'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
        'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
        // remplacer les caracteres autres que lettres, chiffres et point par _
        $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
        // copie du fichier
        if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier))

if(isset($erreur))
{
    echo "<p>". $erreur ."</p>\n";
}
elseif(isset($message))
{
    echo($message);
} 
        {
            $message = "<p>Le fichier ". $_FILES['photo']['name'] ." a été correctement téléchargé vers ". $dest_dossier . $dest_fichier .".</p>\n";
        }
        else
        {
            $erreur = "Une erreur s'est produite, le téléchargement s'est interrompu.";
        }
    }
}
?>
je me suis trompé ?

par Cyrano » 12 juin 2005, 14:28

Réfléchis et sois logique: C'est forcément quelque part APRÈS la partie tratiement :est-ce que ça te semble cohérent ?

Sois logique en tous temps, les choses se déroulent dans un ordre précis, à toi d'intercaller les éléments dont tu as besoin pour obtenir un résultat à un moment précis d'un script.

par boby79 » 12 juin 2005, 14:13

Donc j'ai bien relu tout ce que tu as marqué, il faut que je mette cela si j'ai bien compris :
<?php
if(isset($erreur))
{
    echo "<p>". $erreur ."</p>\n";
}
elseif(isset($message))
{
    echo($message);
}
?> 
Par contre j'ai pas encore compris où il faut le mettre dans la page :oops:

dsl vraiment dsl :(

par Cyrano » 12 juin 2005, 13:49

donc je remplace $erreur par $message :?:
Tu ne remplace pas, tu rajoutes., regarde le script que j'ai mis plus haut, ça devrait être très évident, enfin il me semble, j'écris pas en chinois... :-k

par boby79 » 12 juin 2005, 13:41

y a des balises php c'est pas pour rien ...
Désolé, je suis nouveau je n'avais pas vu, j'ai fait les modifs :wink:

par boby79 » 12 juin 2005, 13:38

donc je remplace $erreur par $message :?:

Merci de m'avoir répondu

par Cyrano » 12 juin 2005, 13:37

Si tu as bien regardé le script, pour le message de confirmation, ce n'est pas $erreur mais $message qu'il faut faire afficher, c'est pour ça que j'avais rajouté un second test juste avant le formulaire.

par fab » 12 juin 2005, 13:31

y a des balises php c'est pas pour rien ...