Php problème insertion script d'upload d'image dans interface admin

cs_veebee Messages postés 4 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 5 mai 2009 - 4 mai 2009 à 16:02
rafplus Messages postés 7 Date d'inscription jeudi 17 septembre 2009 Statut Membre Dernière intervention 4 octobre 2009 - 17 sept. 2009 à 10:41
Bonjour, à tous,
J'ai fait le tour des posts "upload" et "transfert d'images" sans trouver une solution à mon problème, sur lequel je planche maintenant depuis plusieurs jours.
J'ai monté une interface admin sans upload d'images, qui fonctionne.
Parallèlement, j'ai un script d'upload d'images qui fonctionne aussi séparément.
Lorsque je veux insérer l'upload dans l'interface admin l'upload d'image ne fonctionne plus.
Initialement j'avais essayé d'inserer le formulaire d'upload dans le formulaire de modif de l'interface admin, mais ça n'a pas marché du fait de l'impossibilité d'imbriquer des formulaires.
J'ai donc inséré les 2 lignes d'upload dans le formulaire de l'interface admin pour qu'il n'y ait qu'un seul formulaire, mais l'upload ne fonctionne toujours pas.
Si quelqu'un a une idée, elle est la bienvenue...

Voici le code :

<?php

// JE PASSE LA CONNEXION AU SERVEUR ET A LA BASE DE DONNEES, CA FONCTIONNE

if($_POST['fichier'] && $_FILES['fichier']['error']==0) // test des variables POST et FILES, (meme chose que is isset)
        {
        $tabinfo=pathinfo($_FILES['fichier']['name']);              // extrait les infos fichiers
        //echo 'nom_fichier : ',$tabinfo['basename'];
        // extraction base nom fichier
        $file = $tabinfo['basename'];
        $var = explode(".",$file);
        $nb = count($var)-1;
        $base_nom_fichier= substr($file, 0, strlen($file)-strlen($var[$nb])-1);
        //echo '
base nom fichier : ',$base_nom_fichier;
       
        $extension=strtolower($tabinfo['extension']);         // creation variable extension pour recup element extension du pathinfo
        //echo '
extension : ',$extension,'
';
        $tab_extensions_autorisees=array('jpeg','jpg','png','gif'); // creation tableau avec liste extensions autorisées
        if(in_array($extension,$tab_extensions_autorisees))        // comparaison extension avec tableau
            {   
                //UPLOAD SUR LE SERVEUR
                if( ftp_put($connexion,'/www/mon_site.com/images/'.$_FILES['fichier']['name'],$_FILES['fichier']['tmp_name'],FTP_BINARY))
                    {
                    $nom_fichier_transfere=$_FILES['fichier']['name'];
                    echo 'Upload effectue. Nom du fichier telecharge : ',$nom_fichier_transfere;
                    }
                else{echo 'Echec de l\'upload';}   
            }
        else
            {echo 'Ce fichier n\'est pas un fichier image';}
        }

elseif( isset($_FILES['fichier']) && $_FILES['fichier']['error']==1)
    {echo 'fichier trop gros, transfer a echoue';}
elseif( isset($_FILES['fichier']) && $_FILES['fichier']['error']==2)
    {echo 'fichier trop gros, transfer a echoue';}
elseif( isset($_FILES['fichier']) && $_FILES['fichier']['error']==3)
    {echo 'transfer partiel, svp recommencez';}
elseif( isset($_FILES['fichier']) && $_FILES['fichier']['error']==4)
    {echo 'choisissez un fichier';}

// JE VOUS PASSE LE REDIMENSIONNEMENT DE L'IMAGE, QUI FONCTIONNE AUSSI
ftp_close($connexion); // ferme la connexion ftp
}

// JE VOUS VOUS PASSE AUSSI LE CODE D'INSERTIOND DES RUBRIQUES DANS LA BASE DE DONNEES, CA FONCTIONNE AUSSI

// FORMULAIRE ECOURTE CAR BEAUCOUP DE CHAMPS
?>
                            <form enctype="multipart/form-data" id="form2" form name="form2" action="modif.php" method="post">
                            
                            <label for="titre_rubrique">TITRE PAGE : </label>
                            " />

                           
                            <!-- MON CHAMPS POUR UPLOADER L'IMAGE -->
                            <label for="image_rub1" class="calagelabel">Image 1 </label>
                           
                           
                           

                           
                            <label for="texte_rub1">TEXTE 1 </label>
                            <textarea name="texte_rub1" cols="97" rows="3" id="texte_rub1" class="text mce"><?php echo $table_rub_detail['texte_rub1']?></textarea>

               
                                                     
                            <label for="texte_rub7">TEXTE 9 </label>
                            <textarea name="texte_rub9" cols="97" rows="3" id="texte_rub9" class="text mce"><?php echo $table_rub_detail['texte_rub9']?></textarea>

           
                            "/>
                            "/>
                            <label for="modifier">
                           
                            </fieldset>
                            </form>
                           

                            <?php
                        }// FIN DU FORMULAIRE

8 réponses

