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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
<?php
// PAGE SÉCURISÉE ! impossible de la voir si la variable $_SESSION['mdpvalide'] ne vaut pas 1
session_start();
if (isset ($_SESSION["mdpvalide"]))
{
if($_SESSION["mdpvalide"]) // booléen, test si ça vaut 1
{} // dans ce cas on fait rien et on laisse php lire la suite
else
{
header('Location: ../connexion.php');
exit ();
// exit() sert à interrompre php qui n'a alors surtout pas besoin d'aller jusqu'en bas de la page
}
}
else
{
header('Location: ../connexion.php');
exit ();
}
// connexion à la base de données
include("../connexionbase.php");
// récupérer les POST, compléter la base et uploader des photos
if (isset ($_FILES['photo']))
{
if ($_FILES['photo']['error'] == 0)
{
// vérification de l'extension
$infophoto = pathinfo ($_FILES['photo']['name']); // pathinfo renvoie un tableau, qui contient notamment l'extension du fichier
$extautorisées = array ('jpg', 'jpeg', 'png', 'gif', 'JPG', 'JPEG', 'PNG', 'GIF');
if (in_array ($infophoto['extension'], $extautorisées)) // on compare l'extension dans le tableau avec les extensions qu'on a choisi
{
// on récupère la variable $nom
$nom = basename ($_FILES['photo']['name']);
// vérification et formatage du nom du fichier
// supprimer les accents, problème: la méthode avec la fonction strstr marche mal avec l'UTF-8,
// on préfèrera celle-ci qui utilise str_replace et qui marche mieux (mais pas avec les majuscules accentuées):
$nom = str_replace(
array('à','â','ä','á','ã','å','î','ï','ì','í','ô','ö','ò','ó','õ','ø','ù','û','ü','ú','é','è','ê','ë','ç','ÿ','ñ'),
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'),
$nom);
// minuscules
$nom = mb_strtolower($nom, 'UTF-8');
$infophoto['extension'] = mb_strtolower($infophoto['extension'], 'UTF-8');
// ce qui n'est pas une lettre ou un chiffre est remplacé par un tiret, y compris les espaces
$nom = preg_replace('/([^.a-z0-9]+)/i', '-', $nom);
// modification de l'image
if (move_uploaded_file ($_FILES['photo']['tmp_name'], '/var/www/lelionetlecolibri.ordipolo.fr/articles/' . $nom))
// on doit pouvoir écrire dans le dossier d'arrivée (mettre le chemin absolu) et dans /tmp
// pour permettre à PHP l'écriture et la traversée du dossier, taper: sudo chmod 733 /var/www/dossier/qu'on/veut
{
// nom de la miniature
$mini_nom = "mini_" . $nom;
$requête = $base->prepare('UPDATE articles SET nomphoto = :photo, miniature = :mini WHERE id = :li');
$requête->execute(array(
'photo' => $nom,
'mini' => $mini_nom,
'li' => $_POST['ligne']
));
// création d'une miniature
include("miniatures.php");
header('Location: ../administration.php?nouvarticle=6'); // succès, move_uploaded_file renvoie la valeur TRUE
exit ();
}
else // echec à l'enregistrement, la fonction renvoie FALSE
{
header('Location: ../administration.php?nouvarticle=4');
exit ();
}
}
else // mauvais format
{
header('Location: ../administration.php?nouvarticle=3');
exit ();
}
}
else
{
header('Location: ../administration.php?nouvarticle=7');
exit ();
}
}
elseif ($_POST['titre'] != '') // il faut au moins mettre un titre
{
// modification du texte
echo $_POST['ligne'];
$requête = $base->prepare('UPDATE articles SET nomarticle = :tit, contenu = :cont WHERE id = :li');
$requête->execute(array(
'tit' => $_POST['titre'],
'cont' => $_POST['article'],
'li' => $_POST['ligne']
));
header('Location: ../administration.php?nouvarticle=6');
exit ();
}
else // pas de photo ni titre
{
header('Location: ../administration.php?nouvarticle=1');
}
?>
|