Bonjour,
je reviens encore car j'ai vraiment des difficultés en ce qui concerne la suite de mon upload.
Actuellement le devis que je réalise est traité par php et les informations saisies sont transmises par mail à l'entreprise. (j'espère par la suite pouvoir envoyer aussi un mail récapitulatif à la personne qui a fait la demande).
Voici le lien
http://www.enrdiffusion.com/devis.php
Il est maintenant possible d'uploadée une image sur le serveur (elle est aussi traitée : vérification de l'extension et vérification du nom) mais mon pb est le suivant.
Je voudrais renommer l'image pour l'envoyer par la suite en piece jointe. Je ne sais pas si c'est vraiment utile mais bon, j'aurais aimé en fait que l'image soit renommé en portant le nom de la personne qui l'envoit ainsi que la date à laquelle il l'a uploadée.
Si M. Untel fait une demande de devis, alors l'image qu'il enverra s'appellera
imageUntel100707.
J'ai essayé d'utiliser la fonction rename dont j'ai pu avoir quelques explications en lisant les posts mais je n'arrive toujours pas à réaliser le changement de nom.
J'obtiens l'erreur suivante
Je vous fais parvenir ci-dessous la partie du code qui permet l'upload sur le serveur.Warning: rename() [function.rename]: open_basedir restriction in effect. File(/img/devis_upload//tmp/phpoQOXDL) is not within the allowed path(s): (/home/www/4017a44ee11a13cf0358a9ad529628f5/:/tmp:/opt/php/lib/php/) in /home/www/4017a44ee11a13cf0358a9ad529628f5/web/devis3.php on line 167
J'espère avoir fourni correctement les explications qui me pose pb.
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 //champs upload $_SESSION["upload"] = $_FILES["upload"]; //si un fichier est envoye if(!empty($_FILES['upload']['name'])) { if (($_FILES['upload']['error']>0) && ($_FILES['upload']['error']<4)) { echo "Erreur dans le transfert du fichier !"; exit; } // on vérifie son extension $type_file = $_FILES['upload']['type']; if(!strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'png') && !strstr($type_file, 'gif') && !strstr($type_file, 'bmp') && !strstr($type_file, 'tiff') ) { echo "Le type de fichier soumis n'est pas accepte"; exit; } //on verifie que le nom du fichier ne pose pas de probleme au niveau de la securite if(preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file)) { echo "Veuillez changer le nom de votre image pour des raisons de securite"; exit; //ou exit("Veuillez changer le nom de votre image pour des raisons de securite"); } //dossier où sera déplacé le fichier $content_dir = 'img/devis_upload/'; $tmp_file = $_FILES['upload']['tmp_name']; $name_file = $_FILES['upload']['name']; //si le fichier est upload if(is_uploaded_file($tmp_file)) { if(!move_uploaded_file($tmp_file, $content_dir . $name_file)) { echo "Impossible de copier le fichier dans $content_dir"; exit; } else { rename("/img/devis_upload/" . $_FILES['upload']['tmp_name'] , "/img/devis_upload/image" . $_SESSION["nom"] ); } } }
Une fois que la rename est réalisée, je pourrais créer une variable pour le nom de l'image ? parce que je précise que tout doit être automatique et donc que je ne connais pas le nom de l'image qui va être envoyée au début donc je ne peux pas la renommer manuellement.
Dans le cours de l'envoi de mail, j'ai remarqué justement que pour envoyer une piece jointe on devait connaitre son nom.
Cf :c'est pour ça que je bloque vraiment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 // Pièce jointe $file_name = 'image.jpg';
En gros pour tout récapituler. Comment procéder pour renommer l'image sans que je connaisse son nom ? Ensuite je suis normalement censé la stocker dans une variable que je pourrais réutiliser pour l'envoi de pièce jointe en remplaçant je pense le code précédent de la façon suivante ?
J'espère ne pas m'être trompé dans ma démarche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 // Pièce jointe $file_name = '$fichier_image';
Merci par avance
Partager