From 64250fd350d1474b30f2c9681e7d6f54c2efc11e Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 1 Aug 2023 14:38:54 +0200 Subject: compteur de visites --- contact-post.php | 96 ++++++++++++++ contact.php | 101 ++++++++++++++ detecteur.js | 30 +++++ images/SAP.png | Bin 0 -> 142628 bytes images/contact.png | Bin 0 -> 2882 bytes images/favicon.ico | Bin 0 -> 5686 bytes images/favicon.png | Bin 0 -> 928 bytes images/logo-reparacteurs.jpg | Bin 0 -> 5611 bytes images/logo.png | Bin 0 -> 81428 bytes images/moi.jpg | Bin 0 -> 9064 bytes images/oneline.jpg | Bin 0 -> 53096 bytes images/ordipolo.png | Bin 0 -> 57420 bytes images/sakura.png | Bin 0 -> 4686 bytes index.php | 230 ++++++++++++++++++++++++++++++++ infos.php | 71 ++++++++++ julian/formule.png | Bin 0 -> 11011 bytes julian/maths.html | 32 +++++ julian/polygones.png | Bin 0 -> 10340 bytes kiffe.php | 80 +++++++++++ menu.php | 8 ++ ordipolo.css | 308 +++++++++++++++++++++++++++++++++++++++++++ refuser_indexation.txt | 6 + stats.php | 90 +++++++++++++ visites.php | 84 ++++++++++++ 24 files changed, 1136 insertions(+) create mode 100644 contact-post.php create mode 100644 contact.php create mode 100644 detecteur.js create mode 100644 images/SAP.png create mode 100644 images/contact.png create mode 100644 images/favicon.ico create mode 100644 images/favicon.png create mode 100644 images/logo-reparacteurs.jpg create mode 100644 images/logo.png create mode 100644 images/moi.jpg create mode 100644 images/oneline.jpg create mode 100644 images/ordipolo.png create mode 100644 images/sakura.png create mode 100644 index.php create mode 100644 infos.php create mode 100644 julian/formule.png create mode 100644 julian/maths.html create mode 100644 julian/polygones.png create mode 100644 kiffe.php create mode 100644 menu.php create mode 100644 ordipolo.css create mode 100644 refuser_indexation.txt create mode 100644 stats.php create mode 100644 visites.php 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 @@ +' . $passage_ligne; // expéditeur + $header .= 'Reply-to: ' . $adresse . ' <' . $adresse . '>' . $passage_ligne; // réponse + $header .= 'Return-path : ' . $adresse . ' <' . $adresse . '>' . $passage_ligne; // retour en cas d'erreur + $header .= 'MIME-Version: 1.0' . $passage_ligne; + $header .= 'Content-type: text/plain; charset=utf-8 boundary=\"' . $boundary . '\"' . $passage_ligne; + + // message + //$message = $passage_ligne."--".$boundary.$passage_ligne; + //$message .= "Content-Transfer-Encoding: 8bit".$passage_ligne; + $message .= $passage_ligne . $contenu . $passage_ligne; + //$message .= $passage_ligne."--".$boundary.$passage_ligne; + + echo $destinataire; + echo "
"; + echo $sujet; + echo "
"; + echo $message; + echo "
"; + echo $header; + + // Envoi + mail($destinataire, $sujet, $message, $header); + + // envoi réussi, on peut nettoyer + unset ($_SESSION['adresse']); + unset ($_SESSION['contenu']); + + header('Location: contact.php?erreur=0'); + } + else + { + header('Location: contact.php?erreur=1'); + } + } + else + { + header('Location: contact.php?erreur=1'); + } + } + else + { + header('Location: contact.php?erreur=1'); + } + } + else + { + header('Location: contact.php?erreur=2'); + } +} +else +{ + header('Location: contact.php?erreur=2'); +} +?> diff --git a/contact.php b/contact.php new file mode 100644 index 0000000..3eeaf83 --- /dev/null +++ b/contact.php @@ -0,0 +1,101 @@ + + + + + + + + Contacter Ordipolo + + + + + + + + + +
+
+ + + +

+ ordipolo + ordipolo

+
+ +
+ + +
+
+


+

+


+

+ + +

Montrez que vous n'êtes pas un robot.
+ +

+ +

+ + Veuillez donner le résultat de l\'opération s\'il vous plaît..'); + } + else if ($_GET['erreur'] == 1) + { + echo ('Erreur d\'envoi: Veuillez indiquer une adresse e-mail valide et écrire un message.'); + } + elseif ($_GET['erreur'] == 0) + { + echo ('Votre message à bien été envoyé.'); + } + else + {} + } + else + {} + ?> +
+
+
+
+ + + diff --git a/detecteur.js b/detecteur.js new file mode 100644 index 0000000..3f74cb1 --- /dev/null +++ b/detecteur.js @@ -0,0 +1,30 @@ +// détection +function initUI_setListener() { + // {once: true} interrompt l'écoute après une première détection + // ne détecte pas les visiteurs en mode texte + document.body.addEventListener("mousemove", initUI_handle, {once: true}); // mouvements de souris + document.body.addEventListener("touchmove", initUI_handle, {once: true}); // contact écran tactile + console.log('attach'); +} + +// action +function initUI_handle() { + //Retirer les event au listener, inutile en théorie + document.body.removeEventListener("mousemove", initUI_handle, true); + document.body.removeEventListener("touchmove", initUI_handle, true); + console.log('detach'); + + // optionnel: infos supplémentaires dans l'URL + //~ var params='page_id=10'; + //~ var width = document.documentElement.clientWidth; + //~ var height = document.documentElement.clientHeight; + //~ params += '&width=' + width + '&height=' + height; + + //Envoyer la requete + const xhr = new XMLHttpRequest(); + url = 'visites.php'; + xhr.open("GET", url); + xhr.send(); +} + +initUI_setListener(); diff --git a/images/SAP.png b/images/SAP.png new file mode 100644 index 0000000..966d279 Binary files /dev/null and b/images/SAP.png differ diff --git a/images/contact.png b/images/contact.png new file mode 100644 index 0000000..1493718 Binary files /dev/null and b/images/contact.png differ diff --git a/images/favicon.ico b/images/favicon.ico new file mode 100644 index 0000000..e508eae Binary files /dev/null and b/images/favicon.ico differ diff --git a/images/favicon.png b/images/favicon.png new file mode 100644 index 0000000..09300a5 Binary files /dev/null and b/images/favicon.png differ diff --git a/images/logo-reparacteurs.jpg b/images/logo-reparacteurs.jpg new file mode 100644 index 0000000..8cc3954 Binary files /dev/null and b/images/logo-reparacteurs.jpg differ diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000..2976a9c Binary files /dev/null and b/images/logo.png differ diff --git a/images/moi.jpg b/images/moi.jpg new file mode 100644 index 0000000..6d9ccb6 Binary files /dev/null and b/images/moi.jpg differ diff --git a/images/oneline.jpg b/images/oneline.jpg new file mode 100644 index 0000000..75b1955 Binary files /dev/null and b/images/oneline.jpg differ diff --git a/images/ordipolo.png b/images/ordipolo.png new file mode 100644 index 0000000..03cdd07 Binary files /dev/null and b/images/ordipolo.png differ diff --git a/images/sakura.png b/images/sakura.png new file mode 100644 index 0000000..923cbe3 Binary files /dev/null and b/images/sakura.png 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 @@ + + + + + ORDIPOLO dépannage informatique et assistance à domicile + + + + + + + + +
+ +
+ + + +
+ ordipolo dépannage informatique Quimper + ordipolo dépannage informatique Quimper +
+
+ +
+ + +
+

J'interviens pour réparer votre ordinateur et vous aider à vous en servir.

+
    +
  • Rendre votre ordinateur plus facile à utiliser
  • +
  • Maintenance courante, nettoyage, optimisation
  • +
  • Diagnostic et dépannage
  • +
  • Installation d'un nouvel ordinateur, d'une imprimante, etc.
  • +
  • Sauvegarde et récupération de données
  • +
  • Utilisations de logiciels libres
  • +
  • Configuration plus respectueuse de votre vie privée
    + (attention: protection de sa vie privée et facilité d'utilisation sont rarement compatibles)
  • +
  • Remise en route de votre ordinosaure
  • +
  • Poste de travail sous Linux adapté à votre machine et à vos besoins
  • +
+
+
+ +
+
+

Assistance à domicile

+

Cours

+

Dépannage

+

Mise en service

+

Pack sécurité et vie privée

+
+
+ +

Services à la personne

+
+

Régler par CESU et bénéficiez d'un crédit d'impôt de 50% !
+ Depuis le 1er janvier 2017, il n'est plus nécessaire d'être imposable pour en bénéficier.
+ Cliquez sur le logo "services à la personne" pour plus d'informations.

+

logo SAP

+
+ +

Tarification

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Prestations réglées par CESU
+ avec crédit d'impôt de 50% l'année suivante
assistance à domicile30€/heure
cours20€/heure
dépannage50€ ou 60€ ou 70€
mise en service50€
pack sécurité et vie privée70€
déplacement10€ à Quimper, ou 20€ ou 30€
intervention d'urgenceajouter 20€ au déplacement
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Règlement normal sans CESU
+ inclut les cotisations
assistance à domicile40€/heure
cours25€/heure
dépannage65€ ou 77€ ou 90€
mise en service65€
pack sécurité et vie privée90€
déplacement13€ à Quimper, ou 25€ ou 40€
intervention d'urgenceajouter 25€ au déplacement
+
+ + +
+

Assistance à domicile et cours particuliers

+

Assistance à domicile:

+

Aide à l'utilisation de l'ordinateur ou d'une tablette/smartphone. + Je vous aide, vous montre et vous explique pour que vous puissiez le refaire. + L'assistance comprend la résolution de tous les problèmes qui ne nécessitent pas + trop de temps ni une action en profondeur.

+

Vous avez des demandes précises? préparation de voyage, traitement de texte, + supports de communication (flyers, graphisme), c'est possible aussi!

+ +

Cours particuliers:

+

C'est à dire (liste non exhaustive):

+
Les bases :
+- taper du texte, utiliser le clavier et la souris
+- ouvrir une application, redimensionner ou envoyer en arrière-plan une fenêtre
+- composition de l'ordinateur, machine et système d'exploitation
+- copier-coller, poupées russes et rangement des fichiers
+- lire du multimédia (images, musique, vidéos)
+- les périphériques de stockage (CD/DVD, clé USB, carte mémoire)
+- les imprimantes/scanners
+
+Internet :
+- se connecter à internet, fournisseurs d'accès et installation de la «box»
+- c'est quoi l'internet, c'est quoi le web et la différence entre google et google
+- boite e-mail et identification sur les sites web (facebook, banque…)
+- messagerie instantanée (skype)
+- google earth
+- se protéger sur internet
+
+Niveau avancé :
+- bureautique avec libreoffice (traitement de texte, tableur)
+- faire une capture d'écran, manipulation d'images avec paint/gimp/inkscape
+- archivage et compression, envoyer un e-mail avec des pièces jointes
+- formats de fichiers: .jpg .pdf .mp3 .docx .truc .bidule
+- extraire ou graver un disque CD/DVD/bluray
+
+Maintenance et sécurité :
+- précautions et bonnes pratiques
+- à propos du disque dur, formater un disque ou une clé usb
+- maintenance courante de windows (mise-à-jour, nettoyage, défragmentation, analyse antivirus)
+- sauvegarder ses fichiers, créer une image système
+
+ +
+

Dépannage, installation, réinstallation, sauvegarde, récupération de données

+

Dépannage

+

Ce sont des interventions plus profondes qui nécessitent que je vous emprunte la machine (en général un ou deux jours) + ce qui sera le cas pour une installation ou réinstallation du système (windows ou linux), un diagnostic, + la commande et le remplacement d'une pièce
+ => le devis est gratuit
+ => un ordinateur de prêt est proposé le temps des réparations
+ => pour une sauvegarde, prévoir un espace de stockage (exemple: un disque dur externe)
+ => si je dois commander une pièce de rechange, la livraison peut dans certains cas prendre 8 ou 15 jours + (le bateau, c'est moins cher mais c'est plus long) et être accompagnée de frais de douanes

+ +

Mise en service d'un nouvel ordinateur

+

Je fais selon ce que vous désirez:
+ - installation de la box internet, de l'imprimante
+ - récupération des données de l'ancien PC
+ - récupération des courriels outlook ou thunderbird, des favoris du navigateurs
+ - installation d'applications utiles, des mises à jour et d'un antivirus
+ - des réglages pour faciliter l'utilisation et protéger sa vie privée
+ - suppressions des programmes inutiles ajoutés par le constructeur
+ - demandes particulières (j'ai besoin de ce logiciel !!)

+ +

Pack sécurité et vie privée

+

Mise en service d'un ordinateur avec une configuration orientée vers la sécurité:

+

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:
+ 1/ mon ordinateur et mes fichiers sont protégés des autres personnes (accès par mot de passe, chiffrement).
+ 2/ mes fichiers seront toujours accessibles dans le futur (sauvegardes).
+ 3/ mon logiciel est stable, il n'a pas de bug, il marche aujourd'hui et marchera demain.
+ 4/ mon logiciel ne me cache rien, il ne fait pas autre chose que ce que je souhaite qu'il fasse.
+ 5/ je sais prendre des précautions et j'essaie d'éviter l'erreur humaine (je donne de fausses informations sur internet, etc).
+ 6/ je protège mon enfant (contrôle parental).

+ +

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.

+
+ +
+

Création de sites web

+

Visitez donc mon blog!
+ + https://lelionetlecolibri.ordipolo.fr

+

Service pour les amis uniquement.

+
+ + +
+ + + diff --git a/infos.php b/infos.php new file mode 100644 index 0000000..4f0a816 --- /dev/null +++ b/infos.php @@ -0,0 +1,71 @@ + + + + + + + A propos de moi + + + + + + + + +
+
+ + + +

+ ordipolo + ordipolo

+
+ +
+

Services à la personne

+
+

logo SAP

+
+

Régler par CESU et bénéficiez d'un prix réduit et d'un crédit d'impôt de 50% !
+ Depuis le 1er janvier 2017, il n'est plus nécessaire d'être imposable pour en bénéficier (la réduction d'impôt étant devenue un crédit d'impôt).

+

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.
Pas convaincu? Faites le calcul sur cesu.urssaf.fr

+

Et en cadeau,
je peux vous accompagner gratuitement 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).

+
+
+
+ +
+

A propos de moi

+
+

ordipolo

+
+

Paul Jusot, 2 A rue de l'île de Man, 29000 Quimper

+

Entreprise immatriculée aux répertoires des métiers au n°814320610RM29 depuis fin 2015
+ et déclarée prestataire de services à la personne au n°SAP814320610

+
+
+
+ +

Ce site a été entièrement créé et est hébergé par mes soins, ceci à l'exception des deux logos que je dois à + + Romain Le Badezet.

+ +

Je suis dans l'annuaire + répar'acteurs. répar'acteurs

+ +

Je suis aussi sur + servicemalin.com qui m'aide à être référencé.

+ + +
+ + + diff --git a/julian/formule.png b/julian/formule.png new file mode 100644 index 0000000..25032f5 Binary files /dev/null and b/julian/formule.png 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 @@ + + + + + julian maths + + + + +
+

voici mon équation

+ +

formule

+

n est un entier impaire

+

Bonjour à tous, je m'appelle Julian, je suis mathématicien amateur et je suis ami avec Paul.

+

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. + Attention, sous son air apparemment simple, cette formule risque d'être très difficile à démontrer. + Je pense qu'elle n'est pas encore connue par le monde scientifique, mais je peux me tromper.

+

Avis aux amateurs !

+

Le symbole valeur absolue vient du fait que n est tantôt positif, tantôt négatif, + de plus il est toujours impaire. + Le 2 kpi/n est connu des mathématiciens comme une notation permettant d'exprimer les angles d'un polygone régulier. + 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é).

