Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/11/2007, 12h33   #1
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 64
Points : 12
Points : 12
Par défaut [Upload] Problème d'upload image via simple formulaire [POST]

Bonjour,

Tout d'abord les codes utilisés.
le formulaire
Code : PHP - Afficher / masquer les numéros de ligne

Code :
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
   1.
      <h2><a href="index.php?page=image">Retour à la liste des images</a></h2>
   2.
 
   3.
      <form method="POST" action="index.php?page=upload" enctype="multipart/form-data">
   4.
           <!-- On limite le fichier à 1Mo -->
   5.
           <input type="hidden" name="MAX_FILE_SIZE" value="1O00000">
   6.
           Image : <input type="file" name="avatar"><br /><br />
   7.
               Livre : <select name="livre">
   8.
                                      <?php
   9.
              mysql_connect("");
  10.
              mysql_select_db("");
  11.
                                      $sql = 'SELECT * FROM livre ORDER BY id';
  12.
                                      $retour = mysql_query($sql)or die(mysql_error());
  13.
                                      while ($donnees = mysql_fetch_array($retour))
  14.
                                      {
  15.
                                              print '<option value="'. $donnees['id'] . '">'. $donnees['titre'] .'</option>';
  16.
                                      }
  17.
                                      ?>
  18.
                              </select>
  19.
           <br><br><input type="submit" name="envoyer" value="Envoyer l'image">
  20.
      </form>

Le code d'upload
Code : PHP - Afficher / masquer les numéros de ligne

Code :
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
   1.
      <?php
   2.
      $dossier = '../image';
   3.
      $fichier = basename($_FILES['avatar']['name']);
   4.
      $taille_maxi = 1000000;
   5.
      $taille = filesize($_FILES['avatar']['tmp_name']);
   6.
      $extensions = array('.png', '.gif', '.jpg', '.jpeg');
   7.
      $extension = strrchr($_FILES['avatar']['name'], '.');
   8.
      $livre = $POST['livre'];
   9.
      //Début des vérifications de sécurité...
  10.
      if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
  11.
      {
  12.
           $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
  13.
      }
  14.
      if($taille>$taille_maxi)
  15.
      {
  16.
           $erreur = 'Le fichier est trop gros...';
  17.
      }
  18.
      if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
  19.
      {
  20.
           //On formate le nom du fichier ici...
  21.
           $fichier = strtr($fichier,
  22.
                'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
  23.
                'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
  24.
           $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
  25.
           if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
  26.
           {
  27.
               //on enregistre le nom et la taille dans la base de données
  28.
                      mysql_connect("");
  29.
                      mysql_select_db("");
  30.
 
  31.
                      mysql_query("INSERT INTO image VALUES('', '" . $fichier . "', '" . $taille . "', '" . $livre ."')")or die(mysql_error());
  32.
 
  33.
                      mysql_close();
  34.
 
  35.
                      echo 'Upload effectué avec succès !';
  36.
           }
  37.
           else //Sinon (la fonction renvoie FALSE).
  38.
           {
  39.
                echo 'Echec de l\'upload !';
  40.
           }
  41.
      }
  42.
      else
  43.
      {
  44.
           echo $erreur;
  45.
      }
  46.
      ?>


Mon soucis est le suivant, ça marche pas... Pourtant lors de mes essais avec easyphp ça fonctionnait parfaitement, en revanche depuis que j'ai chargé le site pour des essai "réel" sur mon serveur free, ça ne fonctionne pas... Je précise que l'upload s'effectue dans la zone administrative pour attérir dans un dossier qui est à la racine du site. Je précise également que pour le moment le site (et la zone administrative) sont protégés par mot de passe. DU moins temporairement pour la partie public du site car il est encore en test si j'ose dire.

J'ai essayé en supprimant les fichier de mot de passe, mais rien n'y fait. L'erreur affiché est celle de l'échec de l'upload. Je sais que ça ne viens pas de la taille de mon fichier et de son format.

Bref quel est le problème car visiblement 'move_uploaded_file' ne semble tout simplement pas fonctionner...

Merci de votre aide.
Ryuuku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2007, 12h39   #2
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Hello,

c'est peut-etre $dossier qui gene...
Surtout le ../

Essaie soit ceci :
Code :
1
2
 
$dossier = './image';
Ou alors le chemin complet du dossier...
Ou alors un sous-dossier ou se trouve le fichier .php

@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2007, 12h44   #3
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 64
Points : 12
Points : 12
c'est peut-etre $dossier qui gene...

>>Je pense aussi, mais j'arrive pas à régler le problème

Surtout le ../

Essaie soit ceci :
Code :
1
2
 
$dossier = './image';
>> Déjà essayé, même résultat hélas.

Ou alors le chemin complet du dossier...

>>Chemin absolu? Déjà essay en utilisant un cod php renvoyant le chemin absolu de son propre emplacement (je l'avais mis dans le dossier image de destination), même résultat hélas

Ou alors un sous-dossier ou se trouve le fichier .php

>>Déjà essayé aussi, même résultat.

@+
cadou

>>J'ai peut être oublié des truc, peut être que ça vient du serveur Free, mais je pense avoir déjà essayé tout ce que j'ai put trouver

Le pire c'est qu'en local sur mon petit Easy PHP ça marche nikel, sur Free ça marche pas. je pense que le $dossier pose problème oui, mais j'ai beau le modifier je trouve pas
Ryuuku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2007, 13h04   #4
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Hello,

Personnellement j'ai un site sur Free, et j'utilise de l'upload a tout bout de champ dans mes scripts donc c'est que cela fonctionne...

Et tu va rigoler, mais je pense savoir ou est le probleme

1°)
$dossier = '../image';

2°)
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))

Pour faire court, si ton fichier s'apelle matrogne.jpg et que tu l'uploades, cela reviens a lui demander de concatener ../image et matrogne.jpg
ce qui en gros donnera ../imagematrogne.jpg ce que tu ne veux pas...

Bref ecris ceci et cela devrais aller :
Code :
1
2
 
$dossier = '../image/';
Ce que je te conseilles egalement, ce serait d'écrire ceci :
Code :
1
2
3
 
$myfile = $dossier . $fichier;
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $myfile))
@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2007, 13h09   #5
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 64
Points : 12
Points : 12
Ben non marche toujours pas
Alors ce que je vais faire c'est reprendre à zéro tout ça demain matin. Au moins comme ça, ça marchera peut être qui sait...
Ryuuku est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h53.


 
 
 
 
Partenaires

Hébergement Web