summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contact-post.php96
-rw-r--r--contact.php101
-rw-r--r--detecteur.js30
-rw-r--r--images/SAP.pngbin0 -> 142628 bytes
-rw-r--r--images/contact.pngbin0 -> 2882 bytes
-rw-r--r--images/favicon.icobin0 -> 5686 bytes
-rw-r--r--images/favicon.pngbin0 -> 928 bytes
-rw-r--r--images/logo-reparacteurs.jpgbin0 -> 5611 bytes
-rw-r--r--images/logo.pngbin0 -> 81428 bytes
-rw-r--r--images/moi.jpgbin0 -> 9064 bytes
-rw-r--r--images/oneline.jpgbin0 -> 53096 bytes
-rw-r--r--images/ordipolo.pngbin0 -> 57420 bytes
-rw-r--r--images/sakura.pngbin0 -> 4686 bytes
-rw-r--r--index.php230
-rw-r--r--infos.php71
-rw-r--r--julian/formule.pngbin0 -> 11011 bytes
-rw-r--r--julian/maths.html32
-rw-r--r--julian/polygones.pngbin0 -> 10340 bytes
-rw-r--r--kiffe.php80
-rw-r--r--menu.php8
-rw-r--r--ordipolo.css308
-rw-r--r--refuser_indexation.txt6
-rw-r--r--stats.php90
-rw-r--r--visites.php84
24 files changed, 1136 insertions, 0 deletions
diff --git a/contact-post.php b/contact-post.php
new file mode 100644
index 0000000..6d6f19d
--- /dev/null
+++ b/contact-post.php
@@ -0,0 +1,96 @@
1<?php
2session_start(); // pour reremplir le formulaire en cas d'échec à l'envoi
3$_SESSION['adresse'] = $_POST['adresse'];
4$_SESSION['contenu'] = $_POST['contenu'];
5
6if (isset($_POST['captcha']))
7{
8 if ($_POST['captcha'] == 21)
9 {
10 if (isset ($_POST['adresse']) AND isset ($_POST['contenu']))
11 {
12 if ($_POST['adresse'] != '' AND $_POST['contenu'] != '')
13 {
14 // convertir les caractères spéciaux en leur équivalent HTML
15 //$adresse = htmlentities($_POST['adresse']);
16 $adresse = $_POST['adresse'];
17 //$contenu = htmlentities($_POST['contenu']);
18 $contenu = $_POST['contenu'];
19
20 if (filter_var($adresse, FILTER_VALIDATE_EMAIL))
21 {
22 $destinataire = 'contact@ordipolo.fr';
23 $sujet = 'message de ' . htmlspecialchars($adresse) . ' envoyé depuis le site';
24
25 // On filtre les serveurs qui rencontrent des bogues.
26 /*if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $destinataire))
27 {
28 $passage_ligne = "\r\n";
29 }
30 else
31 {
32 $passage_ligne = "\n";
33 }*/
34 $passage_ligne = "\r\n";
35
36 //$contenu = htmlspecialchars($contenu);
37
38 echo $passage_ligne;
39
40 // En-tête
41 //$boundary = "-----=" . md5(rand());
42
43 $header = 'From: siteweb <' . $adresse . '>' . $passage_ligne; // expéditeur
44 $header .= 'Reply-to: ' . $adresse . ' <' . $adresse . '>' . $passage_ligne; // réponse
45 $header .= 'Return-path : ' . $adresse . ' <' . $adresse . '>' . $passage_ligne; // retour en cas d'erreur
46 $header .= 'MIME-Version: 1.0' . $passage_ligne;
47 $header .= 'Content-type: text/plain; charset=utf-8 boundary=\"' . $boundary . '\"' . $passage_ligne;
48
49 // message
50 //$message = $passage_ligne."--".$boundary.$passage_ligne;
51 //$message .= "Content-Transfer-Encoding: 8bit".$passage_ligne;
52 $message .= $passage_ligne . $contenu . $passage_ligne;
53 //$message .= $passage_ligne."--".$boundary.$passage_ligne;
54
55 echo $destinataire;
56 echo "<br/>";
57 echo $sujet;
58 echo "<br/>";
59 echo $message;
60 echo "<br/>";
61 echo $header;
62
63 // Envoi
64 mail($destinataire, $sujet, $message, $header);
65
66 // envoi réussi, on peut nettoyer
67 unset ($_SESSION['adresse']);
68 unset ($_SESSION['contenu']);
69
70 header('Location: contact.php?erreur=0');
71 }
72 else
73 {
74 header('Location: contact.php?erreur=1');
75 }
76 }
77 else
78 {
79 header('Location: contact.php?erreur=1');
80 }
81 }
82 else
83 {
84 header('Location: contact.php?erreur=1');
85 }
86 }
87 else
88 {
89 header('Location: contact.php?erreur=2');
90 }
91}
92else
93{
94 header('Location: contact.php?erreur=2');
95}
96?>
diff --git a/contact.php b/contact.php
new file mode 100644
index 0000000..3eeaf83
--- /dev/null
+++ b/contact.php
@@ -0,0 +1,101 @@
1<?php
2// reremplir le formulaire en cas d'échec à l'envoi
3session_start();
4if(isset($_SESSION['contenu']))
5{
6 $contenu = $_SESSION['contenu'];
7}
8else
9{
10 $contenu = '';
11}
12if(isset($_SESSION['adresse']))
13{
14 $adresse = $_SESSION['adresse'];
15}
16else
17{
18 $adresse = '';
19}
20?>
21<!DOCTYPE html>
22<html lang="fr" >
23 <head>
24 <!-- pour pouvoir envoyer un mail html, l'en-tête content-type doit être présente -->
25 <meta http-equiv="Content-Type" content="text/html" />
26 <meta charset="utf-8" />
27 <title>Contacter Ordipolo</title>
28 <link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico" />
29 <link rel="icon" type="image/png" href="images/favicon.png" >
30 <link rel="stylesheet" href="ordipolo.css" />
31 <meta name="description" content="Contacter Ordipolo." />
32 <meta name="viewport" content="width=device-width" />
33 <style>
34 i{color: red;} /* messages d'erreur */
35 article p{margin: 0px;}
36 article{margin-bottom: 20px;}
37 @media screen and (max-width: 750px){aside{display: none;}}
38 </style>
39 </head>
40
41 <body>
42 <div id="bloc_page" >
43 <header>
44 <?php $actuelle = "contact"; ?>
45 <?php include ("menu.php"); ?>
46
47 <p><a href="index.php" >
48 <img id="logohaut" src="images/logo.png" alt="ordipolo" />
49 <img id="logotitre" src="images/ordipolo.png" alt="ordipolo" /></a></p>
50 </header>
51
52 <section>
53 <aside>
54 <p><img class="photo" src="images/moi.jpg" alt="ordipolo dépannage informatique" /></p>
55 <p>Paul Jusot</p>
56 <p><img src="images/contact.png" alt="un problème d'affichage, rechargez la page" /></p>
57 </aside>
58
59 <article>
60 <form method="post" action="contact-post.php" >
61 <p><label for="email" >Votre adresse électronique (du type: machin@bidule.fr) : </label><br/>
62 <input required type="email" id="email" name="adresse" size="30" value="<?= $adresse ?>" /></p>
63 <p><label for="message" >Votre message :</label><br/>
64 <textarea required id="message" name="contenu" cols="60" rows="12"><?= $contenu ?></textarea></p>
65
66 <!-- captcha anti-spam -->
67 <p>Montrez que vous n'êtes pas un robot.<br/>
68 <label for="captcha" >Combien fait 3 multiplié par 7</label>
69 <input required type="text" id="captcha" name="captcha" size="1" /></p>
70
71 <p><input type="submit" name="submit" value="Envoyer votre message" /></p>
72
73 <?php
74 // messages d'erreur
75 if (isset($_GET['erreur']))
76 {
77 if ($_GET['erreur'] == 2)
78 {
79 echo ('<i>Veuillez donner le résultat de l\'opération s\'il vous plaît..</i>');
80 }
81 else if ($_GET['erreur'] == 1)
82 {
83 echo ('<i>Erreur d\'envoi: Veuillez indiquer une adresse e-mail valide et écrire un message.</i>');
84 }
85 elseif ($_GET['erreur'] == 0)
86 {
87 echo ('<i>Votre message à bien été envoyé.</i>');
88 }
89 else
90 {}
91 }
92 else
93 {}
94 ?>
95 </form>
96 </article>
97 </section>
98 </div>
99 </body>
100 <script src="detecteur.js"></script>
101</html>
diff --git a/detecteur.js b/detecteur.js
new file mode 100644
index 0000000..3f74cb1
--- /dev/null
+++ b/detecteur.js
@@ -0,0 +1,30 @@
1// détection
2function initUI_setListener() {
3 // {once: true} interrompt l'écoute après une première détection
4 // ne détecte pas les visiteurs en mode texte
5 document.body.addEventListener("mousemove", initUI_handle, {once: true}); // mouvements de souris
6 document.body.addEventListener("touchmove", initUI_handle, {once: true}); // contact écran tactile
7 console.log('attach');
8}
9
10// action
11function initUI_handle() {
12 //Retirer les event au listener, inutile en théorie
13 document.body.removeEventListener("mousemove", initUI_handle, true);
14 document.body.removeEventListener("touchmove", initUI_handle, true);
15 console.log('detach');
16
17 // optionnel: infos supplémentaires dans l'URL
18 //~ var params='page_id=10';
19 //~ var width = document.documentElement.clientWidth;
20 //~ var height = document.documentElement.clientHeight;
21 //~ params += '&width=' + width + '&height=' + height;
22
23 //Envoyer la requete
24 const xhr = new XMLHttpRequest();
25 url = 'visites.php';
26 xhr.open("GET", url);
27 xhr.send();
28}
29
30initUI_setListener();
diff --git a/images/SAP.png b/images/SAP.png
new file mode 100644
index 0000000..966d279
--- /dev/null
+++ b/images/SAP.png
Binary files differ
diff --git a/images/contact.png b/images/contact.png
new file mode 100644
index 0000000..1493718
--- /dev/null
+++ b/images/contact.png
Binary files differ
diff --git a/images/favicon.ico b/images/favicon.ico
new file mode 100644
index 0000000..e508eae
--- /dev/null
+++ b/images/favicon.ico
Binary files differ
diff --git a/images/favicon.png b/images/favicon.png
new file mode 100644
index 0000000..09300a5
--- /dev/null
+++ b/images/favicon.png
Binary files differ
diff --git a/images/logo-reparacteurs.jpg b/images/logo-reparacteurs.jpg
new file mode 100644
index 0000000..8cc3954
--- /dev/null
+++ b/images/logo-reparacteurs.jpg
Binary files differ
diff --git a/images/logo.png b/images/logo.png
new file mode 100644
index 0000000..2976a9c
--- /dev/null
+++ b/images/logo.png
Binary files differ
diff --git a/images/moi.jpg b/images/moi.jpg
new file mode 100644
index 0000000..6d9ccb6
--- /dev/null
+++ b/images/moi.jpg
Binary files differ
diff --git a/images/oneline.jpg b/images/oneline.jpg
new file mode 100644
index 0000000..75b1955
--- /dev/null
+++ b/images/oneline.jpg
Binary files differ
diff --git a/images/ordipolo.png b/images/ordipolo.png
new file mode 100644
index 0000000..03cdd07
--- /dev/null
+++ b/images/ordipolo.png
Binary files differ
diff --git a/images/sakura.png b/images/sakura.png
new file mode 100644
index 0000000..923cbe3
--- /dev/null
+++ b/images/sakura.png
Binary files differ
diff --git a/index.php b/index.php
new file mode 100644
index 0000000..3f40f0d
--- /dev/null
+++ b/index.php
@@ -0,0 +1,230 @@
1<!DOCTYPE html>
2<html lang="fr" >
3 <head>
4 <meta charset="utf-8" />
5 <title>ORDIPOLO dépannage informatique et assistance à domicile</title>
6 <link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico" />
7 <link rel="icon" type="image/png" href="images/favicon.png" >
8 <link rel="stylesheet" href="ordipolo.css" />
9 <meta name="description" content="Ordipolo assistance informatique à domicile et réparation d'ordinateurs windows et linux. Services à la personne sur Quimper 29." />
10 <meta name="viewport" content="width=device-width" /> <!-- empêche certains navigateurs de faire un dézoom -->
11 </head>
12
13 <body>
14 <div id="bloc_page" >
15 <?php /* echo $_SERVER['HTTP_REFERER'] . "\n"; */ ?>
16 <header>
17 <?php $actuelle = "accueil"; ?>
18 <?php include ("menu.php"); ?>
19
20 <div>
21 <img id="logohaut" src="images/logo.png" alt="ordipolo dépannage informatique Quimper" />
22 <img id="logotitre" src="images/ordipolo.png" alt="ordipolo dépannage informatique Quimper" />
23 </div>
24 </header>
25
26 <section style="justify-content: space-around;" >
27 <aside>
28 <p><img class="photo" src="images/moi.jpg" alt="ordipolo" /></p>
29 <p>Paul Jusot</p>
30 <p><img src="images/contact.png" alt="un problème d'affichage, rechargez la page" /></p>
31 </aside>
32
33 <div id="description" >
34 <p>J'interviens pour réparer votre ordinateur et vous aider à vous en servir.</p>
35 <ul>
36 <li>Rendre votre ordinateur plus facile à utiliser</li>
37 <li>Maintenance courante, nettoyage, optimisation</li>
38 <li>Diagnostic et dépannage</li>
39 <li>Installation d'un nouvel ordinateur, d'une imprimante, etc.</li>
40 <li>Sauvegarde et récupération de données</li>
41 <li>Utilisations de logiciels libres</li>
42 <li>Configuration plus respectueuse de votre vie privée<br/>
43 <i>(attention: protection de sa vie privée et facilité d'utilisation sont rarement compatibles)</i></li>
44 <li>Remise en route de votre ordinosaure</li>
45 <li>Poste de travail sous Linux adapté à votre machine et à vos besoins</li>
46 </ul>
47 </div>
48 </section>
49
50 <section id="prestations" >
51 <div>
52 <h3><a href="#assistance" >Assistance à domicile</a></h3>
53 <h3><a href="#cours" >Cours</a></h3>
54 <h3><a href="#depannage" >Dépannage</a></h3>
55 <h3><a href="#installation" >Mise en service</a></h3>
56 <h3><a href="#securite" >Pack sécurité et vie privée</a></h3>
57 </div>
58 </section>
59
60 <h1>Services à la personne</h1>
61 <section>
62 <p>Régler par CESU et bénéficiez <strong>d'un crédit d'impôt de 50% !</strong><br/>
63 Depuis le 1er janvier 2017, il n'est plus nécessaire d'être imposable pour en bénéficier.<br/>
64 Cliquez sur le logo "services à la personne" pour plus d'informations.</p>
65 <p><a href="infos.php" ><img src="images/SAP.png" alt="logo SAP" style="width: 130px;" /></a></p>
66 </section>
67
68 <h1 id="tarifs" >Tarification</h1>
69 <section>
70 <table>
71 <caption><span>Prestations réglées par CESU</span><br/>
72 <i>avec crédit d'impôt de 50% l'année suivante</i></caption>
73 <tr>
74 <td>assistance à domicile</td>
75 <td>30€/heure</td>
76 </tr>
77 <tr>
78 <td>cours</td>
79 <td>20€/heure</td>
80 </tr>
81 <tr>
82 <td>dépannage</td>
83 <td>50€ ou 60€ ou 70€</td>
84 </tr>
85 <tr>
86 <td>mise en service</td>
87 <td>50€</td>
88 </tr>
89 <tr>
90 <td>pack sécurité et vie privée</td>
91 <td>70€</td>
92 </tr>
93 <tr>
94 <td>déplacement</td>
95 <td>10€ à Quimper, ou 20€ ou 30€</td>
96 </tr>
97 <tr>
98 <td>intervention d'urgence</td>
99 <td>ajouter 20€ au déplacement</td>
100 </tr>
101 </table>
102
103 <table>
104 <caption><span>Règlement normal sans CESU</span><br/>
105 <i>inclut les cotisations</i></caption>
106 <tr>
107 <td>assistance à domicile</td>
108 <td>40€/heure</td>
109 </tr>
110 <tr>
111 <td>cours</td>
112 <td>25€/heure</td>
113 </tr>
114 <tr>
115 <td>dépannage</td>
116 <td>65€ ou 77€ ou 90€</td>
117 </tr>
118 <tr>
119 <td>mise en service</td>
120 <td>65€</td>
121 </tr>
122 <tr>
123 <td>pack sécurité et vie privée</td>
124 <td>90€</td>
125 </tr>
126 <tr>
127 <td>déplacement</td>
128 <td>13€ à Quimper, ou 25€ ou 40€</td>
129 </tr>
130 <tr>
131 <td>intervention d'urgence</td>
132 <td>ajouter 25€ au déplacement</td>
133 </tr>
134 </table>
135 </section>
136
137
138 <div id="assistance" class="parties" >
139 <h1 class="menu" >Assistance à domicile et cours particuliers</h1>
140 <h2 >Assistance à domicile:</h2>
141 <p>Aide à l'utilisation de l'ordinateur ou d'une tablette/smartphone.
142 Je vous aide, vous montre et vous explique pour que vous puissiez le refaire.
143 L'assistance comprend la résolution de tous les problèmes qui ne nécessitent pas
144 trop de temps ni une action en profondeur.</p>
145 <p>Vous avez des demandes précises? préparation de voyage, traitement de texte,
146 supports de communication (flyers, graphisme), c'est possible aussi!</p>
147
148 <h2 id="cours" >Cours particuliers:</h2>
149 <p>C'est à dire (liste non exhaustive):</p>
150 <pre>Les bases :
151- taper du texte, utiliser le clavier et la souris
152- ouvrir une application, redimensionner ou envoyer en arrière-plan une fenêtre
153- composition de l'ordinateur, machine et système d'exploitation
154- copier-coller, poupées russes et rangement des fichiers
155- lire du multimédia (images, musique, vidéos)
156- les périphériques de stockage (CD/DVD, clé USB, carte mémoire)
157- les imprimantes/scanners
158
159Internet :
160- se connecter à internet, fournisseurs d'accès et installation de la «box»
161- c'est quoi l'internet, c'est quoi le web et la différence entre google et google
162- boite e-mail et identification sur les sites web (facebook, banque…)
163- messagerie instantanée (skype)
164- google earth
165- se protéger sur internet
166
167Niveau avancé :
168- bureautique avec libreoffice (traitement de texte, tableur)
169- faire une capture d'écran, manipulation d'images avec paint/gimp/inkscape
170- archivage et compression, envoyer un e-mail avec des pièces jointes
171- formats de fichiers: .jpg .pdf .mp3 .docx .truc .bidule
172- extraire ou graver un disque CD/DVD/bluray
173
174Maintenance et sécurité :
175- précautions et bonnes pratiques
176- à propos du disque dur, formater un disque ou une clé usb
177- maintenance courante de windows (mise-à-jour, nettoyage, défragmentation, analyse antivirus)
178- sauvegarder ses fichiers, créer une image système</pre>
179 </div>
180
181 <div id="depannage" class="parties" >
182 <h1 class="menu" >Dépannage, installation, réinstallation, sauvegarde, récupération de données</h1>
183 <h2 >Dépannage</h2>
184 <p>Ce sont des interventions plus profondes qui nécessitent que je vous emprunte la machine (en général un ou deux jours)
185 ce qui sera le cas pour une installation ou réinstallation du système (windows ou linux), un diagnostic,
186 la commande et le remplacement d'une pièce<br/>
187 => le devis est gratuit<br/>
188 => un ordinateur de prêt est proposé le temps des réparations<br/>
189 => pour une sauvegarde, prévoir un espace de stockage (exemple: un disque dur externe)<br/>
190 => si je dois commander une pièce de rechange, la livraison peut dans certains cas prendre 8 ou 15 jours
191 (le bateau, c'est moins cher mais c'est plus long) et être accompagnée de frais de douanes</p>
192
193 <h2 id="installation" >Mise en service d'un nouvel ordinateur</h2>
194 <p>Je fais selon ce que vous désirez:<br/>
195 - installation de la box internet, de l'imprimante<br/>
196 - récupération des données de l'ancien PC<br/>
197 - récupération des courriels outlook ou thunderbird, des favoris du navigateurs<br/>
198 - installation d'applications utiles, des mises à jour et d'un antivirus<br/>
199 - des réglages pour faciliter l'utilisation et protéger sa vie privée<br/>
200 - suppressions des programmes inutiles ajoutés par le constructeur<br/>
201 - demandes particulières (j'ai besoin de ce logiciel !!)</p>
202
203 <h2 id="securite" >Pack sécurité et vie privée</h2>
204 <p>Mise en service d'un ordinateur avec une configuration orientée vers la sécurité:</p>
205 <p>La sécurité informatique est un terme vague (et marketing), son sens varie beaucoup selon le contexte et je peux vous aider à y voir plus clair:<br/>
206 1/ mon ordinateur et mes fichiers sont protégés des autres personnes (accès par mot de passe, chiffrement).<br/>
207 2/ mes fichiers seront toujours accessibles dans le futur (sauvegardes).<br/>
208 3/ mon logiciel est stable, il n'a pas de bug, il marche aujourd'hui et marchera demain.<br/>
209 4/ mon logiciel ne me cache rien, il ne fait pas autre chose que ce que je souhaite qu'il fasse.<br/>
210 5/ je sais prendre des précautions et j'essaie d'éviter l'erreur humaine (je donne de fausses informations sur internet, etc).<br/>
211 6/ je protège mon enfant (contrôle parental).</p>
212
213 <p>Il peut y avoir beaucoup à faire selon vos besoin. Noter que protéger son ordinateur et le rendre plus facile d'utilisation n'est pas compatible. Plus vous mettez de serrures sur votre porte d'entrée, plus longtemps il vous faudra pour l'ouvrir et la refermer.</p>
214 </div>
215
216 <div id="siteweb" class="parties" >
217 <h1 class="menu" >Création de sites web</h1>
218 <p>Visitez donc mon blog!<br/>
219 <a class="lien" href="https://lelionetlecolibri.ordipolo.fr" target="_blank" >
220 https://lelionetlecolibri.ordipolo.fr</a></p>
221 <p style="color: red;" >Service pour les amis uniquement.</p>
222 </div>
223
224 <footer>
225 <h1><a href="#bloc_page" >Remonter en haut de la page.</a></h1>
226 </footer>
227 </div>
228 </body>
229 <script src="detecteur.js"></script>
230</html>
diff --git a/infos.php b/infos.php
new file mode 100644
index 0000000..4f0a816
--- /dev/null
+++ b/infos.php
@@ -0,0 +1,71 @@
1<?php
2session_start();
3?>
4<!DOCTYPE html>
5
6<html lang="fr" >
7 <head>
8 <meta charset="utf-8" />
9 <title>A propos de moi</title>
10 <link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico" />
11 <link rel="icon" type="image/png" href="images/favicon.png" >
12 <link rel="stylesheet" href="ordipolo.css" />
13 <meta name="description" content="à propos de moi" />
14 <meta name="viewport" content="width=device-width" />
15 </head>
16
17 <body>
18 <div id="bloc_page" >
19 <header>
20 <?php $actuelle = "infos"; ?>
21 <?php include ("menu.php"); ?>
22
23 <p><a href="index.php" >
24 <img id="logohaut" src="images/logo.png" alt="ordipolo" />
25 <img id="logotitre" src="images/ordipolo.png" alt="ordipolo" /></a></p>
26 </header>
27
28 <div class="parties" >
29 <h1>Services à la personne</h1>
30 <section>
31 <p><img src="images/SAP.png" alt="logo SAP" style="width: 130px;" /></p>
32 <div>
33 <p>Régler par CESU et bénéficiez <strong>d'un prix réduit et d'un crédit d'impôt de 50% !</strong><br/>
34 Depuis le 1er janvier 2017, <strong>il n'est plus nécessaire d'être imposable pour en bénéficier</strong> (la réduction d'impôt étant devenue un crédit d'impôt).</p>
35 <p>Payer un prestataire avec des CESU est très intéressant. Vous y gagnez alors même que c'est vous qui payez les charges.<br/>Pas convaincu? Faites le calcul sur <a href="https://www.cesu.urssaf.fr/decla/index.html?page=page_estimer&LANG=FR" >cesu.urssaf.fr</a></p>
36 <p>Et en cadeau,<br/>je peux vous accompagner <stong>gratuitement</stong> le temps de votre inscription sur le site de l'URSSAF, c'est très rapide, il vous suffit d'avoir vos coordonnées bancaires (RIB).</p>
37 </div>
38 </section>
39 </div>
40
41 <div class="parties" >
42 <h1>A propos de moi</h1>
43 <section>
44 <p><img src="images/logo.png" alt="ordipolo" style="width: 160px;" /></p>
45 <div>
46 <p>Paul Jusot, 2 A rue de l'île de Man, 29000 Quimper</p>
47 <p>Entreprise immatriculée aux répertoires des métiers au n°814320610RM29 depuis fin 2015<br/>
48 et déclarée prestataire de services à la personne au n°SAP814320610</p>
49 </div>
50 </section>
51 </div>
52
53 <p>Ce site a été entièrement créé et est hébergé par mes soins, ceci à l'exception des deux logos que je dois à
54 <a class="lien" href="http://www.romainlebadezet.com" target="_blank" >
55 Romain Le Badezet</a>.</p>
56
57 <p>Je suis dans l'annuaire <a class="lien"
58 href="https://www.crma.bzh/reparacteur/ordipolo" target="_blank" >
59 répar'acteurs. <img src="images/logo-reparacteurs.jpg" alt="répar'acteurs" /></a></p>
60
61 <p>Je suis aussi sur <a class="lien"
62 href="http://www.servicemalin.com/Depannage-Informatique/51051" target="_blank" >
63 servicemalin.com</a> qui m'aide à être référencé.</p>
64
65 <footer>
66 <h1><a href="#bloc_page" >Remonter en haut de la page.</a></h1>
67 </footer>
68 </div>
69 </body>
70</html>
71<?php include("visites.php"); ?>
diff --git a/julian/formule.png b/julian/formule.png
new file mode 100644
index 0000000..25032f5
--- /dev/null
+++ b/julian/formule.png
Binary files differ
diff --git a/julian/maths.html b/julian/maths.html
new file mode 100644
index 0000000..b6ebb6f
--- /dev/null
+++ b/julian/maths.html
@@ -0,0 +1,32 @@
1<!DOCTYPE html>
2<html lang="fr" >
3 <head>
4 <meta charset="utf-8" />
5 <title>julian maths</title>
6 <link rel="stylesheet" href="../ordipolo.css" />
7 </head>
8
9 <body>
10 <div id="bloc_page" >
11 <h1 class="menu" >voici mon équation</h1>
12
13 <p><img src="formule.png" alt="formule" /></p>
14 <p style="margin: 0px 0px 20px 20px;" >où <i>n</i> est un entier impaire</p>
15 <p>Bonjour à tous, je m'appelle Julian, je suis mathématicien amateur et je suis ami avec Paul.</p>
16 <p>J'ai eu très envie de partager cette équation fondée sur mon intuition et que je vous laisse le soin de démontrer.
17 Attention, sous son air apparemment simple, cette formule risque d'être très difficile à démontrer.
18 Je pense qu'elle n'est pas encore connue par le monde scientifique, mais je peux me tromper.</p>
19 <p>Avis aux amateurs !</p>
20 <p>Le symbole valeur absolue vient du fait que <i>n</i> est tantôt positif, tantôt négatif,
21 de plus <span style="text-decoration: underline;" >il est toujours impaire</span>.
22 Le 2 kpi/n est connu des mathématiciens comme une notation permettant d'exprimer les angles d'un polygone régulier.
23 La somme des cosinus pour ce type de situation est connu et vaut 0 (voir théorème sur les racines énièmes de l'unité).</p>
24 <p>J'ai choisi de faire la somme des inverses qui me semble intéressante mais plus atypique.</p>
25
26 <h1>
27 <a href="../kiffe.php" style="text-decoration: none;" >page précédente</a>
28 </h1>
29 </div>
30 </body>
31</html>
32
diff --git a/julian/polygones.png b/julian/polygones.png
new file mode 100644
index 0000000..d1db046
--- /dev/null
+++ b/julian/polygones.png
Binary files differ
diff --git a/kiffe.php b/kiffe.php
new file mode 100644
index 0000000..0be7e0c
--- /dev/null
+++ b/kiffe.php
@@ -0,0 +1,80 @@
1<!DOCTYPE html>
2<html lang="fr" >
3 <head>
4 <meta charset="utf-8" />
5 <title>Sites à visiter !</title>
6 <link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico" />
7 <link rel="icon" type="image/png" href="images/favicon.png" >
8 <link rel="stylesheet" href="ordipolo.css" />
9 <meta name="description" content="Liens vers les sites des amis" />
10 <meta name="viewport" content="width=device-width" />
11 <style>
12 .photoenhaut
13 {
14 display: flex;
15 }
16 @media screen and (max-width: 500px)
17 {
18 .photoenhaut
19 {
20 flex-direction: column;
21 }
22 }
23 </style>
24 </head>
25
26 <body>
27 <div id="bloc_page" >
28 <header>
29 <?php $actuelle = "kiffe"; ?>
30 <?php include ("menu.php"); ?>
31
32 <p><a href="index.php" >
33 <img id="logohaut" src="images/logo.png" alt="ordipolo" />
34 <img id="logotitre" src="images/ordipolo.png" alt="ordipolo" /></a></p>
35 </header>
36
37 <div class="parties" >
38 <a href="https://lelionetlecolibri.ordipolo.fr" >
39 <h1 >Le lion et le colibri</h1>
40 </a>
41 <div class="photoenhaut" >
42 <p>Blog que je tiens avec Katy<br/>
43 Au programme: voyages, gastronomie, musique, détente.</p>
44 <a href="https://lelionetlecolibri.ordipolo.fr" >
45 <img class="photo" src="images/sakura.png" alt="fleur de cerisier japonais" />
46 </a>
47 </div>
48 </div>
49
50 <div class="parties" >
51 <a href="julian/maths.html" >
52 <h1>Recherches en mathématiques</h1>
53 </a>
54 <div class="photoenhaut" >
55 <p>de Julian Favennec à la cité de la ruche.</p>
56 <a href="julian/maths.html" >
57 <img class="photo" src="julian/polygones.png" alt="" />
58 </a>
59 </div>
60 </div>
61
62 <div class="parties" >
63 <a href="http://www.romainlebadezet.com" >
64 <h1>Romain Le Badezet</h1>
65 </a>
66 <div class="photoenhaut" >
67 <p>Artistre peintre, dessinateur, plasticien</p>
68 <a href="http://www.romainlebadezet.com" >
69 <img class="photo" src="images/oneline.jpg" alt="ligne" />
70 </a>
71 </div>
72 </div>
73
74 <footer>
75 <h1><a href="#bloc_page" >Remonter en haut de la page.</a></h1>
76 </footer>
77 </div>
78 </body>
79 <script src="detecteur.js"></script>
80</html>
diff --git a/menu.php b/menu.php
new file mode 100644
index 0000000..221ebb7
--- /dev/null
+++ b/menu.php
@@ -0,0 +1,8 @@
1 <nav>
2 <a href="index.php#bloc_page" <?php if($actuelle == "accueil") {echo('id="actuelle"');} ?> >Accueil du site</a>
3 <a href="index.php#prestations" >Services proposés</a>
4 <a href="index.php#tarifs" >Tarifs</a>
5 <a href="contact.php" <?php if($actuelle == "contact") {echo('id="actuelle"');} ?> >Contact</a>
6 <a href="infos.php" <?php if($actuelle == "infos") {echo('id="actuelle"');} ?> >Infos légales</a>
7 <a href="kiffe.php" <?php if($actuelle == "kiffe") {echo('id="actuelle"');} ?> >J'aime !</a>
8 </nav>
diff --git a/ordipolo.css b/ordipolo.css
new file mode 100644
index 0000000..09855e1
--- /dev/null
+++ b/ordipolo.css
@@ -0,0 +1,308 @@
1body
2{
3 font-size: 100%;
4 font-family: sans;
5 /* pour enlever la bande de la couleur du fond en haut et en bas de la page */
6 margin: 0;
7 background-color: #F0EC41;
8}
9
10#bloc_page
11{
12 max-width: 1200px;
13 /* la largeur max indiquée sert à réduire la variété des largeurs d'écran à prendre en compte */
14 margin: auto;
15 padding: 0 20px 30px 20px;
16 background-color: white;
17}
18
19h1
20{
21 font-weight: normal;
22 display: inline-block;
23 margin: 5px;
24 border: 2px #008100 solid;
25 border-radius: 12px;
26 padding: 3px;
27 background-color: #F4F02D;
28 font-size: 120%;
29}
30
31h2
32{
33 font-weight: normal;
34 font-size: 110%;
35 text-decoration: underline;
36}
37
38p
39{
40 margin: 10px;
41}
42
43a
44{
45 color: black;
46 /* les liens déjà cliqués restent noirs */
47}
48
49a:hover /* liens survolés par la souris */
50{
51 color: #004F00;
52}
53
54.lien:hover
55{
56 font-weight: bold;
57}
58
59/* En-tête. */
60header
61{
62 background-color: white;
63 display: flex;
64 flex-direction: column;
65 align-items: center;
66 margin-bottom: 20px;
67}
68
69header div, header p
70{
71 margin-top: 40px;
72}
73
74#logohaut
75{
76 width: 200px;
77}
78
79#logotitre
80{
81 height: 90px;
82}
83
84/* Menu de navigation. */
85nav
86{
87 position: fixed;
88 z-index: 2; /* pour être dessus des prestations */
89 text-align: center;
90}
91
92nav a
93{
94 display: inline-block; /* menu horizontal */
95 border: 2px #008100 solid;
96 border-radius: 12px;
97 padding: 3px;
98 margin: 2px;
99 background-color: #F4F02D;
100 font-size: 110%;
101 text-decoration: none;
102}
103
104/* "vous êtes ici" */
105#actuelle
106{
107 color: #004F00;
108 border: 3px #004F00 solid;
109}
110
111/* Corps de page. */
112section
113{
114 display: flex;
115 align-items: center;
116}
117
118aside
119{
120 width: 174px; /* équivalent à la photo qui fait 170 de large plus la bordure de 2 pixels */
121 display: flex;
122 flex-direction: column;
123 align-items: center;
124}
125
126aside p
127{
128 margin: 0;
129}
130
131article
132{
133 margin-left: 20px;
134}
135
136#description
137{
138 margin: 0;
139 font-size: 110%;
140}
141
142.photo
143{
144 border: 2px #008100 solid;
145 border-radius: 10px;
146}
147
148/* nuage de liens */
149section
150{
151 display: flex;
152}
153
154#prestations div
155{
156 width: 100%;
157 display: flex;
158 flex-wrap: wrap;
159 justify-content: space-around;
160 margin: 20px 30px;
161 padding: 10px;
162 border: 2px #008100 solid;
163 border-radius: 12px;
164 background-color: #F4F02D;
165}
166
167h3
168{
169 margin: 10px;
170 border: 2px #008100 solid;
171 border-radius: 12px;
172 padding: 3px;
173 text-align: center;
174 font-size: 100%;
175 background-color: white;
176}
177
178h3 a
179{
180 text-decoration: none;
181}
182
183table
184{
185 margin: 10px;
186 max-width: 470px;
187 /* fusionner les bordures */
188 border-collapse: collapse;
189}
190
191caption span
192{
193 font-size: 110%;
194 text-decoration: underline;
195}
196
197caption i
198{
199 font-size: 90%;
200}
201
202td
203{
204
205 border: 1px black solid;
206}
207
208pre
209{
210 font-family: sans-serif;
211 font-size: 90%;
212 white-space: pre-wrap;
213 margin: 0 20px;
214 padding: 10px;
215 border: 2px #004F00 dotted;
216 border-radius: 10px;
217}
218
219a img
220{
221 border: none;
222 /* retire la bordure bleue sur certains navigateurs */
223}
224
225.parties
226{
227 margin: 10px 0 15px 0;
228}
229
230/* lien fixe en bas */
231footer
232{
233 display: flex;
234 flex-direction: column;
235 align-items: center;
236}
237
238footer h1
239{
240 position: fixed;
241 bottom: 0;
242 margin: 2px; /* de 5 par défaut */
243 text-align: center;
244}
245footer a
246{
247 text-decoration: none;
248}
249
250/* remplacement du logo titre qui est trop large */
251@media screen and (min-width: 500px)
252{
253 #logohaut
254 {
255 display: none;
256 }
257}
258
259@media screen and (max-width: 500px)
260{
261 #logotitre
262 {
263 display: none;
264 }
265}
266
267/* design responsive */
268@media screen and (max-width: 750px)
269{
270 section
271 {
272 display: flex;
273 flex-direction: column;
274 }
275
276 aside
277 {
278 margin: auto;
279 }
280
281 p
282 {
283 margin: 3px;
284 }
285
286 #prestations div /* à cause du menu sur deux lignes */
287 {
288 margin-top: 74px;
289 }
290}
291
292@media screen and (max-width: 710px)
293{
294 header div, header p
295 {
296 margin-top: 76px;
297 }
298
299 nav a
300 {
301 font-size: 100%;
302 }
303
304 h1
305 {
306 font-size: 110%;
307 }
308}
diff --git a/refuser_indexation.txt b/refuser_indexation.txt
new file mode 100644
index 0000000..eddc0b9
--- /dev/null
+++ b/refuser_indexation.txt
@@ -0,0 +1,6 @@
1Certains fichiers ne doivent pas être indexés par les moteurs de recherche.
2
3Cette ligne a été ajoutée dans:
4stats.php
5
6<meta name="robots" content="noindex" >
diff --git a/stats.php b/stats.php
new file mode 100644
index 0000000..a69849d
--- /dev/null
+++ b/stats.php
@@ -0,0 +1,90 @@
1<?php
2try
3{
4 $base = new PDO('mysql:host=localhost;dbname=ordipolo;charset=utf8', 'root', 'qsdfgh');
5}
6catch (Exception $e)
7{
8 die('Erreur : ' . $e->getMessage());
9}
10?>
11<!DOCTYPE html>
12<html lang="fr" >
13 <head>
14 <meta charset="utf-8" />
15 <title>visites du site</title>
16 <link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico" />
17 <link rel="icon" type="image/png" href="images/favicon.png" >
18 <link rel="stylesheet" href="ordipolo.css" />
19 <meta name="robots" content="noindex" >
20 <style>
21 th, td
22 {
23 padding: 2px;
24 border-collapse: collapse;
25 font-size: 85%;
26 }
27 .user_agent
28 {
29 min-width: 500px;
30 }
31 </style>
32 </head>
33
34 <body>
35 <div id="bloc_page" >
36 <header>
37 <?php $actuelle = ""; ?>
38 <?php include ("menu.php"); ?>
39
40 <p><a href="index.php" >
41 <img id="logohaut" src="images/logo.png" alt="ordipolo" />
42 <img id="logotitre" src="images/ordipolo.png" alt="ordipolo" /></a></p>
43 </header>
44 <!-- compteur -->
45 <table border="1" >
46 <caption>Compteur de visites</caption>
47 <tr>
48 <th>Visiteurs</th>
49 <!-- <th>Bots</th> -->
50 </tr>
51 <tr>
52 <?php
53 $reponse = $base->query('SELECT visiteurs FROM compteur');
54 $nombre = $reponse->fetch();
55 echo ('<td>' . $nombre['visiteurs'] . '</td>');
56
57 //~ $reponse = $base->query('SELECT bots FROM compteur');
58 //~ $nombre = $reponse->fetch();
59 //~ echo ('<td>' . $nombre['bots'] . '</td>');
60 ?>
61 </tr>
62 </table>
63
64 <!-- détail des enregistrements -->
65 <table border="1" >
66 <caption><br/>Visiteurs</caption>
67
68 <tr>
69 <th>IP</th>
70 <th>Hôte</th>
71 <th class="user_agent">User_agent</th>
72 <th>Date</th>
73 <th>Nombre de pages</th>
74 </tr>
75
76 <?php
77 $reponse = $base->query('SELECT ip, hote, user_agent, DATE_FORMAT(date, \'%d/%m/%Y\') AS date_, nb_pages FROM visites');
78 while ($donnees = $reponse->fetch())
79 {
80 echo ('<tr><td>' . $donnees['ip'] . '</td>');
81 echo ('<td>' . $donnees['hote'] . '</td>');
82 echo ('<td class="user_agent">' . $donnees['user_agent'] . '</td>');
83 echo ('<td>' . $donnees['date_'] . '</td>');
84 echo ('<td>' . $donnees['nb_pages'] . '</td></tr>');
85 }
86 ?>
87 </table>
88 </div>
89 <body>
90</html>
diff --git a/visites.php b/visites.php
new file mode 100644
index 0000000..c9b77fb
--- /dev/null
+++ b/visites.php
@@ -0,0 +1,84 @@
1<?php
2session_start();
3
4try
5{
6 // create database
7 $Db = new PDO('mysql:host=localhost;charset=utf8', 'root', 'qsdfgh');
8 $db_name = 'ordipolo';
9 $Db->exec('CREATE DATABASE IF NOT EXISTS ' . $db_name . ';');
10 unset($Db);
11
12 // connexion
13 $Db = new PDO('mysql:host=localhost;dbname=ordipolo;charset=utf8', 'root', 'qsdfgh');
14
15 // create tables
16 $Db->query('CREATE TABLE IF NOT EXISTS visites (id INT PRIMARY KEY AUTO_INCREMENT, ip VARCHAR(30), hote VARCHAR(255), user_agent TEXT, date DATE, nb_pages INT);');
17 //$Db->query('CREATE TABLE IF NOT EXISTS compteur (visiteurs INT, bots INT);');
18 $Db->query('CREATE TABLE IF NOT EXISTS compteur (visiteurs INT);');
19
20 // initialiser table compteur avec des 0 si la table est vide
21 if(!$Db->query('SELECT * FROM compteur')->fetch())
22 {
23 $Db->query('INSERT INTO `compteur` VALUES (0);');
24 }
25}
26catch (Exception $e)
27{
28 die('Erreur : ' . $e->getMessage());
29}
30
31
32// variables
33$ip = $_SERVER['REMOTE_ADDR']; // IP
34$hote = gethostbyaddr($ip); // nom d'hôte si possible
35date_default_timezone_set ('Europe/Paris'); // configure le décalage horaire sur Europe/Paris
36$user = $_SERVER['HTTP_USER_AGENT']; // infos sur le client (navigateur, OS), attention aux menteurs
37$user = mb_strtolower($user); // minuscules pour strpos()
38$date = date('Y-m-d'); // date formatée
39
40// script recherchant le pays
41// la commande whois nécessite le paquet whois (debian) ou bind-tools (archlinux)
42// on récupère la ligne (ou les lignes) indiquant le pays avec grep (-i sert à ignorer la casse)
43$country = strtolower(shell_exec("whois " . $ip . " | grep -i country | cut -d: -f2 | sed -e ' s/\ //g'"));
44
45
46function incrementerTableCompteur($Db, $field)
47{
48 $nombre = $Db->query('SELECT ' . $field . ' FROM compteur')->fetch();
49 if(!$nombre){$nombre = [0];} // tableau d'une seule case
50 $nombre[0] += 1;
51
52 $requete = $Db->prepare('UPDATE compteur SET ' . $field . ' = :nombre');
53 $requete->execute(array('nombre' => $nombre[0]));
54}
55
56// MAJ de la base
57if(isset($_SESSION['id_visiteur'])) // pages suivantes
58{
59 $requete = $Db->prepare("UPDATE visites SET nb_pages = nb_pages + 1 WHERE id = :id");
60
61 $requete->execute(array(
62 ':id' => $_SESSION['id_visiteur']));
63}
64else // première page visitée dans la session
65{
66 $requete = $Db->prepare("
67 INSERT INTO visites (ip, hote, user_agent, date, nb_pages)
68 VALUES (:ip, :hote, :user_agent, :date, 1)");
69 // si la visite est déjà enregistrée, ajoute +1 au nombre de pages
70
71 $requete->execute(array(
72 ':ip' => $ip,
73 ':hote' => $hote,
74 ':user_agent' => $user,
75 ':date' => $date));
76
77 $_SESSION['id_visiteur'] = $Db->lastInsertId();
78
79 // compte visiteurs + 1
80 incrementerTableCompteur($Db, 'visiteurs');
81}
82
83echo "visite enregistrée!";
84?>