summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2021-08-14 01:32:59 +0200
committerpolo <ordipolo@gmx.fr>2021-08-14 01:32:59 +0200
commit07e0291bfad8ef3a8b37bf0d0ebf20df936e7b7f (patch)
tree81fa397b2482984554c2d559e8cca7e08dfec312
parentcd4cffac62363c132d5ce98680b0303dd9b4d4f9 (diff)
downloadmelaine-07e0291bfad8ef3a8b37bf0d0ebf20df936e7b7f.zip
password
-rw-r--r--controller/admin.php48
-rw-r--r--controller/ckeditor.php12
-rw-r--r--controller/password.php16
-rw-r--r--controller/visitor.php8
-rw-r--r--data/password.txt1
-rw-r--r--index.php11
-rw-r--r--model/Classes.php8
-rw-r--r--public/accueil.css12
-rw-r--r--public/main.js13
-rw-r--r--view/connexion.php27
-rw-r--r--view/melaine.php4
-rw-r--r--view/template.php6
12 files changed, 135 insertions, 31 deletions
diff --git a/controller/admin.php b/controller/admin.php
index d738dc0..29ccd41 100644
--- a/controller/admin.php
+++ b/controller/admin.php
@@ -31,6 +31,7 @@ function melaineEdit($numArticle, $suppression)
31 { 31 {
32 $Articles->delete(); 32 $Articles->delete();
33 header('Location: index.php?page=' . $page_actuelle); 33 header('Location: index.php?page=' . $page_actuelle);
34 exit();
34 } 35 }
35 // modification 36 // modification
36 else 37 else
@@ -46,22 +47,20 @@ function melaineEdit($numArticle, $suppression)
46 $Articles->reverseFilesArray(); 47 $Articles->reverseFilesArray();
47 $articles = $Articles->getAll(); 48 $articles = $Articles->getAll();
48 49
50 // sécurisation du contenu pré-existant inséré dans l'éditeur
49 if($numArticle >= 0 && !$suppression) 51 if($numArticle >= 0 && !$suppression)
50 { 52 {
51 // traitements PHP pour l'éditeur
52 require('controller/ckeditor.php'); 53 require('controller/ckeditor.php');
53 // sécurisation du contenu pré-existant inséré dans l'éditeur
54 $texte = preparationCKeditor($numArticle, $texte); 54 $texte = preparationCKeditor($numArticle, $texte);
55 } 55 }
56 56
57 // NB: penser à ajouter au template la fonctionnalité "autosave" 57 // NB: penser à ajouter au template la fonctionnalité "autosave"
58 // https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/saving-data.html 58 // https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/saving-data.html
59 59
60 // création des morceaux en HTML avant assemblage 60 // morceaux en HTML à assembler
61 61 // variable $editeurHTML, contient $texte
62 // variable $editeurHTML, on insère $texte dedans
63 require('view/template-formulaires.php'); 62 require('view/template-formulaires.php');
64 // variables $css, $js, $header et $content 63 // variables $css, $js, $header et $content,
65 // $content contient $articles et $editeurHTML 64 // $content contient $articles et $editeurHTML
66 require('view/melaine.php'); 65 require('view/melaine.php');
67 // fin de l'assemblage 66 // fin de l'assemblage
@@ -82,25 +81,26 @@ function discoEdit($numArticle, $suppression)
82 // sécurisation du contenu pré-existant inséré dans l'éditeur 81 // sécurisation du contenu pré-existant inséré dans l'éditeur
83 $texte = preparationCKeditor($numArticle, $texte); 82 $texte = preparationCKeditor($numArticle, $texte);
84 83
85 // variable $editeurHTML, on insère $texte dedans 84 // morceaux en HTML à assembler
85 // variable $editeurHTML, contient $texte
86 require('view/template-formulaires.php'); 86 require('view/template-formulaires.php');
87 // variables $css, $js, $header et $content 87 // variables $css, $js, $header et $content,
88 // $content contient ???? et $editeurHTML 88 // $content contient ???? et $editeurHTML
89 require('view/discographie.php'); 89 require('view/discographie.php');
90 // fin de l'assemblage 90 // fin de l'assemblage
91 require('view/template.php'); 91 require('view/template.php');
92} 92}
93 93
94function changerMotDePasse($secret, $from) 94function changerMotDePasse($secret)
95{ 95{
96 // vérification supplémentaire 96 // vérification supplémentaire
97 if($_SESSION['admin'] !== 1) 97 if($_SESSION['admin'] !== 1)
98 { 98 {
99 $_SESSION['admin'] = 0; 99 $_SESSION['admin'] = 0;
100 header('Location: index.php?page=' . $_GET['from']); 100 header('Location: index.php?page=' . $_GET['from']);
101 exit();
101 } 102 }
102 103
103 $title = "nouveau mot de passe";
104 // Ajouter une sécurité par cpatcha avec un "input" supplémentaire 104 // Ajouter une sécurité par cpatcha avec un "input" supplémentaire
105 // Et créer une variable de session pour la réponse au CAPTCHA 105 // Et créer une variable de session pour la réponse au CAPTCHA
106 106
@@ -112,7 +112,33 @@ function changerMotDePasse($secret, $from)
112 112
113 echo($header); 113 echo($header);
114 114
115 // traitements: vérification ancien mot de passe et choix du nouveau 115 // traitements: vérification ancien mot de passe et choix du nouveau
116 // bon mot de passe
117 if(isset ($_POST["ancienMotdepasse"]) AND $_POST["ancienMotdepasse"] == $secret)
118 {
119 // confirmation
120 echo($message);
121 //exit();
122
123 /*header('Location: index.php?page=' . $_GET['from'] . '&message=nouveau_mdp');
124 exit();*/
125 }
126
127 // mauvais mot de passe
128 elseif(isset ($_POST["ancienMotdepasse"]) AND $_POST["ancienMotdepasse"] != $secret)
129 {
130 // défense aux attaques par force brute
131 // pas parfait, ne marche pas si l'attaquant multiplie les connexions au site
132 echo($erreurMDP);
133 sleep(1);
134 echo($formulaireNouveauMDP);
135 }
136
137 // première arrivée sur la page
138 else
139 {
140 echo($formulaireNouveauMDP);
141 }
116 142
117 echo($footer); 143 echo($footer);
118} 144}
diff --git a/controller/ckeditor.php b/controller/ckeditor.php
index 9262da0..d25e5ac 100644
--- a/controller/ckeditor.php
+++ b/controller/ckeditor.php
@@ -71,13 +71,21 @@ function submitCKeditor($nomFichier)
71 { 71 {
72 $titre = $_POST['titre']; 72 $titre = $_POST['titre'];
73 $annee = $_POST['annee']; 73 $annee = $_POST['annee'];
74 $pochette = $_POST['pochette']; 74 $pochette = $_POST['pochette']; // une image
75 75
76 // des formulaires simples
76 $titre = htmLawed($titre, $configHtmLawed, $specHtmLawed); 77 $titre = htmLawed($titre, $configHtmLawed, $specHtmLawed);
77 $titre = trim($titre); 78 $titre = trim($titre);
78 $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed);
79 $annee = htmLawed($annee, $configHtmLawed, $specHtmLawed); 79 $annee = htmLawed($annee, $configHtmLawed, $specHtmLawed);
80 $annee = trim($annee); 80 $annee = trim($annee);
81
82 // pochette
83 // Album->imageUpload();
84 // test formats jpg, jpeg, png, gif, tiff
85 // enregistrement du fichier
86
87 // du ckeditor
88 $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed);
81 $contenu = trim($contenu); 89 $contenu = trim($contenu);
82 } 90 }
83 else // pages comme "melaine" 91 else // pages comme "melaine"
diff --git a/controller/password.php b/controller/password.php
new file mode 100644
index 0000000..987670f
--- /dev/null
+++ b/controller/password.php
@@ -0,0 +1,16 @@
1<?php
2// password.php
3
4function hashNewPassword()
5{
6 //$hash = password_hash($password, PASSWORD_DEFAULT);
7
8 // écrire dans un fichier
9}
10
11function testPassword()
12{
13 // lire dans un fichier
14
15 //if(password_verify($password, $hash))
16} \ No newline at end of file
diff --git a/controller/visitor.php b/controller/visitor.php
index 16f9c40..539df1f 100644
--- a/controller/visitor.php
+++ b/controller/visitor.php
@@ -87,6 +87,7 @@ function connexion($secret)
87 if($_SESSION['admin'] == 1) 87 if($_SESSION['admin'] == 1)
88 { 88 {
89 header('Location: index.php?page=' . $_GET['from']); 89 header('Location: index.php?page=' . $_GET['from']);
90 exit();
90 } 91 }
91 92
92 // Ajouter une sécurité par cpatcha avec un "input" supplémentaire 93 // Ajouter une sécurité par cpatcha avec un "input" supplémentaire
@@ -105,14 +106,15 @@ function connexion($secret)
105 { 106 {
106 $_SESSION['admin'] = 1; 107 $_SESSION['admin'] = 1;
107 header('Location: index.php?page=' . $_GET['from']); 108 header('Location: index.php?page=' . $_GET['from']);
108 exit (); 109 exit();
109 } 110 }
110 111
111 // mauvaise mot de passe 112 // mauvais mot de passe
112 elseif(isset ($_POST["motdepasse"]) AND $_POST["motdepasse"] != $secret) 113 elseif(isset ($_POST["motdepasse"]) AND $_POST["motdepasse"] != $secret)
113 { 114 {
114 // défense aux attaques par force brute 115 // défense aux attaques par force brute
115 // pas parfait, ne marche pas si l'attaquant multiplie les connexions au site 116 // pas parfait, ne marche pas si l'attaquant multiplie les connexions au site
117 echo($erreurMDP);
116 sleep(1); 118 sleep(1);
117 echo($formulaireConnexion); 119 echo($formulaireConnexion);
118 } 120 }
@@ -124,4 +126,4 @@ function connexion($secret)
124 } 126 }
125 127
126 echo($footer); 128 echo($footer);
127} \ No newline at end of file 129}
diff --git a/data/password.txt b/data/password.txt
new file mode 100644
index 0000000..46afb44
--- /dev/null
+++ b/data/password.txt
@@ -0,0 +1 @@
julian \ No newline at end of file
diff --git a/index.php b/index.php
index cb6ea60..8f6128e 100644
--- a/index.php
+++ b/index.php
@@ -115,9 +115,13 @@ else
115 $_SESSION['admin'] = 0; 115 $_SESSION['admin'] = 0;
116} 116}
117 117
118// mot de passe de connexion à protéger par le .htaccess !! 118
119// mot de passe de connexion à hacher!
120// utiliser php pour ça, plus le .htaccess
121require('controller/password.php');
119$secret = "julian"; 122$secret = "julian";
120 123
124
121// page du site demandée 125// page du site demandée
122if(isset($_GET['page'])) 126if(isset($_GET['page']))
123{ 127{
@@ -208,12 +212,13 @@ if(isset($_GET['page']))
208 } 212 }
209} 213}
210 214
211// actions en mode admin recharger une des pages principales 215
216// actions en mode admin, recharger une des pages principales
212elseif($_SESSION['admin'] == 1 && isset($_GET['action'])) 217elseif($_SESSION['admin'] == 1 && isset($_GET['action']))
213{ 218{
214 if($_GET['action'] == 'nouveau_mdp') 219 if($_GET['action'] == 'nouveau_mdp')
215 { 220 {
216 changerMotDePasse($secret, $_GET['from']); 221 changerMotDePasse($secret);
217 } 222 }
218 // extraction du contenu du dossier data 223 // extraction du contenu du dossier data
219 else if($_GET['action'] == 'extraction') 224 else if($_GET['action'] == 'extraction')
diff --git a/model/Classes.php b/model/Classes.php
index a455213..1b2a463 100644
--- a/model/Classes.php
+++ b/model/Classes.php
@@ -160,7 +160,8 @@ class AlbumsManager extends ArticlesManager
160 160
161 // create 161 // create
162 //public function create($titre, $annee, $pochette) 162 //public function create($titre, $annee, $pochette)
163 public function create($content) 163 //public function create($content)
164 public function create($content, $titre, $annee, $pochette)
164 {} 165 {}
165 166
166 // read 167 // read
@@ -168,8 +169,9 @@ class AlbumsManager extends ArticlesManager
168 {} 169 {}
169 170
170 // update 171 // update
171 //public function create($titre, $annee, $pochette) 172 //public function update($titre, $annee, $pochette)
172 public function update($content) 173 //public function update($content)
174 public function update($content, $titre, $annee, $pochette)
173 {} 175 {}
174 176
175 // delete 177 // delete
diff --git a/public/accueil.css b/public/accueil.css
index aba7196..2e4426a 100644
--- a/public/accueil.css
+++ b/public/accueil.css
@@ -79,6 +79,12 @@ img
79 margin-top: 5px; 79 margin-top: 5px;
80} 80}
81 81
82form
83{
84 padding-bottom: 14px;
85 border-bottom: 1px black solid;
86}
87
82#courriel 88#courriel
83{ 89{
84 padding-top: 30px; 90 padding-top: 30px;
@@ -169,6 +175,12 @@ img
169 margin-top: 0px; 175 margin-top: 0px;
170 text-align: center; 176 text-align: center;
171} 177}
178.avertissement
179{
180 color: red;
181 font-size: 90%;
182 text-align: center;
183}
172 184
173.connexionFormulaire 185.connexionFormulaire
174{ 186{
diff --git a/public/main.js b/public/main.js
index 1c04dec..ec2b2f1 100644
--- a/public/main.js
+++ b/public/main.js
@@ -3,7 +3,8 @@
3function versMenu() 3function versMenu()
4{ 4{
5 // ergonomique 5 // ergonomique
6 window.setTimeout("location=('index.php?page=menu');", 10000); 6 //window.setTimeout("location=('index.php?page=menu');", 10000);
7 window.setTimeout(function(){location.href="index.php?page=menu"}, 3000);
7} 8}
8 9
9function deconnexionAutomatique() 10function deconnexionAutomatique()
@@ -18,7 +19,7 @@ function deconnexionAutomatique()
18// fonction appelée avec onClick dans un lien, 19// fonction appelée avec onClick dans un lien,
19// si on sélectionne pas "oui", on ne doit pas suivre le lien 20// si on sélectionne pas "oui", on ne doit pas suivre le lien
20// si javascript est désactivé, le lien fonctionne 21// si javascript est désactivé, le lien fonctionne
21function confirmerSuppression(page) 22function confirmerSuppression()
22{ 23{
23 // ne suivre le lien "href" que si on clique sur oui 24 // ne suivre le lien "href" que si on clique sur oui
24 var oui = confirm('Confirmer la suppression de cet article.'); 25 var oui = confirm('Confirmer la suppression de cet article.');
@@ -51,7 +52,7 @@ function copierAdresse()
51 document.body.appendChild(element); 52 document.body.appendChild(element);
52 var cible = document.getElementById('copyMe'); 53 var cible = document.getElementById('copyMe');
53 54
54 // selection comme-ci on utilisait la souris 55 // selection comme on le ferait à la souris
55 cible.select(); 56 cible.select();
56 // copie (= Ctrl + C) 57 // copie (= Ctrl + C)
57 document.execCommand("copy"); 58 document.execCommand("copy");
@@ -66,3 +67,9 @@ function copierAdresse()
66// var cible = document.getElementById('nouvelArticle'); 67// var cible = document.getElementById('nouvelArticle');
67// cible.setAttribute("style", "display: none;"); 68// cible.setAttribute("style", "display: none;");
68// } 69// }
70
71function nouveauMotdepasse(page)
72{
73 confirm('Le mot de passe a été modifié.');
74 window.setTimeout(location=('index.php?page=' + page + '&message=nouveau_mdp'), 0);
75} \ No newline at end of file
diff --git a/view/connexion.php b/view/connexion.php
index 2187ecf..1c3aceb 100644
--- a/view/connexion.php
+++ b/view/connexion.php
@@ -20,7 +20,14 @@ $formulaireConnexion = ob_get_clean();
20// vérification de l'ancien et choix du nouveau à taper deux fois dont une à l'aveugle 20// vérification de l'ancien et choix du nouveau à taper deux fois dont une à l'aveugle
21ob_start(); 21ob_start();
22?> 22?>
23 23 <form class="connexionFormulaire" method="post" action="index.php?from=<?= $_GET['from'] ?>&action=nouveau_mdp" >
24 <label for="motdepasse" >Ancien mot de passe:</label>
25 <input type="password" name="ancienMotdepasse" autofocus required ><br /><br />
26 <label for="motdepasse" >Nouveau mot de passe:</label>
27 <input type="password" name="nouveauMotdepasse" required >
28 <br /><br />
29 <input type="submit" value="Valider" >
30 </form>
24<?php 31<?php
25$formulaireNouveauMDP = ob_get_clean(); 32$formulaireNouveauMDP = ob_get_clean();
26 33
@@ -38,6 +45,7 @@ ob_start();
38 <link rel="icon" type="image/png" href="public/mouette-logo.png" > 45 <link rel="icon" type="image/png" href="public/mouette-logo.png" >
39 <link rel="stylesheet" type="text/css" href="public/normalize.css"> 46 <link rel="stylesheet" type="text/css" href="public/normalize.css">
40 <link rel="stylesheet" type="text/css" href="public/accueil.css" /> 47 <link rel="stylesheet" type="text/css" href="public/accueil.css" />
48 <script type="text/javascript" src="public/main.js" ></script>
41 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 49 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
42 </head> 50 </head>
43 51
@@ -48,9 +56,26 @@ ob_start();
48<?php 56<?php
49$header = ob_get_clean(); 57$header = ob_get_clean();
50 58
59
60// message d'erreur
61$erreurMDP = '<p class="avertissement" >Mauvais mot de passe</p>';
62
63// confirmation modification mot de passe
64ob_start();
65?>
66<script type="text/javascript" >nouveauMotdepasse('<?= $_GET["from"] ?>');</script>
67<noscript>
68 <p class="avertissement" >Le mot de passe a été modifié<br />
69 <a href="index.php" >Retour au site.</a><br/></p>
70</noscript>
71<?php
72$message = ob_get_clean();
73
74
51// pied de page 75// pied de page
52ob_start(); 76ob_start();
53?> 77?>
78 <p class="avertissement" >Rappel de sécurité<br />Vous n'utilisez pas votre propre ordinateur ou téléphone: utilisez la navigation privée!</p>
54 <p class="connexionFooter" > 79 <p class="connexionFooter" >
55 <i>N'oubliez de cliquer sur "déconnexion" quand vous aurez fini.</i><br /> 80 <i>N'oubliez de cliquer sur "déconnexion" quand vous aurez fini.</i><br />
56 <a href="index.php?page=<?= $_GET['from'] ?>" >Retour à la page précédente</a> 81 <a href="index.php?page=<?= $_GET['from'] ?>" >Retour à la page précédente</a>
diff --git a/view/melaine.php b/view/melaine.php
index 657c656..cdb24cc 100644
--- a/view/melaine.php
+++ b/view/melaine.php
@@ -90,7 +90,7 @@ foreach ($articles as $article)
90 // placer un article 90 // placer un article
91 else 91 else
92 { 92 {
93 // c'était pas compliqué 93 // et voila
94 echo($article . "\n"); 94 echo($article . "\n");
95 95
96 // bouton 96 // bouton
@@ -102,7 +102,7 @@ foreach ($articles as $article)
102 Modifier cet article 102 Modifier cet article
103 </a> 103 </a>
104 &nbsp;<!-- un espace --> 104 &nbsp;<!-- un espace -->
105 <a href="index.php?page=melaine&action=suppression&article=<?= $j ?>" onclick="confirmerSuppression('<?= $page_actuelle ?>')" > 105 <a href="index.php?page=melaine&action=suppression&article=<?= $j ?>" onclick="confirmerSuppression()" >
106 Supprimer cet article 106 Supprimer cet article
107 </a> 107 </a>
108 </p> 108 </p>
diff --git a/view/template.php b/view/template.php
index b7ea0fb..ded1d08 100644
--- a/view/template.php
+++ b/view/template.php
@@ -77,11 +77,11 @@ if($_SESSION['admin'] == 1)
77 <div> 77 <div>
78 <p><a href="index.php?from=<?= $page_actuelle ?>&action=nouveau_mdp" > 78 <p><a href="index.php?from=<?= $page_actuelle ?>&action=nouveau_mdp" >
79 Changer le mot de passe de connexion.</a></p> 79 Changer le mot de passe de connexion.</a></p>
80 <p><a href="index.php?from=<?= $page_actuelle ?>&action=sauvegarde" >
81 Sauvegarder les données de tout le site.</a></p>
82 <p><a href="index.php?from=<?= $page_actuelle ?>&action=restauration" >Restaurer les données avec une sauvegarde.</a></p>
80 <p><a href="melainePHP.zip" > 83 <p><a href="melainePHP.zip" >
81 Télécharger le code PHP pour migration.</a></p> 84 Télécharger le code PHP pour migration.</a></p>
82 <p><a href="index.php?from=<?= $page_actuelle ?>&action=extraction" >
83 Extraire les données de tout le site.</a></p>
84 <p><a href="index.php?from=<?= $page_actuelle ?>&action=insertion" >Restauration des données avec une sauvegarde.</a></p>
85 </div> 85 </div>
86 </div> 86 </div>
87<?php 87<?php