summaryrefslogtreecommitdiff
path: root/articles/ajoutarticle.php
diff options
context:
space:
mode:
Diffstat (limited to 'articles/ajoutarticle.php')
-rw-r--r--articles/ajoutarticle.php103
1 files changed, 103 insertions, 0 deletions
diff --git a/articles/ajoutarticle.php b/articles/ajoutarticle.php
new file mode 100644
index 0000000..56f63a1
--- /dev/null
+++ b/articles/ajoutarticle.php
@@ -0,0 +1,103 @@
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// récupérer les POST, complèter la base et uploader des photos
28if (isset ($_FILES['photo']) AND $_FILES['photo']['error'] == 1) // fichier trop lourd
29{
30 header('Location: ../administration.php?nouvarticle=2');
31 exit ();
32}
33elseif ($_FILES['photo']['error'] == 0 AND $_POST['titre'] != '') // présence d'un titre
34{
35 // extension du fichier
36 $infophoto = pathinfo ($_FILES['photo']['name']); // pathinfo renvoie un tableau, qui contient notamment l'extension du fichier
37 $extautorisées = array ('jpg', 'jpeg', 'png', 'gif', 'JPG', 'JPEG', 'PNG', 'GIF');
38 if (in_array ($infophoto['extension'], $extautorisées)) // on compare l'extension dans le tableau avec les extensions qu'on a choisi
39 {
40 // on récupère la variable $nom
41 $nom = basename ($_FILES['photo']['name']);
42
43 // vérification et formatage du nom du fichier
44 // supprimer les accents, problème: la méthode avec la fonction strstr marche mal avec l'UTF-8,
45 // on préfèrera celle-ci qui utilise str_replace et qui marche mieux (mais pas avec les majuscules accentuées):
46 $nom = str_replace(
47 array('à','â','ä','á','ã','å','î','ï','ì','í','ô','ö','ò','ó','õ','ø','ù','û','ü','ú','é','è','ê','ë','ç','ÿ','ñ'),
48 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'),
49 $nom);
50 // minuscules
51 $nom = mb_strtolower($nom, 'UTF-8');
52 $infophoto['extension'] = mb_strtolower($infophoto['extension'], 'UTF-8');
53 // ce qui n'est pas une lettre ou un chiffre est remplacé par un tiret, y compris les espaces
54 $nom = preg_replace('/([^.a-z0-9]+)/i', '-', $nom);
55
56 // ajout article avec photo
57 if (move_uploaded_file ($_FILES['photo']['tmp_name'], '/var/www/lelionetlecolibri.ordipolo.fr/articles/' . $nom))
58 // on doit pouvoir écrire dans le dossier d'arrivée (mettre le chemin absolu) et dans /tmp
59 // pour permettre à PHP l'écriture et la traversée du dossier, taper: sudo chmod 733 /var/www/dossier/qu'on/veut
60 {
61 // nom de la miniature
62 $mini_nom = "mini_" . $nom;
63
64 $requête = $base->prepare('INSERT INTO articles (nomarticle, contenu, nomphoto, miniature) VALUES (?, ?, ?, ?)');
65 $requête->execute(array(
66 $_POST['titre'],
67 $_POST['article'],
68 $nom,
69 $mini_nom));
70
71 // création de la miniature
72 include("miniatures.php");
73
74 header('Location: ../administration.php?nouvarticle=5'); // succès, move_uploaded_file renvoie la valeur TRUE
75 exit ();
76 }
77 else // echec à l'enregistrement, la fonction renvoie FALSE
78 {
79 header('Location: ../administration.php?nouvarticle=4');
80 exit ();
81 }
82 }
83 else // mauvais format
84 {
85 header('Location: ../administration.php?nouvarticle=3');
86 exit ();
87 }
88}
89elseif ($_POST['titre'] != '') // article sans photo
90{
91 $requête = $base->prepare('INSERT INTO articles (nomarticle, contenu) VALUES (?, ?)');
92 $requête->execute(array(
93 $_POST['titre'],
94 $_POST['article']));
95
96 header('Location: ../administration.php?nouvarticle=5');
97 exit ();
98}
99else // pas de titre
100{
101 header('Location: ../administration.php?nouvarticle=1');
102}
103?>