+

J'ai choisi de faire la somme des inverses qui me semble intéressante mais plus atypique.

+ +

+ page précédente +

+
+ + + diff --git a/julian/polygones.png b/julian/polygones.png new file mode 100644 index 0000000..d1db046 Binary files /dev/null and b/julian/polygones.png 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 @@ + + + + + Sites à visiter ! + + + + + + + + + +
+
+ + + +

+ ordipolo + ordipolo

+
+ +
+ +

Le lion et le colibri

+
+
+

Blog que je tiens avec Katy
+ Au programme: voyages, gastronomie, musique, détente.

+ + fleur de cerisier japonais + +
+
+ +
+ +

Recherches en mathématiques

+
+
+

de Julian Favennec à la cité de la ruche.

+ + + +
+
+ +
+ +

Romain Le Badezet

+
+
+

Artistre peintre, dessinateur, plasticien

+ + ligne + +
+
+ + +
+ + + diff --git a/menu.php b/menu.php new file mode 100644 index 0000000..221ebb7 --- /dev/null +++ b/menu.php @@ -0,0 +1,8 @@ + diff --git a/ordipolo.css b/ordipolo.css new file mode 100644 index 0000000..09855e1 --- /dev/null +++ b/ordipolo.css @@ -0,0 +1,308 @@ +body +{ + font-size: 100%; + font-family: sans; + /* pour enlever la bande de la couleur du fond en haut et en bas de la page */ + margin: 0; + background-color: #F0EC41; +} + +#bloc_page +{ + max-width: 1200px; + /* la largeur max indiquée sert à réduire la variété des largeurs d'écran à prendre en compte */ + margin: auto; + padding: 0 20px 30px 20px; + background-color: white; +} + +h1 +{ + font-weight: normal; + display: inline-block; + margin: 5px; + border: 2px #008100 solid; + border-radius: 12px; + padding: 3px; + background-color: #F4F02D; + font-size: 120%; +} + +h2 +{ + font-weight: normal; + font-size: 110%; + text-decoration: underline; +} + +p +{ + margin: 10px; +} + +a +{ + color: black; + /* les liens déjà cliqués restent noirs */ +} + +a:hover /* liens survolés par la souris */ +{ + color: #004F00; +} + +.lien:hover +{ + font-weight: bold; +} + +/* En-tête. */ +header +{ + background-color: white; + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 20px; +} + +header div, header p +{ + margin-top: 40px; +} + +#logohaut +{ + width: 200px; +} + +#logotitre +{ + height: 90px; +} + +/* Menu de navigation. */ +nav +{ + position: fixed; + z-index: 2; /* pour être dessus des prestations */ + text-align: center; +} + +nav a +{ + display: inline-block; /* menu horizontal */ + border: 2px #008100 solid; + border-radius: 12px; + padding: 3px; + margin: 2px; + background-color: #F4F02D; + font-size: 110%; + text-decoration: none; +} + +/* "vous êtes ici" */ +#actuelle +{ + color: #004F00; + border: 3px #004F00 solid; +} + +/* Corps de page. */ +section +{ + display: flex; + align-items: center; +} + +aside +{ + width: 174px; /* équivalent à la photo qui fait 170 de large plus la bordure de 2 pixels */ + display: flex; + flex-direction: column; + align-items: center; +} + +aside p +{ + margin: 0; +} + +article +{ + margin-left: 20px; +} + +#description +{ + margin: 0; + font-size: 110%; +} + +.photo +{ + border: 2px #008100 solid; + border-radius: 10px; +} + +/* nuage de liens */ +section +{ + display: flex; +} + +#prestations div +{ + width: 100%; + display: flex; + flex-wrap: wrap; + justify-content: space-around; + margin: 20px 30px; + padding: 10px; + border: 2px #008100 solid; + border-radius: 12px; + background-color: #F4F02D; +} + +h3 +{ + margin: 10px; + border: 2px #008100 solid; + border-radius: 12px; + padding: 3px; + text-align: center; + font-size: 100%; + background-color: white; +} + +h3 a +{ + text-decoration: none; +} + +table +{ + margin: 10px; + max-width: 470px; + /* fusionner les bordures */ + border-collapse: collapse; +} + +caption span +{ + font-size: 110%; + text-decoration: underline; +} + +caption i +{ + font-size: 90%; +} + +td +{ + + border: 1px black solid; +} + +pre +{ + font-family: sans-serif; + font-size: 90%; + white-space: pre-wrap; + margin: 0 20px; + padding: 10px; + border: 2px #004F00 dotted; + border-radius: 10px; +} + +a img +{ + border: none; + /* retire la bordure bleue sur certains navigateurs */ +} + +.parties +{ + margin: 10px 0 15px 0; +} + +/* lien fixe en bas */ +footer +{ + display: flex; + flex-direction: column; + align-items: center; +} + +footer h1 +{ + position: fixed; + bottom: 0; + margin: 2px; /* de 5 par défaut */ + text-align: center; +} +footer a +{ + text-decoration: none; +} + +/* remplacement du logo titre qui est trop large */ +@media screen and (min-width: 500px) +{ + #logohaut + { + display: none; + } +} + +@media screen and (max-width: 500px) +{ + #logotitre + { + display: none; + } +} + +/* design responsive */ +@media screen and (max-width: 750px) +{ + section + { + display: flex; + flex-direction: column; + } + + aside + { + margin: auto; + } + + p + { + margin: 3px; + } + + #prestations div /* à cause du menu sur deux lignes */ + { + margin-top: 74px; + } +} + +@media screen and (max-width: 710px) +{ + header div, header p + { + margin-top: 76px; + } + + nav a + { + font-size: 100%; + } + + h1 + { + font-size: 110%; + } +} 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 @@ +Certains fichiers ne doivent pas être indexés par les moteurs de recherche. + +Cette ligne a été ajoutée dans: +stats.php + + diff --git a/stats.php b/stats.php new file mode 100644 index 0000000..a69849d --- /dev/null +++ b/stats.php @@ -0,0 +1,90 @@ +getMessage()); +} +?> + + + + + visites du site + + + + + + + + +
+
+ + + +

+ ordipolo + ordipolo

+
+ + + + + + + + + query('SELECT visiteurs FROM compteur'); + $nombre = $reponse->fetch(); + echo (''); + + //~ $reponse = $base->query('SELECT bots FROM compteur'); + //~ $nombre = $reponse->fetch(); + //~ echo (''); + ?> + +
Compteur de visites
Visiteurs
' . $nombre['visiteurs'] . '' . $nombre['bots'] . '
+ + + + + + + + + + + + + + query('SELECT ip, hote, user_agent, DATE_FORMAT(date, \'%d/%m/%Y\') AS date_, nb_pages FROM visites'); + while ($donnees = $reponse->fetch()) + { + echo (''); + echo (''); + echo (''); + echo (''); + echo (''); + } + ?> +

Visiteurs
IPHôteUser_agentDateNombre de pages
' . $donnees['ip'] . '' . $donnees['hote'] . '' . $donnees['user_agent'] . '' . $donnees['date_'] . '' . $donnees['nb_pages'] . '
+
+ + diff --git a/visites.php b/visites.php new file mode 100644 index 0000000..c9b77fb --- /dev/null +++ b/visites.php @@ -0,0 +1,84 @@ +exec('CREATE DATABASE IF NOT EXISTS ' . $db_name . ';'); + unset($Db); + + // connexion + $Db = new PDO('mysql:host=localhost;dbname=ordipolo;charset=utf8', 'root', 'qsdfgh'); + + // create tables + $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);'); + //$Db->query('CREATE TABLE IF NOT EXISTS compteur (visiteurs INT, bots INT);'); + $Db->query('CREATE TABLE IF NOT EXISTS compteur (visiteurs INT);'); + + // initialiser table compteur avec des 0 si la table est vide + if(!$Db->query('SELECT * FROM compteur')->fetch()) + { + $Db->query('INSERT INTO `compteur` VALUES (0);'); + } +} +catch (Exception $e) +{ + die('Erreur : ' . $e->getMessage()); +} + + +// variables +$ip = $_SERVER['REMOTE_ADDR']; // IP +$hote = gethostbyaddr($ip); // nom d'hôte si possible +date_default_timezone_set ('Europe/Paris'); // configure le décalage horaire sur Europe/Paris +$user = $_SERVER['HTTP_USER_AGENT']; // infos sur le client (navigateur, OS), attention aux menteurs +$user = mb_strtolower($user); // minuscules pour strpos() +$date = date('Y-m-d'); // date formatée + +// script recherchant le pays +// la commande whois nécessite le paquet whois (debian) ou bind-tools (archlinux) +// on récupère la ligne (ou les lignes) indiquant le pays avec grep (-i sert à ignorer la casse) +$country = strtolower(shell_exec("whois " . $ip . " | grep -i country | cut -d: -f2 | sed -e ' s/\ //g'")); + + +function incrementerTableCompteur($Db, $field) +{ + $nombre = $Db->query('SELECT ' . $field . ' FROM compteur')->fetch(); + if(!$nombre){$nombre = [0];} // tableau d'une seule case + $nombre[0] += 1; + + $requete = $Db->prepare('UPDATE compteur SET ' . $field . ' = :nombre'); + $requete->execute(array('nombre' => $nombre[0])); +} + +// MAJ de la base +if(isset($_SESSION['id_visiteur'])) // pages suivantes +{ + $requete = $Db->prepare("UPDATE visites SET nb_pages = nb_pages + 1 WHERE id = :id"); + + $requete->execute(array( + ':id' => $_SESSION['id_visiteur'])); +} +else // première page visitée dans la session +{ + $requete = $Db->prepare(" + INSERT INTO visites (ip, hote, user_agent, date, nb_pages) + VALUES (:ip, :hote, :user_agent, :date, 1)"); + // si la visite est déjà enregistrée, ajoute +1 au nombre de pages + + $requete->execute(array( + ':ip' => $ip, + ':hote' => $hote, + ':user_agent' => $user, + ':date' => $date)); + + $_SESSION['id_visiteur'] = $Db->lastInsertId(); + + // compte visiteurs + 1 + incrementerTableCompteur($Db, 'visiteurs'); +} + +echo "visite enregistrée!"; +?> -- cgit v1.2.3