alexflex25 Messages postés 106 Date d'inscription vendredi 29 septembre 2006 Statut Membre Dernière intervention 6 mars 2012
4 mai 2009 à 23:23
if(in_array($extension,$tab_extensions_autorisees))        // comparaison extension avec tableau
            {   
                //UPLOAD SUR LE SERVEUR
   
            if(
ftp_put($connexion,'/www/mon_site.com/images/'.$_FILES['fichier']['name'],$_FILES['fichier']['tmp_name'],FTP_BINARY))

                    {
                    $nom_fichier_transfere=$_FILES['fichier']['name'];
                    echo 'Upload effectue. Nom du fichier telecharge : ',$nom_fichier_transfere;
                    }
                else{echo 'Echec de l\'upload';}   
            }
        else
            {echo 'Ce fichier n\'est pas un fichier image';}
        }

remplace le code en rouge par ceci

move_uploaded_file($_FILES['fichier']['tmp_name'], '/var/www/fichiers/'.$_FILES['nom_du_fichier']['name'])
0
alexflex25 Messages postés 106 Date d'inscription vendredi 29 septembre 2006 Statut Membre Dernière intervention 6 mars 2012
4 mai 2009 à 23:24
0
cs_veebee Messages postés 4 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 5 mai 2009
5 mai 2009 à 10:01
Bonjour et merci Alexflex25.
Je viens tout juste de trouver le bug : en fait c'était le test sur la variable de déclenchement du script d'upload qui ne passait pas ($_POST['fichier']). Ca c'est un truc qui m'épate, parce que dans certains cas ça fonctionne très bien (utiliser le nom d'un des champs du formulaire) et dans d'autres pas. Bref en changeant la ligne :
if($_POST['fichier'] && $_FILES['fichier']['error']==0),
par :
if($_POST['modif_page'] && $_FILES['fichier']['error']==0),
ça tourne !

Par contre ta suggestion m'interpelle : pourrais-tu me dire pourquoi tu préfères utiliser la fonction :
"move_uploaded_file()" plutôt que "ftp_put()"

Merci encore

Veebee
0
alexflex25 Messages postés 106 Date d'inscription vendredi 29 septembre 2006 Statut Membre Dernière intervention 6 mars 2012
5 mai 2009 à 11:25
"move_uploaded_file()" --> je suis certain du fonctionnement.





"ftp_put()"

--> je n'es jamais utilisé.

C'était juste une suggestionpour cibler le problème.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_veebee Messages postés 4 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 5 mai 2009
5 mai 2009 à 11:44
ok.
je profite de t'avoir "sous la souris" pour te solliciter encore ::
J'ai jusqu'à 9 images à uploader sur mon interface admin.
J'ai donc fait une boucle autour de mon script d'upload :
for($f=1 ; $f<=9 $f++){script d'upload;}
Dans mon script d'upload j'ai modifier tous les éléments ('fichier') en ('fichier'.$f)
et dans mon formulaire j'ai appelé mes fichiers 'fichier1' 'fichier2' etc
J'ai testé ma variable 'fichier'.$f sur l'upload de la première image, pas de problème ça fonctionne, la variable d'incrémentation est prise en charge par le script.
Sauf que dès que j'ai tenté d'uploader 2 images, 'fichier1' et 'fichier2' la 1ere est bien uploadée, mais pas la 2nde.
J'obtiens le message d'erreur suivant :
"Warning: ftp_put(): 3 is not a valid FTP Buffer resource"

Ca te dit quelque chose ?
0
alexflex25 Messages postés 106 Date d'inscription vendredi 29 septembre 2006 Statut Membre Dernière intervention 6 mars 2012
5 mai 2009 à 13:08
ftp_put

( resource<tt class= "parameter">$ftp_stream</tt>
, string<tt class="parameter">$remote_file</tt>
, string<tt class="parameter">$local_file</tt>
, int<tt class="parameter">$mode</tt>
[, int<tt class="parameter">$startpos</tt>= 0
] )

Pour voir d'où cela vient il faudrait afficher les paramètres que passe a la fonction ftp_put avant chaque appel. Apparemment, à un moment donnée tu passe en paramètre quelque chose comme:
ftp_put
( 3
, string<tt class ="parameter">$remote_file</tt>
, string<tt class="parameter">$local_file</tt>
, int<tt class="parameter">$mode</tt>
[, int<tt class="parameter">$startpos</tt>= 0
] );

Le problème ce situe au niveau du premier paramètre.... Si tu ne trouve toujours pas le problème:

Affiche le contenu des variables que tu passes à la fonction ftp_put à l'ecran avant chaque appel à la fonction et colle le résultat ici.
Si tu trouve tout seul, félicitation...
0
cs_veebee Messages postés 4 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 5 mai 2009
5 mai 2009 à 18:35
uprès avoir vérifié tous les paramètres, qui semblaient ok, j'ai fini par ouvrir le fichier avec Notepad++ (ordinairement je me sers plutôt de Dreamweaver), et me suis aperçue qu'il y avait un problème d'accolades fermantes. J'ai corrigé en me disant que quand-même ça serait étonnant que ça soit si simple, et finalement... ça marche !
Comme quoi faut toujours aller vers la simplicité !!!
Quoi qu'il en soit merci encore de tes conseils avisés. C'est vrai que je n'avais pas pensé à vérifier les variables passées à ftp_put. C'aurait pu venir de là donc j'essaierai de garder le truc en tête pour une prochaine fois !
Merci encore.

Veebee
0
rafplus Messages postés 7 Date d'inscription jeudi 17 septembre 2009 Statut Membre Dernière intervention 4 octobre 2009
17 sept. 2009 à 10:41
hahah a vous les amis
0
Rejoignez-nous