Bonjour,
Tout d'abord les codes utilisés.
le formulaire
Code : PHP - Afficher / masquer les numéros de ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager