summaryrefslogtreecommitdiff
path: root/photoskaty/photoupload.php
diff options
context:
space:
mode:
Diffstat (limited to 'photoskaty/photoupload.php')
-rw-r--r--photoskaty/photoupload.php90
1 files changed, 90 insertions, 0 deletions
diff --git a/photoskaty/photoupload.php b/photoskaty/photoupload.php
new file mode 100644
index 0000000..c3a2079
--- /dev/null
+++ b/photoskaty/photoupload.php
@@ -0,0 +1,90 @@
1<?php
2// PAGE SÉCURISÉE ! impossible de la voir si la variable $_SESSION['mdpvalide'] ne vaut pas 1
3
4session_start();
5if (isset ($_SESSION["mdpvalide"]))
6{
7 if($_SESSION["mdpvalide"]) // booléen, test si ça vaut 1
8 {} // dans ce cas on fait rien et on laisse php lire la suite
9 else
10 {
11 header('Location: ../connexion.php');
12 exit ();
13 // exit() sert à interrompre php qui n'a alors surtout pas besoin d'aller jusqu'en bas de la page
14 }
15}
16else
17{
18 header('Location: ../connexion.php');
19 exit ();
20}
21
22
23// connexion à la base de données
24include("../connexionbase.php");
25
26
27// test de l'envoi du fichier au serveur
28// erreur = 1 si la taille du fichier dépasse de 2 MO, limite modifiable à la ligne upload_max_filesize du fichier php.ini
29if (isset ($_FILES['photo']) AND $_FILES['photo']['error'] == 0)
30{
31 // vérification de l'extension
32 $infophoto = pathinfo ($_FILES['photo']['name']); // pathinfo renvoie un tableau, qui contient notamment l'extension du fichier
33 $extautorisées = array ('jpg', 'jpeg', 'png', 'gif', 'JPG', 'JPEG', 'PNG', 'GIF');
34 if (in_array ($infophoto['extension'], $extautorisées)) // on compare l'extension dans le tableau avec les extensions qu'on a choisi
35 {
36 // on récupère la variable $nom
37 $nom = basename ($_FILES['photo']['name']);
38
39 // vérification et formatage du nom du fichier
40 // supprimer les accents, problème: la méthode avec la fonction strstr marche mal avec l'UTF-8,
41 // on préfèrera celle-ci qui utilise str_replace et qui marche mieux (mais pas avec les majuscules accentuées):
42 $nom = str_replace(
43 array('à','â','ä','á','ã','å','î','ï','ì','í','ô','ö','ò','ó','õ','ø','ù','û','ü','ú','é','è','ê','ë','ç','ÿ','ñ'),
44 array('a','a','a','a','a','a','i','i','i','i','o','o','o','o','o','o','u','u','u','u','e','e','e','e','c','y','n'),
45 $nom);
46 $nom = mb_strtolower($nom, 'UTF-8');
47 // ce qui n'est pas une lettre ou un chiffre est remplacé par un tiret, y compris les espaces
48 $nom = preg_replace('/([^.a-z0-9]+)/i', '-', $nom);
49
50 // enfin on enregistre le fichier
51 if (move_uploaded_file ($_FILES['photo']['tmp_name'], '/var/www/lelionetlecolibri.ordipolo.fr/photospolo/' . $nom))
52 // on doit pouvoir écrire dans le dossier d'arrivée (mettre le chemin absolu) et dans /tmp
53 // pour permettre à PHP l'écriture et la traversée du dossier, taper: sudo chmod 733 /var/www/dossier/qu'on/veut
54 {
55 // envoi du nom de la photo dans la base de données
56 echo $nom;
57 $requête = $base->prepare('INSERT INTO photospolo (nomphoto) VALUES (:nom)');
58 $requête->execute(array('nom' => $nom));
59
60 $requête->closeCursor();
61
62 // changer le nom de la photo sélectionnée dans le fichier photo.txt
63 $fichier = fopen('photo.txt','r+');
64 ftruncate($fichier,0); // évite les problèmes quand on change pour un nom plus court
65 fputs($fichier, $nom);
66 fseek($fichier, 0);
67 fclose($fichier);
68
69 header('Location: ../administration.php?modifphoto=4'); // succès, move_uploaded_file renvoie la valeur TRUE
70 exit ();
71 }
72 else // echec à l'enregistrement, la fonction renvoie FALSE
73 {
74 header('Location: ../administration.php?modifphoto=3');
75 exit ();
76 }
77 }
78 else // mauvais format
79 {
80 header('Location: ../administration.php?modifphoto=2');
81 exit ();
82 }
83}
84else // mauvaise taille
85{
86 header('Location: ../administration.php?modifphoto=1');
87 exit ();
88}
89
90?>