summaryrefslogtreecommitdiff
path: root/photospolo
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2024-02-09 15:56:55 +0100
committerpolo <ordipolo@gmx.fr>2024-02-09 15:56:55 +0100
commit949737cf5fc2a21b36c4a269a437d0dc2e965441 (patch)
tree5a6962408f833e6e2b04519fed544193e41e6360 /photospolo
downloadlelionetlecolibri-949737cf5fc2a21b36c4a269a437d0dc2e965441.zip
1er commitHEADmaster
Diffstat (limited to 'photospolo')
-rw-r--r--photospolo/listephoto.php110
-rw-r--r--photospolo/photo.txt1
-rw-r--r--photospolo/photomodif.php53
-rw-r--r--photospolo/photoupload.php90
-rw-r--r--photospolo/polo.jpgbin0 -> 9064 bytes
5 files changed, 254 insertions, 0 deletions
diff --git a/photospolo/listephoto.php b/photospolo/listephoto.php
new file mode 100644
index 0000000..a2026db
--- /dev/null
+++ b/photospolo/listephoto.php
@@ -0,0 +1,110 @@
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<!DOCTYPE html>
24<html lang="fr" >
25 <head>
26 <meta charset="utf-8" />
27 <title>photos de polo</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 border: 2px #FFBD8D solid;
35 margin: 10px 0px;
36 padding: 10px;
37 }
38 @media all and (min-width: 980px)
39 {
40 section
41 {
42 width: 960px;
43 }
44 }
45 section img
46 {
47 width: 170px;
48 padding: 0px 10px;
49 }
50 #listephoto
51 {
52 display: flex;
53 flex-wrap: wrap;
54 }
55 </style>
56 </head>
57
58 <body>
59 <div id="bloc_page">
60
61 <header>
62 <h1><img class="sakura" src="../sakura.png" alt="sakura" />photos de polo<img class="sakura" src="../sakura.png" alt="sakura" /></h1>
63 </header>
64
65 <li id="admin" >
66 <p><a href="../administration.php" >retour page précédente</a></p>
67 </li>
68
69 <!-- connexion à la base de données -->
70 <?php include("../connexionbase.php"); ?>
71
72 <section>
73 <p>Choisir une photo parmi celles déjà sur le serveur:</p>
74
75 <div id="listephoto" >
76 <?php
77 // afficher la table des noms des photos
78 $réponse = $base->query('SELECT * FROM photospolo');
79 while ($données = $réponse->fetch())
80 {
81 echo('<div><a href="photomodif.php?id=' . $données['id'] . '" ><img src="' . $données['nomphoto'] . '" alt="photo" /></a>');
82 echo('<a href="photomodif.php?id=' . $données['id'] . '" ><p>' . $données['nomphoto'] . '</p></a></div>');
83 }
84
85 $réponse->closeCursor();
86 ?>
87 </div>
88
89 </section>
90
91 <section>
92 <!-- formulaire upload nouvelle photo -->
93 <form method="post" action="photoupload.php" enctype="multipart/form-data" >
94 <p>Télécharger une nouvelle photo depuis mon PC / tablette / téléphone.</p>
95 <input type="file" name="photo" id="photo" />
96 <!-- on crée la variable $_FILES["photo"], taille max de 2 MO sinon la photo est refusée par le serveur -->
97 <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
98 <input type="submit" value="Télécharger le fichier" />
99 </form>
100
101 <p>Attention: taille maximale de 2 MO !</p>
102 </section>
103
104 <li id="admin" >
105 <p><i>Ne pas oublier de cliquer sur "déconnexion" quand on a fini !</i></p>
106 <p><a href="../logout.php" >déconnexion</a></p>
107 </li>
108
109 </body>
110</html>
diff --git a/photospolo/photo.txt b/photospolo/photo.txt
new file mode 100644
index 0000000..23c7e3a
--- /dev/null
+++ b/photospolo/photo.txt
@@ -0,0 +1 @@
polo.jpg \ No newline at end of file
diff --git a/photospolo/photomodif.php b/photospolo/photomodif.php
new file mode 100644
index 0000000..9be46c0
--- /dev/null
+++ b/photospolo/photomodif.php
@@ -0,0 +1,53 @@
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// modifier la photo sélectionnée
28if (isset ($_GET['id']))
29{
30 // choix de la ligne en fonction de son id
31 $requête = $base->prepare('SELECT * FROM photospolo WHERE id = :numero');
32 $requête->execute(array('numero' => $_GET['id']));
33
34 while ($données = $requête->fetch())
35 {
36 $nom = $données['nomphoto'];
37 }
38
39 $requête->closeCursor();
40
41 $fichier = fopen('photo.txt','r+');
42 ftruncate($fichier,0); // évite les problèmes quand on change pour un titre plus court
43 fputs($fichier, $nom);
44 fseek($fichier, 0);
45 fclose($fichier);
46
47 header('Location: ../administration.php?modifphoto=4');
48 exit ();
49}
50else
51{}
52
53?>
diff --git a/photospolo/photoupload.php b/photospolo/photoupload.php
new file mode 100644
index 0000000..c3a2079
--- /dev/null
+++ b/photospolo/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?>
diff --git a/photospolo/polo.jpg b/photospolo/polo.jpg
new file mode 100644
index 0000000..6d9ccb6
--- /dev/null
+++ b/photospolo/polo.jpg
Binary files differ