diff options
Diffstat (limited to 'articles')
49 files changed, 694 insertions, 0 deletions
diff --git a/articles/a-bout-de-souffle.jpg b/articles/a-bout-de-souffle.jpg new file mode 100644 index 0000000..591496c --- /dev/null +++ b/articles/a-bout-de-souffle.jpg | |||
Binary files differ | |||
diff --git a/articles/acoustic-guitar.png b/articles/acoustic-guitar.png new file mode 100644 index 0000000..5503dd0 --- /dev/null +++ b/articles/acoustic-guitar.png | |||
Binary files differ | |||
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 | |||
4 | session_start(); | ||
5 | if (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 | } | ||
16 | else | ||
17 | { | ||
18 | header('Location: ../connexion.php'); | ||
19 | exit (); | ||
20 | } | ||
21 | |||
22 | |||
23 | // connexion à la base de données | ||
24 | include("../connexionbase.php"); | ||
25 | |||
26 | |||
27 | // récupérer les POST, complèter la base et uploader des photos | ||
28 | if (isset ($_FILES['photo']) AND $_FILES['photo']['error'] == 1) // fichier trop lourd | ||
29 | { | ||
30 | header('Location: ../administration.php?nouvarticle=2'); | ||
31 | exit (); | ||
32 | } | ||
33 | elseif ($_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 | } | ||
89 | elseif ($_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 | } | ||
99 | else // pas de titre | ||
100 | { | ||
101 | header('Location: ../administration.php?nouvarticle=1'); | ||
102 | } | ||
103 | ?> | ||
diff --git a/articles/articlesliste.php b/articles/articlesliste.php new file mode 100644 index 0000000..f56cea7 --- /dev/null +++ b/articles/articlesliste.php | |||
@@ -0,0 +1,179 @@ | |||
1 | <?php | ||
2 | // PAGE SÉCURISÉE ! impossible de la voir si la variable $_SESSION['mdpvalide'] ne vaut pas 1 | ||
3 | |||
4 | session_start(); | ||
5 | if (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 | } | ||
16 | else | ||
17 | { | ||
18 | header('Location: ../connexion.php'); | ||
19 | exit (); | ||
20 | } | ||
21 | ?> | ||
22 | |||
23 | <!DOCTYPE html> | ||
24 | <html lang="fr" > | ||
25 | <head> | ||
26 | <meta charset="utf-8" /> | ||
27 | <title>modifier, supprimer un article</title> | ||
28 | <link rel="shortcut icon" type="image/x-icon" href="../favicon.ico" /> | ||
29 | <link rel="stylesheet" href="../blog.css" /> | ||
30 | <meta name="viewport" content="width=device-width" /> | ||
31 | <style> | ||
32 | section | ||
33 | { | ||
34 | margin: 10px 0px; | ||
35 | padding: 10px; | ||
36 | width: 960px; | ||
37 | } | ||
38 | </style> | ||
39 | </head> | ||
40 | |||
41 | <body> | ||
42 | <div id="bloc_page"> | ||
43 | |||
44 | <header> | ||
45 | <h1><img class="sakura" src="../sakura.png" alt="sakura" /> | ||
46 | Modifier ou supprimer un article | ||
47 | <img class="sakura" src="../sakura.png" alt="sakura" /></h1> | ||
48 | </header> | ||
49 | |||
50 | <li id="admin" > | ||
51 | <p><a href="../administration.php" >retour page précédente</a></p> | ||
52 | </li> | ||
53 | |||
54 | |||
55 | <!-- connexion à la base de données --> | ||
56 | <?php include("../connexionbase.php"); ?> | ||
57 | |||
58 | |||
59 | <?php // message de retour avec des GET venant de supprconfirmée.php | ||
60 | if (isset ($_GET['erreursuppr'])) | ||
61 | { | ||
62 | if($_GET['erreursuppr'] == 1) | ||
63 | { | ||
64 | echo('<p><i>Erreur à la suppression d\'une image ou d\'un article,<br/> | ||
65 | si cet avertissement vous semble étrange, contactez ordipolo.</i></p>'); | ||
66 | } | ||
67 | else | ||
68 | {} | ||
69 | } | ||
70 | elseif (isset ($_GET['suppr'])) | ||
71 | { | ||
72 | if($_GET['suppr'] == 1) | ||
73 | { | ||
74 | echo('<i>L\'image a bien été supprimée !</i>'); | ||
75 | } | ||
76 | elseif($_GET['suppr'] == 2) | ||
77 | { | ||
78 | echo('<i>L\'article a bien été supprimé !</i>'); | ||
79 | } | ||
80 | else | ||
81 | {} | ||
82 | } | ||
83 | else | ||
84 | {} | ||
85 | ?> | ||
86 | |||
87 | |||
88 | <?php | ||
89 | $réponse = $base->query('SELECT id, nomarticle, contenu, nomphoto, miniature, DATE_FORMAT(dateheure, \'article ajouté le %d/%m/%Y à %Hh%i\') | ||
90 | AS date FROM articles ORDER BY id DESC'); | ||
91 | while ($données = $réponse->fetch()) | ||
92 | { | ||
93 | echo('<section> | ||
94 | <article> | ||
95 | <p class="dateheure" >' . $données['date'] . '</p>'); // date | ||
96 | |||
97 | // titre et texte | ||
98 | echo('<p><b>Modifier le titre et le texte.</b></p>'); | ||
99 | |||
100 | echo('<form method="post" action="modifarticle.php" >'); | ||
101 | |||
102 | echo('<p><label for="titre" >Titre:</label> | ||
103 | <input type="text" name="titre" id="titre" value="' | ||
104 | . htmlspecialchars($données['nomarticle']) . '" size="30" /></p>'); // titre | ||
105 | |||
106 | echo('<p><label for="article" >Texte:</label> | ||
107 | <textarea name="article" id="article" rows="10" cols="50" >' | ||
108 | . htmlspecialchars($données['contenu']) . '</textarea></p>'); // texte | ||
109 | |||
110 | echo('<p><input type="hidden" name="ligne" id="ligne" value="' | ||
111 | . $données['id'] . '" /></p>'); // numéro de la ligne dans la base | ||
112 | |||
113 | echo('<p><input type="submit" value="VALIDER LE NOUVEAU TEXTE" /></p> | ||
114 | </form>'); // bouton | ||
115 | |||
116 | // image | ||
117 | if ($données['nomphoto'] == '') // pas d'image | ||
118 | { | ||
119 | echo('<form method="post" action="modifarticle.php" enctype="multipart/form-data" >'); | ||
120 | |||
121 | echo('<p><label><b>Ajouter une image à l\'article depuis mon PC / tablette / téléphone:</b></label><br/> | ||
122 | <input type="file" name="photo" id="photo" /> | ||
123 | <input type="hidden" name="MAX_FILE_SIZE" value="8000000" ></p>'); // nouvelle image | ||
124 | |||
125 | echo('<p><input type="hidden" name="ligne" id="ligne" value="' | ||
126 | . $données['id'] . '" /></p>'); // numéro de la ligne dans la base | ||
127 | |||
128 | echo('<p><input type="submit" value="VALIDER L\'IMAGE" /></p> | ||
129 | </form>'); // bouton | ||
130 | } | ||
131 | else // y a déjà une image | ||
132 | { | ||
133 | echo('<form method="post" action="modifarticle.php" enctype="multipart/form-data" >'); | ||
134 | |||
135 | echo('<p><label><b>Choisir une autre image sur mon PC / tablette / téléphone:</b></label><br/> | ||
136 | <input type="file" name="photo" id="photo" /> | ||
137 | <input type="hidden" name="MAX_FILE_SIZE" value="8000000" ></p>'); // nouvelle image | ||
138 | |||
139 | echo('<div><p>Image actuelle =<img src="' . $données['miniature'] . '" alt="aucune" /></p></div>'); // montrer l'image | ||
140 | |||
141 | echo('<p><input type="hidden" name="ligne" id="ligne" value="' | ||
142 | . $données['id'] . '" /></p>'); // numéro de la ligne dans la base | ||
143 | |||
144 | echo('<p><input type="submit" value="VALIDER LA NOUVELLE IMAGE" /></p> | ||
145 | </form>'); // bouton | ||
146 | |||
147 | // supprimer l'image | ||
148 | // utilisation d'un POST au lieu d'un GET pour ne rien révéler de la base de données | ||
149 | echo ('<form method="post" action="supprarticle.php" > | ||
150 | <p><label><b>Supprimer l\'image illustrant cet article:</b></label></p> | ||
151 | <input type="hidden" name="quoi" value="image" > | ||
152 | <input type="hidden" name="ligne" value="' . $données['id'] . '" > | ||
153 | <p><input type="submit" value="SUPPRIMER L\'IMAGE" /></p> | ||
154 | </form>'); | ||
155 | |||
156 | echo ('<p>Note: pour supprimer uniquement le texte, il suffit que le formulaire "Texte" soit vide et de cliquer sur "VALIDER LE NOUVEAU TEXTE".</p>'); | ||
157 | } | ||
158 | |||
159 | //supprimer tout l'article | ||
160 | // utilisation d'un POST au lieu d'un GET pour ne rien révéler de la base de données | ||
161 | echo('<form method="post" action="supprarticle.php" > | ||
162 | <p><label><b>Supprimer l\'article entier:</b></label></p> | ||
163 | <input type="hidden" name="quoi" value="article" > | ||
164 | <input type="hidden" name="ligne" value="' . $données['id'] . '" > | ||
165 | <p><input type="submit" value="SUPPRIMER L\'ARTICLE" /></p> | ||
166 | </form>'); | ||
167 | |||
168 | echo('<p><b>Ne rien faire tout compte fait.</b></p> | ||
169 | <p><a href="../administration.php" >Retour page précédente</a></p>'); | ||
170 | |||
171 | echo('</article> | ||
172 | </section>'); | ||
173 | } | ||
174 | $réponse->closeCursor(); | ||
175 | ?> | ||
176 | |||
177 | </div> | ||
178 | </body> | ||
179 | </html> | ||
diff --git a/articles/atelier-franssmann-mpt-penhars.jpg b/articles/atelier-franssmann-mpt-penhars.jpg new file mode 100644 index 0000000..4a6a83f --- /dev/null +++ b/articles/atelier-franssmann-mpt-penhars.jpg | |||
Binary files differ | |||
diff --git a/articles/baleine-bouchons.jpg b/articles/baleine-bouchons.jpg new file mode 100644 index 0000000..f972330 --- /dev/null +++ b/articles/baleine-bouchons.jpg | |||
Binary files differ | |||
diff --git a/articles/breizh-color.jpg b/articles/breizh-color.jpg new file mode 100644 index 0000000..61d6611 --- /dev/null +++ b/articles/breizh-color.jpg | |||
Binary files differ | |||
diff --git a/articles/cafe-philo.jpg b/articles/cafe-philo.jpg new file mode 100644 index 0000000..0904644 --- /dev/null +++ b/articles/cafe-philo.jpg | |||
Binary files differ | |||
diff --git a/articles/composteur.jpg b/articles/composteur.jpg new file mode 100644 index 0000000..7b700e9 --- /dev/null +++ b/articles/composteur.jpg | |||
Binary files differ | |||
diff --git a/articles/emmaus.jpg b/articles/emmaus.jpg new file mode 100644 index 0000000..9cfeb9e --- /dev/null +++ b/articles/emmaus.jpg | |||
Binary files differ | |||
diff --git a/articles/fanfare-invisible-manif-climat.jpg b/articles/fanfare-invisible-manif-climat.jpg new file mode 100644 index 0000000..8642016 --- /dev/null +++ b/articles/fanfare-invisible-manif-climat.jpg | |||
Binary files differ | |||
diff --git a/articles/housse-ukulele-reduite.jpg b/articles/housse-ukulele-reduite.jpg new file mode 100644 index 0000000..f8fcd6b --- /dev/null +++ b/articles/housse-ukulele-reduite.jpg | |||
Binary files differ | |||
diff --git a/articles/housse-ukulele.jpg b/articles/housse-ukulele.jpg new file mode 100644 index 0000000..5262b3c --- /dev/null +++ b/articles/housse-ukulele.jpg | |||
Binary files differ | |||
diff --git a/articles/installation-stand.jpg b/articles/installation-stand.jpg new file mode 100644 index 0000000..5b87c56 --- /dev/null +++ b/articles/installation-stand.jpg | |||
Binary files differ | |||
diff --git a/articles/kig-ar-farz.jpg b/articles/kig-ar-farz.jpg new file mode 100644 index 0000000..0c94d33 --- /dev/null +++ b/articles/kig-ar-farz.jpg | |||
Binary files differ | |||
diff --git a/articles/la-guitare-pour-les-nuls.jpg b/articles/la-guitare-pour-les-nuls.jpg new file mode 100644 index 0000000..e359861 --- /dev/null +++ b/articles/la-guitare-pour-les-nuls.jpg | |||
Binary files differ | |||
diff --git a/articles/lombricomposteur.jpg b/articles/lombricomposteur.jpg new file mode 100644 index 0000000..d3bd801 --- /dev/null +++ b/articles/lombricomposteur.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_a-bout-de-souffle.jpg b/articles/mini_a-bout-de-souffle.jpg new file mode 100644 index 0000000..e4add77 --- /dev/null +++ b/articles/mini_a-bout-de-souffle.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_acoustic-guitar.png b/articles/mini_acoustic-guitar.png new file mode 100644 index 0000000..c330ad4 --- /dev/null +++ b/articles/mini_acoustic-guitar.png | |||
Binary files differ | |||
diff --git a/articles/mini_atelier-franssmann-mpt-penhars.jpg b/articles/mini_atelier-franssmann-mpt-penhars.jpg new file mode 100644 index 0000000..e1e03d7 --- /dev/null +++ b/articles/mini_atelier-franssmann-mpt-penhars.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_baleine-bouchons.jpg b/articles/mini_baleine-bouchons.jpg new file mode 100644 index 0000000..04354fd --- /dev/null +++ b/articles/mini_baleine-bouchons.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_breizh-color.jpg b/articles/mini_breizh-color.jpg new file mode 100644 index 0000000..d8f820d --- /dev/null +++ b/articles/mini_breizh-color.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_cafe-philo.jpg b/articles/mini_cafe-philo.jpg new file mode 100644 index 0000000..cf2ffa2 --- /dev/null +++ b/articles/mini_cafe-philo.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_composteur.jpg b/articles/mini_composteur.jpg new file mode 100644 index 0000000..aa24816 --- /dev/null +++ b/articles/mini_composteur.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_emmaus.jpg b/articles/mini_emmaus.jpg new file mode 100644 index 0000000..b183b4f --- /dev/null +++ b/articles/mini_emmaus.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_fanfare-invisible-manif-climat.jpg b/articles/mini_fanfare-invisible-manif-climat.jpg new file mode 100644 index 0000000..69490a8 --- /dev/null +++ b/articles/mini_fanfare-invisible-manif-climat.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_housse-ukulele.jpg b/articles/mini_housse-ukulele.jpg new file mode 100644 index 0000000..eec6917 --- /dev/null +++ b/articles/mini_housse-ukulele.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_installation-stand.jpg b/articles/mini_installation-stand.jpg new file mode 100644 index 0000000..eeb7ee2 --- /dev/null +++ b/articles/mini_installation-stand.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_kig-ar-farz.jpg b/articles/mini_kig-ar-farz.jpg new file mode 100644 index 0000000..b45cda5 --- /dev/null +++ b/articles/mini_kig-ar-farz.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_la-guitare-pour-les-nuls.jpg b/articles/mini_la-guitare-pour-les-nuls.jpg new file mode 100644 index 0000000..f8289fc --- /dev/null +++ b/articles/mini_la-guitare-pour-les-nuls.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_lombricomposteur.jpg b/articles/mini_lombricomposteur.jpg new file mode 100644 index 0000000..0fb7bc6 --- /dev/null +++ b/articles/mini_lombricomposteur.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_nettoyage-des-bois.jpg b/articles/mini_nettoyage-des-bois.jpg new file mode 100644 index 0000000..1227a78 --- /dev/null +++ b/articles/mini_nettoyage-des-bois.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_nora-isaac-22-millions-de-vue.jpg b/articles/mini_nora-isaac-22-millions-de-vue.jpg new file mode 100644 index 0000000..aa6b52c --- /dev/null +++ b/articles/mini_nora-isaac-22-millions-de-vue.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_poney.png b/articles/mini_poney.png new file mode 100644 index 0000000..b6e4413 --- /dev/null +++ b/articles/mini_poney.png | |||
Binary files differ | |||
diff --git a/articles/mini_reseau.png b/articles/mini_reseau.png new file mode 100644 index 0000000..5097a1d --- /dev/null +++ b/articles/mini_reseau.png | |||
Binary files differ | |||
diff --git a/articles/mini_rouget.jpg b/articles/mini_rouget.jpg new file mode 100644 index 0000000..1e39f49 --- /dev/null +++ b/articles/mini_rouget.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_seules-les-betes.jpg b/articles/mini_seules-les-betes.jpg new file mode 100644 index 0000000..2e50e5b --- /dev/null +++ b/articles/mini_seules-les-betes.jpg | |||
Binary files differ | |||
diff --git a/articles/mini_surf.png b/articles/mini_surf.png new file mode 100644 index 0000000..73d6e9f --- /dev/null +++ b/articles/mini_surf.png | |||
Binary files differ | |||
diff --git a/articles/miniatures.php b/articles/miniatures.php new file mode 100644 index 0000000..48f3525 --- /dev/null +++ b/articles/miniatures.php | |||
@@ -0,0 +1,85 @@ | |||
1 | <?php | ||
2 | if ($infophoto['extension'] == 'png' OR $infophoto['extension'] == 'PNG') | ||
3 | { | ||
4 | $source = imagecreatefrompng($nom); | ||
5 | $hauteur_source = imagesy($source); | ||
6 | |||
7 | if ($hauteur_source > 250) | ||
8 | { | ||
9 | // dimensions des deux images | ||
10 | $largeur_source = imagesx($source); | ||
11 | $forme = $hauteur_source / $largeur_source; // si image plus haute que large: >1, si plus large: <1 | ||
12 | $hauteur_destination = 250; // hauteur arbitraire | ||
13 | $largeur_destination = 250 / $forme; // largeur proportionnée | ||
14 | |||
15 | // créer la miniature | ||
16 | $destination = imagecreatetruecolor($largeur_destination, 250); | ||
17 | imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source); | ||
18 | |||
19 | // enregistrer la nouvelle image | ||
20 | imagepng($destination, $mini_nom); | ||
21 | } | ||
22 | else | ||
23 | { | ||
24 | // enregistrer l'image de départ avec le nom d'une miniature | ||
25 | imagepng($source, $mini_nom); | ||
26 | } | ||
27 | } | ||
28 | elseif ($infophoto['extension'] == 'jpg' OR $infophoto['extension'] == 'jpeg') | ||
29 | { | ||
30 | $source = imagecreatefromjpeg($nom); | ||
31 | $hauteur_source = imagesy($source); | ||
32 | ; | ||
33 | if ($hauteur_source > 250) | ||
34 | { | ||
35 | // dimensions des deux images | ||
36 | $largeur_source = imagesx($source); | ||
37 | $forme = $hauteur_source / $largeur_source; // si image plus haute que large: >1, si plus large: <1 | ||
38 | $hauteur_destination = 250; // hauteur arbitraire | ||
39 | $largeur_destination = 250 / $forme; // largeur proportionnée | ||
40 | |||
41 | // créer la miniature | ||
42 | $destination = imagecreatetruecolor($largeur_destination, 250); | ||
43 | imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source); | ||
44 | |||
45 | // enregistrer la nouvelle image | ||
46 | imagejpeg($destination, $mini_nom); | ||
47 | } | ||
48 | else | ||
49 | { | ||
50 | // enregistrer l'image de départ avec le nom d'une miniature | ||
51 | imagejpeg($source, $mini_nom); | ||
52 | } | ||
53 | } | ||
54 | elseif ($infophoto['extension'] == 'gif') | ||
55 | { | ||
56 | $source = imagecreatefromgif($nom); | ||
57 | $hauteur_source = imagesy($source); | ||
58 | |||
59 | if ($hauteur_source > 250) | ||
60 | { | ||
61 | // dimensions des deux images | ||
62 | $largeur_source = imagesx($source); | ||
63 | $forme = $hauteur_source / $largeur_source; // si image plus haute que large: >1, si plus large: <1 | ||
64 | $hauteur_destination = 250; // hauteur arbitraire | ||
65 | $largeur_destination = 250 / $forme; // largeur proportionnée | ||
66 | |||
67 | // créer la miniature | ||
68 | $destination = imagecreatetruecolor($largeur_destination, 250); | ||
69 | imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source); | ||
70 | |||
71 | // enregistrer la nouvelle image | ||
72 | imagegif($destination, $mini_nom); | ||
73 | } | ||
74 | else | ||
75 | { | ||
76 | // enregistrer l'image de départ avec le nom d'une miniature | ||
77 | imagegif($source, $mini_nom); | ||
78 | } | ||
79 | } | ||
80 | else // echec à l'enregistrement, la fonction renvoie FALSE | ||
81 | { | ||
82 | header('Location: ../administration.php'); | ||
83 | exit (); | ||
84 | } | ||
85 | ?> | ||
diff --git a/articles/modifarticle.php b/articles/modifarticle.php new file mode 100644 index 0000000..e8cc827 --- /dev/null +++ b/articles/modifarticle.php | |||
@@ -0,0 +1,111 @@ | |||
1 | <?php | ||
2 | // PAGE SÉCURISÉE ! impossible de la voir si la variable $_SESSION['mdpvalide'] ne vaut pas 1 | ||
3 | |||
4 | session_start(); | ||
5 | if (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 | } | ||
16 | else | ||
17 | { | ||
18 | header('Location: ../connexion.php'); | ||
19 | exit (); | ||
20 | } | ||
21 | |||
22 | |||
23 | // connexion à la base de données | ||
24 | include("../connexionbase.php"); | ||
25 | |||
26 | |||
27 | // récupérer les POST, compléter la base et uploader des photos | ||
28 | if (isset ($_FILES['photo'])) | ||
29 | { | ||
30 | if ($_FILES['photo']['error'] == 0) | ||
31 | { | ||
32 | // vérification de l'extension | ||
33 | $infophoto = pathinfo ($_FILES['photo']['name']); // pathinfo renvoie un tableau, qui contient notamment l'extension du fichier | ||
34 | $extautorisées = array ('jpg', 'jpeg', 'png', 'gif', 'JPG', 'JPEG', 'PNG', 'GIF'); | ||
35 | if (in_array ($infophoto['extension'], $extautorisées)) // on compare l'extension dans le tableau avec les extensions qu'on a choisi | ||
36 | { | ||
37 | // on récupère la variable $nom | ||
38 | $nom = basename ($_FILES['photo']['name']); | ||
39 | |||
40 | // vérification et formatage du nom du fichier | ||
41 | // supprimer les accents, problème: la méthode avec la fonction strstr marche mal avec l'UTF-8, | ||
42 | // on préfèrera celle-ci qui utilise str_replace et qui marche mieux (mais pas avec les majuscules accentuées): | ||
43 | $nom = str_replace( | ||
44 | array('à','â','ä','á','ã','å','î','ï','ì','í','ô','ö','ò','ó','õ','ø','ù','û','ü','ú','é','è','ê','ë','ç','ÿ','ñ'), | ||
45 | 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'), | ||
46 | $nom); | ||
47 | // minuscules | ||
48 | $nom = mb_strtolower($nom, 'UTF-8'); | ||
49 | $infophoto['extension'] = mb_strtolower($infophoto['extension'], 'UTF-8'); | ||
50 | // ce qui n'est pas une lettre ou un chiffre est remplacé par un tiret, y compris les espaces | ||
51 | $nom = preg_replace('/([^.a-z0-9]+)/i', '-', $nom); | ||
52 | |||
53 | // modification de l'image | ||
54 | if (move_uploaded_file ($_FILES['photo']['tmp_name'], '/var/www/lelionetlecolibri.ordipolo.fr/articles/' . $nom)) | ||
55 | // on doit pouvoir écrire dans le dossier d'arrivée (mettre le chemin absolu) et dans /tmp | ||
56 | // pour permettre à PHP l'écriture et la traversée du dossier, taper: sudo chmod 733 /var/www/dossier/qu'on/veut | ||
57 | { | ||
58 | // nom de la miniature | ||
59 | $mini_nom = "mini_" . $nom; | ||
60 | |||
61 | $requête = $base->prepare('UPDATE articles SET nomphoto = :photo, miniature = :mini WHERE id = :li'); | ||
62 | $requête->execute(array( | ||
63 | 'photo' => $nom, | ||
64 | 'mini' => $mini_nom, | ||
65 | 'li' => $_POST['ligne'] | ||
66 | )); | ||
67 | |||
68 | // création d'une miniature | ||
69 | include("miniatures.php"); | ||
70 | |||
71 | header('Location: ../administration.php?nouvarticle=6'); // succès, move_uploaded_file renvoie la valeur TRUE | ||
72 | exit (); | ||
73 | } | ||
74 | else // echec à l'enregistrement, la fonction renvoie FALSE | ||
75 | { | ||
76 | header('Location: ../administration.php?nouvarticle=4'); | ||
77 | exit (); | ||
78 | } | ||
79 | } | ||
80 | else // mauvais format | ||
81 | { | ||
82 | header('Location: ../administration.php?nouvarticle=3'); | ||
83 | exit (); | ||
84 | } | ||
85 | } | ||
86 | else | ||
87 | { | ||
88 | header('Location: ../administration.php?nouvarticle=7'); | ||
89 | exit (); | ||
90 | } | ||
91 | } | ||
92 | elseif ($_POST['titre'] != '') // il faut au moins mettre un titre | ||
93 | { | ||
94 | // modification du texte | ||
95 | echo $_POST['ligne']; | ||
96 | |||
97 | $requête = $base->prepare('UPDATE articles SET nomarticle = :tit, contenu = :cont WHERE id = :li'); | ||
98 | $requête->execute(array( | ||
99 | 'tit' => $_POST['titre'], | ||
100 | 'cont' => $_POST['article'], | ||
101 | 'li' => $_POST['ligne'] | ||
102 | )); | ||
103 | |||
104 | header('Location: ../administration.php?nouvarticle=6'); | ||
105 | exit (); | ||
106 | } | ||
107 | else // pas de photo ni titre | ||
108 | { | ||
109 | header('Location: ../administration.php?nouvarticle=1'); | ||
110 | } | ||
111 | ?> | ||
diff --git a/articles/nettoyage-des-bois.jpg b/articles/nettoyage-des-bois.jpg new file mode 100644 index 0000000..bc91586 --- /dev/null +++ b/articles/nettoyage-des-bois.jpg | |||
Binary files differ | |||
diff --git a/articles/nora-isaac-22-millions-de-vue.jpg b/articles/nora-isaac-22-millions-de-vue.jpg new file mode 100644 index 0000000..b6595cf --- /dev/null +++ b/articles/nora-isaac-22-millions-de-vue.jpg | |||
Binary files differ | |||
diff --git a/articles/poney.png b/articles/poney.png new file mode 100644 index 0000000..eb3a7fd --- /dev/null +++ b/articles/poney.png | |||
Binary files differ | |||
diff --git a/articles/reseau.png b/articles/reseau.png new file mode 100644 index 0000000..59f36c9 --- /dev/null +++ b/articles/reseau.png | |||
Binary files differ | |||
diff --git a/articles/rouget.jpg b/articles/rouget.jpg new file mode 100644 index 0000000..5c581c1 --- /dev/null +++ b/articles/rouget.jpg | |||
Binary files differ | |||
diff --git a/articles/seules-les-betes.jpg b/articles/seules-les-betes.jpg new file mode 100644 index 0000000..f85f57f --- /dev/null +++ b/articles/seules-les-betes.jpg | |||
Binary files differ | |||
diff --git a/articles/supprarticle.php b/articles/supprarticle.php new file mode 100644 index 0000000..53b2477 --- /dev/null +++ b/articles/supprarticle.php | |||
@@ -0,0 +1,131 @@ | |||
1 | <?php | ||
2 | // PAGE SÉCURISÉE ! impossible de la voir si la variable $_SESSION['mdpvalide'] ne vaut pas 1 | ||
3 | |||
4 | session_start(); | ||
5 | if (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 | } | ||
16 | else | ||
17 | { | ||
18 | header('Location: ../connexion.php'); | ||
19 | exit (); | ||
20 | } | ||
21 | ?> | ||
22 | |||
23 | <!DOCTYPE html> | ||
24 | <html lang="fr" > | ||
25 | <head> | ||
26 | <meta charset="utf-8" /> | ||
27 | <title>suppression définitive</title> | ||
28 | <link rel="shortcut icon" type="image/x-icon" href="../favicon.ico" /> | ||
29 | <link rel="stylesheet" href="../blog.css" /> | ||
30 | <meta name="viewport" content="width=device-width" /> | ||
31 | <style> | ||
32 | section | ||
33 | { | ||
34 | margin: 10px 0px; | ||
35 | padding: 10px; | ||
36 | width: 960px; | ||
37 | } | ||
38 | </style> | ||
39 | </head> | ||
40 | |||
41 | <body> | ||
42 | <div id="bloc_page"> | ||
43 | <header> | ||
44 | <h1><img class="sakura" src="../sakura.png" alt="sakura" /> | ||
45 | Suppression définitive !! | ||
46 | <img class="sakura" src="../sakura.png" alt="sakura" /></h1> | ||
47 | </header> | ||
48 | |||
49 | <li id="admin" > | ||
50 | <p><a href="articlesliste.php" >retour page précédente</a></p> | ||
51 | </li> | ||
52 | |||
53 | <section> | ||
54 | |||
55 | <?php | ||
56 | // connexion à la base de données | ||
57 | include("../connexionbase.php"); | ||
58 | |||
59 | // confirmation suppression de l'image | ||
60 | if ($_POST['quoi'] == 'image') | ||
61 | { | ||
62 | $requête = $base->prepare('SELECT nomarticle, contenu, nomphoto, DATE_FORMAT(dateheure, \'article ajouté le %d/%m/%Y à %Hh%i\') | ||
63 | AS date FROM articles WHERE id = :li'); | ||
64 | $requête->execute(array( | ||
65 | 'li' => $_POST['ligne'] | ||
66 | )); | ||
67 | while ($données = $requête->fetch()) | ||
68 | { | ||
69 | echo('<p><i>Vous êtes sur le point de supprimer définitivement l\'image liée à cet article.</i></p>'); | ||
70 | echo('<article><p class="dateheure" >' . $données['date'] . '</p>'); | ||
71 | echo('<h2>' . htmlspecialchars($données['nomarticle']) . '</h2>'); | ||
72 | echo('<div class="contenu" > | ||
73 | <div><img src="' . $données['nomphoto'] . '" alt="" /></div>'); | ||
74 | echo('<div class="contenutexte" ><pre>' . htmlspecialchars($données['contenu']) . '</pre></div> | ||
75 | </div></article>'); | ||
76 | |||
77 | echo('<p><i><b>Êtes-vous sûr de vouloir supprimer définitivement cette image?<br/> | ||
78 | Cliquer sur le bouton ci-dessous pour confirmer:</b></i></p>'); | ||
79 | |||
80 | echo('<form method="post" action="supprconfirmée.php" > | ||
81 | <input type="hidden" name="quoi" value="image" > | ||
82 | <input type="hidden" name="confirmation" value="oui" > | ||
83 | <input type="hidden" name="ligne" value="' . $_POST['ligne'] . '" > | ||
84 | <p><input type="submit" value="CONFIRMER" /></p> | ||
85 | </form>'); | ||
86 | } | ||
87 | $requête->closeCursor(); | ||
88 | |||
89 | } | ||
90 | // confirmation suppression de l'article entier | ||
91 | elseif ($_POST['quoi'] == 'article') | ||
92 | { | ||
93 | $requête = $base->prepare('SELECT nomarticle, contenu, nomphoto, DATE_FORMAT(dateheure, \'article ajouté le %d/%m/%Y à %Hh%i\') | ||
94 | AS date FROM articles WHERE id = :li'); | ||
95 | $requête->execute(array( | ||
96 | 'li' => $_POST['ligne'] | ||
97 | )); | ||
98 | while ($données = $requête->fetch()) | ||
99 | { | ||
100 | echo('<p><i>Vous êtes sur le point de supprimer définitivement cet article (le texte, l\'image, tout).</i></p>'); | ||
101 | echo('<article><p class="dateheure" >' . $données['date'] . '</p>'); | ||
102 | echo('<h2>' . htmlspecialchars($données['nomarticle']) . '</h2>'); | ||
103 | echo('<div class="contenu" > | ||
104 | <div><img src="' . $données['nomphoto'] . '" alt="" /></div>'); | ||
105 | echo('<div class="contenutexte" ><pre>' . htmlspecialchars($données['contenu']) . '</pre></div> | ||
106 | </div></article>'); | ||
107 | |||
108 | echo('<p><i><b>Êtes-vous sûr de vouloir supprimer définitivement cet article?<br/> | ||
109 | Cliquer sur le bouton ci-dessous pour confirmer:</b></i></p>'); | ||
110 | |||
111 | echo('<form method="post" action="supprconfirmée.php" > | ||
112 | <input type="hidden" name="quoi" value="article" > | ||
113 | <input type="hidden" name="confirmation" value="oui" > | ||
114 | <input type="hidden" name="ligne" value="' . $_POST['ligne'] . '" > | ||
115 | <p><input type="submit" value="CONFIRMER" /></p> | ||
116 | </form>'); | ||
117 | } | ||
118 | $requête->closeCursor(); | ||
119 | |||
120 | } | ||
121 | else | ||
122 | { | ||
123 | header('Location: articlesliste.php'); | ||
124 | exit (); | ||
125 | } | ||
126 | ?> | ||
127 | |||
128 | </section> | ||
129 | </div> | ||
130 | </body> | ||
131 | </html> | ||
diff --git a/articles/supprconfirmée.php b/articles/supprconfirmée.php new file mode 100644 index 0000000..0b5c08a --- /dev/null +++ b/articles/supprconfirmée.php | |||
@@ -0,0 +1,85 @@ | |||
1 | <?php | ||
2 | // PAGE SÉCURISÉE ! impossible de la voir si la variable $_SESSION['mdpvalide'] ne vaut pas 1 | ||
3 | |||
4 | session_start(); | ||
5 | if (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 | } | ||
16 | else | ||
17 | { | ||
18 | header('Location: ../connexion.php'); | ||
19 | exit (); | ||
20 | } | ||
21 | |||
22 | |||
23 | // connexion à la base de données | ||
24 | include("../connexionbase.php"); | ||
25 | |||
26 | |||
27 | // supprimer l'image | ||
28 | if (isset ($_POST['quoi']) AND ($_POST['confirmation'])) | ||
29 | { | ||
30 | if ($_POST['quoi'] == 'image' AND $_POST['confirmation'] == 'oui' ) | ||
31 | { | ||
32 | // pour l'image | ||
33 | $requête = $base->prepare('SELECT nomphoto, miniature FROM articles WHERE id = :li'); | ||
34 | $requête->execute(array( | ||
35 | 'li' => $_POST['ligne'] | ||
36 | )); | ||
37 | while ($données = $requête->fetch()) | ||
38 | { | ||
39 | unlink ($données['nomphoto']); | ||
40 | unlink ($données['miniature']); | ||
41 | } | ||
42 | |||
43 | // pour le nom de l'image dans la base de données | ||
44 | $requête = $base->prepare('UPDATE articles SET nomphoto = \'\', miniature = \'\' WHERE id = :li'); | ||
45 | $requête->execute(array( | ||
46 | 'li' => $_POST['ligne'] | ||
47 | )); | ||
48 | |||
49 | header('Location: articlesliste.php?suppr=1'); | ||
50 | exit (); | ||
51 | } | ||
52 | elseif ($_POST['quoi'] == 'article' AND $_POST['confirmation'] == 'oui' ) | ||
53 | { | ||
54 | // pour l'image | ||
55 | $requête = $base->prepare('SELECT nomphoto, miniature FROM articles WHERE id = :li'); | ||
56 | $requête->execute(array( | ||
57 | 'li' => $_POST['ligne'] | ||
58 | )); | ||
59 | while ($données = $requête->fetch()) | ||
60 | { | ||
61 | unlink ($données['nomphoto']); | ||
62 | unlink ($données['miniature']); | ||
63 | } | ||
64 | |||
65 | // pour la ligne dans la base de données | ||
66 | $requête = $base->prepare('DELETE FROM articles WHERE id = :li'); | ||
67 | $requête->execute(array( | ||
68 | 'li' => $_POST['ligne'] | ||
69 | )); | ||
70 | |||
71 | header('Location: articlesliste.php?suppr=2'); | ||
72 | exit (); | ||
73 | } | ||
74 | else | ||
75 | { | ||
76 | header('Location: articlesliste.php?erreursuppr=1'); | ||
77 | exit (); | ||
78 | } | ||
79 | } | ||
80 | else | ||
81 | { | ||
82 | header('Location: articlesliste.php?erreursuppr=1'); | ||
83 | exit (); | ||
84 | } | ||
85 | ?> | ||
diff --git a/articles/surf.png b/articles/surf.png new file mode 100644 index 0000000..eb6c2df --- /dev/null +++ b/articles/surf.png | |||
Binary files differ | |||