Page 1 sur 1

Upload de fichier / Besoin de conseils....

Posté : 06 févr. 2007, 17:12
par kweb
Salut tous le monde !

Débutant avec php, je suis entrains de réaliser des exercices en locale avec easyPhp pour me faire la main et bien comprendre le fonctionnement …

J’aurais besoin de conseil pour l’intégration du code que j’ai récupéré sur le tuto concernant l’upload de fichier, dans une de mes pages.

J’ai créé un formulaire « index.php » ou se trouvent plusieurs éléments dont l’upload de fichier. L’action de ce formulaire va pointer sur une page « confirmation.php » qui contient le code pour insérer les données dans ma base de donnée.

Ma question :

1 – le code php qui gère l’upload de fichier, dois-je le mettre dans ma page du formulaire lui-même ou bien dans ma page « confirmation.php » ou se trouve déjà le code qui va envoyer les infos dans la base de donnée ?



CODE PHP QUI GERE L'UPLOAD DE FICHIER

Code : Tout sélectionner

<?php if(isset($_FILES['PDF'])) // si la variable PDF existe { // parametre unset($erreur); $extensions_ok = array('pdf'); $taille_max = 4000000; $dest_dossier = 'PDF/'; // vérifications if( !in_array( substr(strrchr($_FILES['PDF']['name'], '.'), 1), $extensions_ok ) ) { $erreur = 'Vous ne pourvez soumettre qu\'un fichier PDF, merci !'; } elseif( file_exists($_FILES['PDF']['tmp_name'])and filesize($_FILES['PDF']['tmp_name']) > $taille_max) { $erreur = 'Votre fichier PDF doit faire moins de 4 Méga !'; } // copie du fichier if(!isset($erreur)) { $dest_fichier = basename($_FILES['PDF']['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 move_uploaded_file($_FILES['PDF']['tmp_name'], $dest_dossier . $dest_fichier); } } ?>

merci

Posté : 06 févr. 2007, 17:29
par mere-teresa
Tu as le choix, je te conseille de le mettre dans la page confirmation.php pour débuter, c'est plus clair de séparer le HTML du PHP.

Posté : 06 févr. 2007, 17:33
par Maitrepylos
Bonjour,

Comme j'imagine que ta page de confirmation sert à CONFIRMER toutes les données que tu veux recevoir, met ce code dans ta page confirmation.php.

Tu pourrais aussi en faire une fonction ou une classe dans une page séparé et l'inclure dans ta page confirmation.

Comme ça tu appelles la fonction avec ton fichier en paramètres, et tu vérifie si c'est bon où pas

Posté : 06 févr. 2007, 17:41
par kweb
OK, mais encore une question alors :
si je déplace le code dans l'autre page, lorsque je vais validé mon formulaire la variable $erreur n'existera pas donc il n'y auras aucune detection et donc aucun message d'erreur sur la page du formulaire ?

Posté : 06 févr. 2007, 17:46
par mere-teresa
OK, mais encore une question alors :
si je déplace le code dans l'autre page, lorsque je vais validé mon formulaire la variable $erreur n'existera pas donc il n'y auras aucune detection et donc aucun message d'erreur sur la page du formulaire ?
Bien vu :wink:
c'est pour cette raison que certains mettent le form HTML et le PHP dans la même page.
Une solution de contournement pourrait être de renvoyer $erreur en GET, de le stocker en session, avant de repasser sur la page de form HTML.

Posté : 06 févr. 2007, 17:49
par Maitrepylos
unset($erreur);
cela détruit la variable $erreur .

Si tu rentre dans un des conditions (fichier trop grand, fichier qui n'est aps PDF).

Alors la variable erreur sera à nouveau initialisé.

dans le dernier if
if(!isset($erreur)) 
Si la variable $erreur n'existe pas alors on gére le fichier