Doom67 Posté 30 Juillet 2011 Posté 30 Juillet 2011 Bonjour, j'ai mis en place un script d'upload d'image, le code de ce script est mit dans un ficher, Dans un autre fichier, je veux y afficher le contenu pour qu'on puisse uploader les images. Seulement il faut que je l'affiche 3 fois dans ma page pour pouvoir mettre 3 articles à jours en changeant les images à chaque fois, le problème c'est que lorsque je veux le mettre 2 fois j'ai ce code d'erreur: Fatal error: Cannot redeclare get_extension() (previously declared in /homepages/45/d237713167/htdocs/blue/admin/index.php:87) in /homepages/45/d237713167/htdocs/blue/admin/index.php on line 247 Je ne sais pas du tout comment faire pour appeler la fonction get_extension plusieurs fois.... Voici le contenu du fichier ou j'ai mis le script: <?php/** * Script d'upload d'image PHP * http://damienalexandre.fr/ * Novembre 2007 - v1.3 * http://damienalexandre.fr/Upload-d-image-en-PHP.html */ get_extension($nom) { $nom = explode(".", $nom); $nb = count($nom); return strtolower($nom[$nb-1]);}// --------------------- Options diverses //// Extensions images autorisé (pour le moment, que du jpeg)$extensions_ok = array('jpg', 'jpeg');// MimeType autorisé/* 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF (Ordre des octets Intel), 8 = TIFF (Ordre des octets Motorola), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF */$typeimages_ok = array(2);$taille_ko = 1024; // Taille en kilo octect (ko)$taille_max = $taille_ko*1024; // En octects$dest_dossier = 'img/'; // Creez ce dossier et chmoodez le !print_r($_FILES['photo']); if(isset($_FILES['photo'])) // Formulaire envoyé { // Les erreurs que PHP renvoi if($_FILES['photo']['error'] !== "0") { switch ($_FILES['photo']['error']) { case 1: $erreurs[] = "Votre image doit faire moins de $taille_ko Ko !"; break; case 2: $erreurs[] = "Votre image doit faire moins de $taille_ko Ko !"; break; case 3: $erreurs[] = "L'image n'a été que partiellement téléchargé."; break; case 4: $erreurs[] = "Aucun fichier n'a été téléchargé."; break; // Pas de 5, ne pas demander pourquoi (voir doc PHP) case 6: $erreur[] = "Un dossier temporaire est manquant."; break; case 7: $erreurs[] = "Ãchec de l'écriture du fichier sur le disque."; break; } } // getimagesize arrive à traiter le fichier ? if(!$getimagesize = getimagesize($_FILES['photo']['tmp_name'])) { $erreurs[] = "Le fichier n'est pas une image valide."; } // on vérifie le type de l'image if( (!in_array( get_extension($_FILES['photo']['name']), $extensions_ok )) or (!in_array($getimagesize[2], $typeimages_ok ))) { foreach($extensions_ok as $text) { $extensions_string .= $text.', '; } $erreurs[] = 'Veuillez sélectionner un fichier de type '.substr($extensions_string, 0, -2).' !'; } // on vérifie le poids de l'image if( file_exists($_FILES['photo']['tmp_name']) and filesize($_FILES['photo']['tmp_name']) > $taille_max) { $erreurs[] = "Votre fichier doit faire moins de $taille_ko Ko !"; } // copie du fichier si aucune erreur ! if(!isset($erreurs) or empty($erreurs)) { $dest_fichier = basename($_FILES['photo']['name']); $dest_fichier = strtr($dest_fichier, 'ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃà áâãÀåçÚéêëìÃîïðòóÎõöùúûÌÜÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); // un chtit regex pour remplacer tous ce qui n'est ni chiffre ni lettre par "_" $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier); // pour ne pas ecraser un fichier existant while(file_exists($dest_dossier . $dest_fichier)) { $dest_fichier = rand().$dest_fichier; }function redimage($img_src,$dst_w,$dst_h) { // Lit les dimensions de l'image $size = GetImageSize($img_src); $src_w = $size[0]; $src_h = $size[1]; // Teste les dimensions tenant dans la zone $test_h = round(($dst_w / $src_w) * $src_h); $test_w = round(($dst_h / $src_h) * $src_w); // Si Height final non précisé (0) if(!$dst_h) $dst_h = $test_h; // Sinon si Width final non précisé (0) elseif(!$dst_w) $dst_w = $test_w; // Sinon teste quel redimensionnement tient dans la zone elseif($test_h>$dst_h) $dst_w = $test_w; else $dst_h = $test_h; // Affiche les dimensions optimales echo "WIDTH=".$dst_w." HEIGHT=".$dst_h;} // copie du fichier if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier)) { $valid[] = "Image uploadé avec succés (<a href='".$dest_dossier . $dest_fichier."'>Voir</a>)"; } else { $erreurs[] = "Impossible d'uploader le fichier.<br />Veuillez vérifier que le dossier ".$dest_dossier." existe avec un chmod 755 (ou 777)."; } } }?><form method="POST" action="" enctype="multipart/form-data"><?phpif(!empty($erreurs)) { echo '<ul class="erreur">'; foreach($erreurs as $erreur) { echo '<li>'.$erreur.'</li>'; } echo '</ul>';}if(!empty($valid)) { echo '<ul class="validation">'; foreach($valid as $text) { echo '<li>'.$text.'</li>'; } echo '</ul>';}?> <fieldset> <legend>Envoi d'image</legend> <p> <label for="photo">Image : </label> <input type="file" name="photo" id="photo" /> </p> <p> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $taille_max; ?>" /> <input type="submit" name="envoi" value="Envoyer l'image" /> </p> </fieldset></form> Voici le contenu du fichier ou je veux faire apparaître le script 3 fois: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>test</title><meta name="keywords" content="blue, marble, design, theme, web, free templates, website templates, CSS, HTML" /><meta name="description" content="Blue Marble Theme is a free website template provided by templatemo.com" /><link href="templatemo_style.css" rel="stylesheet" type="text/css" /><link rel="stylesheet" href="nivo-slider.css" type="text/css" media="screen" /><script src="js/jquery.min.js" type="text/javascript"></script><script src="js/jquery.nivo.slider.js" type="text/javascript"></script></head><body><div id="templatemo_header_wrapper"> <div id="templatemo_header"> <div id="site_title"> <a href="http://www.templatemo.com"><span>YOUR TAGLINE GOES HERE</span></a> </div> <!-- end of site_title --> <div id="social_box"> <a href="http://www.facebook.com/profile.php?id=1261530221" target="_blank"><img src="images/facebook.png" alt="facebook" /></a><p> <h5>Rejoignez-nous</h5> </div> <div id="templatemo_menu"> <ul> <li><a href="index.html" class="current">Accueil</a></li> <li><a href="about.html">Acc?/a></li> <li><a href="gallery.html">Photos</a></li> <li><a href="gallery.html">Lostra</a></li> <li><a href="gallery.html">Le Cara?</a></li> <li><a href="contact.html">Contact</a></li> </ul> </div> <!-- end of templatemo_menu --> </div> <!-- end of header --></div> <!-- end of header wrapper --><div id="templatemo_main_wrapper"> <div id="templatemo_main"> <div id="templatemo_content"> <h2>Mise à jour du site</h2> <div class="cleaner h40"></div> <div id="contact_form"> <img src="images/edition1.gif" alt="Moussier Tombola" /> <form method="POST" action="add.php"><input type="text" name="titre" size="20" value="titre du site" maxlength="70"> <br><textarea name="url" size="20" value="url du site" maxlength="255"></textarea><br><input type="submit" value="Envoyer" name="envoyer"></form>[color="#006400"][size="5"][b]Ici je veux mettre le script[/b][/size][/color] <img src="images/edition2.gif" alt="Moussier Tombola" /><form method="POST" action="add2.php"><input type="text" name="titre" cols="200" value="titre du site" maxlength="70"> <textarea name="url" cols="200" value="url du site" maxlength="255"></textarea><br><input type="submit" value="Envoyer" name="envoyer"></form><br />[color="#006400"][size="5"][b]Ici je veux mettre le script[/b][/size][/color] <img src="images/edition3.gif" alt="Moussier Tombola" /><form method="POST" action="add3.php"><input type="text" name="titre" size="20" value="titre du site" maxlength="70"> <textarea name="url" size="20" value="url du site" maxlength="255"></textarea><br><input type="submit" value="Envoyer" name="envoyer"></form> [color="#006400"][size="5"][b]Ici je veux mettre le script[/b][/size][/color] <img src="images/edition4.gif" alt="Moussier Tombola" /><form method="POST" action="playlistupdate.php"><textarea name="url" size="20" value="url du site" maxlength="1000"></textarea><br><input type="submit" value="Envoyer" name="envoyer"></form> </div> <!-- end of content --> </div> <div id="templatemo_sidebar"> <div class="sidebar_box"> <h4>Recent comments</h4> <div class="recent_comment_box"> NE PAS OUBLIER DE CLIQUER SUR VALIDER LORSQUE LE CHAMP TEXTE EST REMPLIT!!!! </div> </div> </div> <div class="cleaner"></div> </div> <!-- end of main --></div> <!-- end of main wrapper --><div id="templatemo_footer_wrapper"> <div id="templatemo_footer"> <div class="cleaner"></div> </div> <!-- end of templatemo_footer --></div> <!-- end of templatemo_footer wrapper --></body></html> Merci à tout le monde pour votre aide qui me sera très precieuse.
Leonick Posté 30 Juillet 2011 Posté 30 Juillet 2011 ton script, tu l'appelles comment ? avec un include ou un require ? si c'est ça, il faut mettre à la place include_once ou require_once
Doom67 Posté 30 Juillet 2011 Auteur Posté 30 Juillet 2011 Bonsoir Leonick, j'ai déjà essayé mais cela ne marche pas...
captain_torche Posté 1 Août 2011 Posté 1 Août 2011 Ça ne marche pas dans quel sens ? Si c'est parce que le script ne s'exécute qu'une fois, c'est qu'il faut séparer l définition de la fonction (à n'insérer qu'une fois) de son appel (à insérer autant de fois que tu le souhaites).
ricardo Posté 18 Octobre 2011 Posté 18 Octobre 2011 bonjour, Ce message d'erreur exprime une erreur de syntaxe. Il montre que quand tu fais plusieurs inclusion de la page du script d'upload. Si tu l'inclue plusieurs fois de la manière dont tu le fais, le script trouve plusieurs fonctions différentes portant le même nom. Du coup il arrête tout et renvoie une erreur fatale. Je remarque également une incohérence au niveau de l'endroit de l'appel à ton script. C'est au moment de la validation de ton formulaire (sur la page add.php) qu'il faut l'utiliser et non juste après le code HTML de ton formulaire. Sur cette page tu n'as ni besoin de faire appel à ta page de fonctions, ni de l'utiliser.
SStephane Posté 18 Octobre 2011 Posté 18 Octobre 2011 include_once et require_once devraient fonctionner, si tu peux l'entourer, c'est moche mais ça fonctionnera : if(!function_exists('get_extension')){ function get_extension(){ // }}
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant