|
|
PHP est langage de scripts très récent. A la différence de javascript il est interprété sur le serveur ce qui lui confère une robustesse et une stabilité plus grande.
|
Pour pouvoir l'utiliser, il faut que l'hébergeur de votre site l'ait installé et vous le propose. C'est le cas chez FREE, CHEZ, MULTIMANIA/LYCOS (si vous n'avez pas peur des pubs envahissantes sur ce dernier !) et sur la plupart des autres...
|
PHP permet d'automatiser la gestion des sites : haut et bas de page identiques sur toutes les pages, menus, sondages, forums, listes de diffusion... Il permet surtout l'utilisation des bases de données ce qui en fait un outil très professionnel. Moi ce qui m'intéresse pour le moment c'est le pédagogique aussi j'ai trouvé là un moyen de réaliser des questionnaires corrigés en ligne, plus performants, plus fiables et plus rapides à réaliser que ceux que je faisais auparavant en HTML et corrigés par javascript. Il m'offre aussi la possibilité de gérer mon site plus efficacement et de le rendre plus dynamique. |
|
||
|
||
Pour le moment 5 scripts et quelques astuces : |
|
|
|
|
Il suffit d'ouvrir f_quest.php avec le bloc-notes (ou tout autre éditeur en mode texte pur) et d'y entrer, aux emplacements précisés, quelques lignes :
$question[0]="Quelle est la couleur du cheval blanc d'Henri IV ?"; $question[1]="Quel est le jour de repos ?"; $question[2]="Quelle est la saison la plus chaude ?"; etc............................. $bonne_rep[0]="blanc";
Il faudra bien sûr sauvegarder le fichier modifié, l'envoyer dans votre répertoire, sur votre site, chez votre hébergeur et l'appeler depuis une de vos pages. Une fois que le questionnaire aura été rempli par les visiteurs de votre site, leur score sera affiché. C'est absolument tout ce qu'il y a à faire.
Nouvelle version (05/03/12) pour les dernières versions de PHP, les variables globales à OFF et les navigateurs récents
05/03/12 ///////////////////////////////////////////////////////////////////////////////////////// // Remplacement de $HTTP_POST_VARS par $_POST pour les versions récentes de PHP (>4.01)// // Absolument nécessaire sur certains serveurs, ex : SFR, ORANGE... // /////////////////////////////////////////////////////////////////////////////////////////
|
|
|||||||||
|
|||||||||
C'est presque pareil : il suffit d'ouvrir f_qcm.php avec le bloc-notes (ou tout autre éditeur en mode texte pur) et d'y entrer, aux emplacements précisés, quelques lignes :
----------------------------------------------------------------------------------- $question[0]="Quelle est la couleur du cheval blanc d'Henri IV ?"; $choix[0]=array("blanc","bleu","rouge","vert"); $bonne_rep[0]=$choix[0][0]; $question[1]="Quel
est le jour de repos ?"; $question[2]="Quelle
est la saison la plus chaude ?"; $question[3]="PHP
est un langage interprété sur le serveur ?"; etc.... Nouveau 03/01/04 Ce script est maintenant fourni en 2 versions :
Un petit bout de JavaScript a été ajouté, en début de page, afin d'empêcher le retour à la page précédente (particulièrement gênant lorsque les bonnes réponses ont été données !) Il faudra bien sûr sauvegarder le fichier modifié, l'envoyer dans votre répertoire, sur votre site, chez votre hébergeur et l'appeler depuis une de vos pages. Une fois que le qcm aura été rempli par les visiteurs de votre site, leur score sera affiché. Un QCM est souvent préférable à un questionnaire
car avec ce dernier il y a souvent ambiguïté et des réponses
justes mais pas tout à fait identiques à celles espérées
ne seront pas acceptées. Nouvelle version (05/03/12) pour les dernières versions de PHP, les variables globales à OFF et les navigateurs récents
05/03/12 ////////////////////////////////////////////////////////////////////////////////////////// // Remplacement de $HTTP_POST_VARS par $_POST pour les versions récentes de PHP (>4.01) // // Absolument nécessaire sur certains serveurs, ex : SFR, ORANGE... // //////////////////////////////////////////////////////////////////////////////////////////
|
Truc n° 0 Ouvrir une page en PHP
Ouvrir une page en PHP et bien c'est exactement la même chose qu'ouvrir une page en HTML : on tape son adresse dans la barre du navigateur ou on clique sur un lien qui renferme son adresse. Elle doit simplement porter l'extension .php au lieu de .htm !
Ca change quoi ? Hé bien ça veut qu'elle est devenue une page dynamique et qu'elle sera reconnue et modifiée (interprétée), par le serveur qui l'héberge (si bien sûr, il gère le PHP, ce ce qui est pratiquement le cas général, actuellement), en fonction du ou des scripts PHP qu'elle contient.
Exemple simple (simpliste !). Soient les pages :
PHP, depuis le serveur, grâce à un petit script, inclus dans la page, va la transformer en page dynamique
Mais ceci peut aussi être effectué sur le poste du visiteur grâce à un petit script JavaScript, inclus dans la page, grâce à son navigateur (FireFox ou Internet Explorer (si bien sûr Javascript est activé (99 fois sur 100 !))
Et si comme moi, ci-dessous, vous mettez les 2 scripts sur la même page (.PHP !) et que, bien sûr, javascript est activé sur votre ordinateur, voici ce que vous verrez :
Vous pourrez constater qu'il y a souvent une différence entre les 2 résultats obtenus, et qu'en plus du temps de transfert et d'affichage (minimes), le serveur et le poste utilisateur sont rarement à l'heure correcte et synchrones !
Il faudra, peut-être, en tenir compte pour certains scripts qui doivent s'exécuter à une heure donnée très précise !
Pour ce qui est d'écrire, (enregistrer) de petits renseignements, (nombre de visites, couleur de la page sélectionnée, type d'écriture choisi...) cela pourra se faire sur le poste de l'utilisateur, également en javascript ou PHP, grâce au cookies.
Mais pour enregistrer, des choses plus conséquentes (messages d'un forum, résultats de tests...) cela devra être obligatoirement fait sur le serveur de l'hébergeur et avec un langage plus évolué, tel que PHP, ASP, avec écriture dans des fichiers textes ou dans des bases de données.
Il est traditionnel d'afficher le résultat d'un compteur sous la forme : 001365 (avec 6 chiffres ici).
printf("%06d",$visiteurs); Truc n°2 Supposons que vous ayez mis un compteur de téléchargement pour un logiciel diffusé sur votre site et qu'il doive afficher : Téléchargé 1234567890 fois Pas très lisible ! Là encore il y a ce qu'il faut, à l'aide de 2 fonctions : number_format(1234567890) qui donne 1,234,567,890 (hé oui, nos camarades américains séparent les tranches de 3 chiffres par des virgules) puis : str_replace(","," ",number_format(1234567890)) qui remplacera les virgules par des espaces, comme on le fait chez nous, et donnera 1 234 567 890 ce qui est quand même plus facile à lire ! Et pourquoi pas une petite fonction :
function tranche_nb($nombre) que l'on utilisera comme ceci : echo "Téléchargé ".tranche_nb($nb_telech)." fois"; si $nb_telech est la variable incrémentée à chaque téléchargement effectué. Enfer et putréfaction ! 0n peut encore faire plus simple en passant 4 arguments à la fonction number_format, ce qui donnerait :
function tranche_nb($nombre) Argument 1 : le nombre à formater, argument 2 : le nombre de décimales (ici 0), argument 3 : le séparateur décimal (, ou .), argument 4 : le séparateur de milliers (l'espace chez nous).
Truc n° 3 (sur un serveur qui gère le PHP évidemment, encore que l'on pourrait peut-être aller charger le script sur un autre serveur qui lui gère le PHP ?) Exemple
: on veut appeler le script logueur.php (cf ci-dessus) <SCRIPT language="Javascript" src="http://www.monjolisite.com/logueur.php"></SCRIPT> Mais me direz-vous si le visiteur a désactivé JavaScript (ce qui est le cas de quelques % des internautes) alors là encore il y a un moyen en rusant un peu : On demande au navigateur de cet internaute d'aller charger une image : <IMG src="http://www.monjolisite.com/logueur.php" width="1" height="1" border="0"> Image réduite, pas de bordure : on ne voit rien sur la page appelant le script et cela fonctionne. Une dernière
remarque en passant : il faut être méfiant mais quand même
pas trop ! D'après ce que j'ai pu lire, pour être en parfaite
sécurité il n'est pas nécessaire de désactiver
Javascript (sauf peut-être dans les messages, possibilité
qui n'est, hélas, offerte clairement que par NetScape et
l'excellent Mozilla bien évidemment !).
Truc n° 4 Comme vous le savez sûrement, il faut, en HTML, remplacer nos caractères accentués ou spéciaux par des chaînes de caractères affichables par tous les navigateurs du marché, sous peine d'afficher sur certains d'entre-eux, en particulier ceux des étrangers ou certains plus exotiques, un affreux et incompréhensible charabia. Ainsi :
Il y a encore plus simple une fonction de PHP peut faire le travail : htmlentities() ainsi si vous écrivez : $texte ='C'est
comme ça que je l'ai réalisée à Noël';
Attention si vous voulez mettre un retour à la ligne n'écrivez pas : echo htmlentities($texte."<br>"); le caractère '<' ne serait pas interprété mais traduit en < et donc cela ne fonctionnerait pas. Il faut écrire : echo htmlentities($texte)."<br>"; La fonction
htmlspecialchars() ne traduit que
les caractères Truc n° 5 Si vous voulez
écrire des renseignements dans un fichier, une phrase par ligne,
vous faites : Il faut écrire : <?php
Pour avoir en fin de ligne le fameux couple CR/LF (Carriage Return/Line Feed : retour chariot/fin de ligne) codé en hexadécimal : 0D/0A. Et
là tout fonctionne...
|
||||||||||||||
Vous aimeriez sans doute savoir quel est le nombre de visites reçues, par jour, par chacune des pages de votre site et ceci de manière automatique, évidemment !
Deux petits scripts PHP et quelques petits fichiers textes suffiront amplement pour un site moyennement fréquenté.
1-Ecriture du fichier log :
Appelons logj.php ce fichier dont le contenu pourrait être : ----------------------------------------------------------------------- <?php // prise de la date du jour $dj = date("_d_m_Y"); //ex _25_07_2007 (et à partir de minuit 26_07_2007 !) $page = $_SERVER['PHP_SELF']; // nom de chaque page qui appelle le script ex : /page0.php $page = str_replace("/","",$page); //on enlève le slash (/) $posi = strrpos($page,'.'); // puis l'extension (on suppose qu'il y en a toujours une !) $page = substr($page,0,$posi);
$fp = fopen("log_".$page.$dj.".txt", "a+"); // ouverture du fichier log_page0_25_07_2007.txt en ajout. Si le fichier n'existe pas il est créé fputs ($fp,"1"); // on ajoute 1 à la ligne (1ère visite 1, 2ème : 11, 3 ème : 111, etc...) fclose($fp); // on ferme le fichier ?> ----------------------------------------------------------------------- Ce fichier sera inclus dans chacune des pages que vous désirez surveiller :
<?php include "logj.php"; ?>
2-Lecture du fichier log
Pour lire ces petits fichier un autre petit script : lit_logj.php : ----------------------------------------------------------------------- <html> <head> <title>log sur mon_site</title> </head> <body> <?php function NbVisit($fic) { if (!(file_exists($fic))) { return 0; } // 0 visite pour cette page pour le moment ! else { $fp = fopen($fic,"r"); // ouverture du fichier en lecture seule $Ligne = fgets($fp,4096); // On récupère une ligne, qui peut être longue ! return (strlen($Ligne)); // longueur de la ligne = nombre de visites fclose($fp); // On ferme le fichier } } // prise de la date du jour $dj = date("_d_m_Y");
// appel de la fonction pour chaque page que l'on veut surveiller $nb[0] = NbVisit("log_"."page0".$dj.".txt"); // Affichage du résultat echo "Nombre de visites sur la page0 : ".$nb[0]."<br>"; // idem $nb[1] = NbVisit("log_"."page1".$dj.".txt"); echo "Nombre de visites sur la page1 : ".$nb[1]."<br>";
// etc... ?> </body> </html> -----------------------------------------------------------------------
Pour connaître vos statistiques journalières, appelez ce script depuis la barre de votre navigateur : http://monsite.fr/lit_logj.php ou mieux créez un raccourci vers celui-ci.
Vous n'avez peut-être pas envie d'incrémenter vos compteurs, quand vous allez vous même sur vos pages. C'est possible de le faire en appelant vos pages, depuis la barre du navigateur ou un lien, avec un paramètre (mais pas en appelant depuis le site lui-même !):
3-Ne pas enregistrer ses propres traces
http://mon_site.fr/page0.php?visiteur=toto et en modifiant logj.php ainsi : ..... if ( !(isset($visiteur) && ($visiteur == "toto"))) // ce n'est pas moi qui appelle { $fp = fopen("log_".$page.$dj.".txt", "a+"); fputs ($fp,"1"); fclose($fp); } ?>
4-Ne pas enregistrer les robots indexeurs
On peut aussi connaître la langue principale d'un visiteur grâce à la variable globale PHP : HTTP_ACCEPT_LANGUAGE
$langue = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2); // renvoie : "fr", "en" "pt",...
Et j'ai remarqué que, pour la plupart des robots qui parcourent sans arrêt les sites pour les indexer, cette chaîne est vide : "" !
Pour ne pas que ces robots incrémentent inutilement vos compteurs vous pourriez modifier le script ainsi :
if ( $langue != "") // on peut aussi constater que leur nom (gethostbyaddr($_SERVER['REMOTE_ADDR'])) contient la plupart du temps les mots "crawl" ou "bot" { ... }
02/11/07 J'ai constaté, ces derniers temps, que de plus en plus de téléchargements qui ne semblaient pas venir de ces robots comportaient aussi une chaîne vide !???? Cette information est donc à prendre avec prudence...
Il est alors possible de combiner les conditions précédentes pour avoir une statistique plus réaliste des visites.
Et je vous laisse faire pour une mise en page attrayante, calculer les totaux, les pourcentages, réaliser les graphiques...
Une dernière petite chose pour aujourd'hui : vous pouvez même vous envoyer automatiquement ces statistiques, à chaque fin de chaque journée, dans votre boîte au lettres personnelle.
5-S'envoyer un mail automatique avec les résultats
Encore un petit script, soit EnvStats.php : ----------------------------------------------------------------------- <?php $dj = date("_d_m_Y"); //on prend la date du jour
$FicTemoin = "Envoi".$dj.".txt"; // fichier bidon dont la présence indique que l'envoi des statistiques a déja été effectué
if (!(file_exists($FicTemoin))) // nexiste pas encore { $dj_1 = date("_d_m_Y",time()-3600*24); // date du jour précédent
function NbVisit($fic) { // ... comme précédemment }
$titre = "Statistique de monsite pour le ".$dj_1;
$nb[0] = NbVisit("log_"."page0".$dj_1.".txt"); $message = "Nombre de visites sur la page0 : ".$nb[0]."\r\n"; $nb[1] = NbVisit("log_"."page1".$dj_1.".txt"); $message .= "Nombre de visites sur la page1 : ".$nb[1]."\r\n"; //etc mail("monadresse@monfai.fr",$titre,$message);// envoi du message
$fp = fopen($FicTemoin , "a+");// écriture du fichier témoin en ajout et création fputs ($fp,"Envoyé le ".date("d/m/Y à H:i")); // ou n'importe quoi, ou même rien ! fclose($fp); } ?> ----------------------------------------------------------------------- Mettez ce script dans votre page principale <?php include "EnvStats.php"; ?> et votre premier visiteur vous enverra, à son insu, l'unique message des statistiques !
Les hébergeurs gratuits, dont FREE, autorisent maintenant l'envoi de quelques dizaines d'exemplaires d'un même mail par jour et de quelques centaines ou milliers par semaine (?).
|
Visionneuse de diapos sur internet
Nouvelle version du 21/04/03 encore plus automatique
!
Quelques petites restrictions quand même :
Il faut aussi qu'internet soit assez véloce. Les jours, trop nombreux, où il pédale dans la semoule, il vaut mieux penser à autre chose.
Télécharger l'archive (21/04/03) avec les 2 scripts (JavaScript seul et avec PHP 205 ko)
|
|||||
Le formulaire (formul.php): Un formulaire tout à fait classique avec ses différents champs (nom, prénom, adresse, email, message,...) que vous pouvez réaliser avec votre éditeur HTML habituel. Il porte l'extension .PHP et s'appelle lui même. form name="form1" method="post" action="formul.php"
<?php (htmlspecialchars()
pour contrer les éventuels piratages par injection de code
html, javascript...(XSS). En contrôlant ainsi les entrées)
fputs ($fp,"nom = $nom\n");
1°) Tester le script formulaire (de préférence, le remplir avec un e-mail bidon !) Le lecteur/répondeur (litformul.php): Un petit script, protégé quand même par un mot de passe, pour lire, lire&vider, effacer et afficher dans une page HTML tous les messages reçus. L'adresse de votre correspondant étant affichée sous forme de lien, il suffit de cliquer dessus ce qui provoque le chargement de votre logiciel de courrier avec un message tout prêt (destinataire + objet + texte). Il suffit de cliquer sur Envoyer. Une vérification de certains champs est ici faite en PHP mais il serait préférable d'ajouter un script Javascript qui fait ce travail avant l'envoi. La meilleure solution, toujours en PHP, pour avoir un répondeur vraiment automatique, serait de pouvoir utiliser la fonction mail(...) mais elle est très souvent désactivée, limitée chez les FAI/hébergeurs, et on pourrait dire heureusement, vu le nombre de messages non-désirés qui encombrent déjà nos messageries électroniques.
2°) Tester le script lecteur/répondeur (après avoir rempli le formulaire du script ci-dessus. Vous pouvez aussi l'effacer en quittant, merci !) (Nouvelles versions du 06/03/12)
Et le plus gros avantage de cette méthode, c'est peut être d'avoir un gestionnaire de messages qui ne permet pas la capture de votre adresse email...
|
|||||
Bonnes adresses :
http://www.php.net/
: le site officiel |
|
|