[Plan du site]
Vous êtes ici ---
> Le Site du Zér0
> Les tutoriels
> Non-Officiels
> Site Web
> PHP
> Systèmes complets
> Lecture du tutoriel
Créer un avatar qui change
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Bonjour !
Vous avez vu sur les forums ?
Certains membres ont un avatar qui change tout le temps
C'est quoi ?
Je vais essayer de vous l'expliquer dans ce tuto
Avant de commencer la partie PHP, nous allons choisir nos images !
Voici 3 images que j'ai choisies :


Maintenant, passons au PHP ! Pour préparer le code, on va faire un tableau
$liste[] qui contient les noms des 3 images.
A vous !
Secret (cliquez pour afficher)Code : PHP1 | $liste = array("firefox_normal.png", "firefox_lumière.png", "firefox_simple.png");
|
Vous remarquerez que les valeurs sont les noms de mes images.
Passons aux choses sérieuses
Nous voulons qu'au hasard, notre script choisisse entre ces 3 images et nous l'affiche.
Il y a une fonction pour ça :
mt_rand.
Elle marche comme ceci : mt_rand(nombreMinimal, nombreMaximal).
Ex : mt_rand(5, 10) me donne un nombre qui est soit 5, 6, 7, 8, 9 ou 10
Nous allons donc sélectionner notre image au hasard

A vous !
Secret (cliquez pour afficher)
Je suis sûr que beaucoup on fait l'erreur de mettre 1, 3 (mt_rand(1, 3) aurait donné 1, 2, 3) alors qu'un tableau commence à 0 !
Nous allons maintenant utiliser une méthode différente : on affichera une image différente par jour.
Pour ça nous aurons besoin de connaître la date, on peut utiliser ainsi la fonction getdate() !
Pour ça on a
getdate('mday') !

Pourquoi est-ce mday et pas mjour ?
Parce que c'est anglais et qu'en anglais jour se dit day

Bon ok ce n'est peut être pas la découverte du siècle mais c'est bon à savoir !
Ex : Année se dit Year, Mois Month et Heures Hours... ça vous donne une idée de ce que vous pouvez passer en argument à
getdate().
Le mieux c'est ce tableau :
| Clé | Description | Valeur renvoyée |
|---|
| seconds |
Représentation numérique des secondes |
0 à 59 |
| minutes |
Représentation numérique des secondes |
0 à 59 |
| hours |
Représentation numérique des heures |
0 à 23 |
| mday |
Représentation numérique du jour du mois courant |
1 à 31 |
| wday |
Représentation numérique du jour de la semaine courante |
0 (pour Dimanche) à 6 (pour Samedi) |
| mon |
Représentation numérique du mois |
1 à 12 |
| year |
Année sur 4 chiffres |
Exemples: 1999, 2006 |
| yday |
Représentation numérique du jour de l'année |
0 à 365 |
| weekday |
Version texte du jour de la semaine |
Sunday à Saturday |
| month |
Version texte du mois, comme January ou March |
January à December |
Nous savons que getdate('mday') donne un nombre compris entre 1 et 31.
Vous vous rappelez du modulo ?
Cet opérateur qui renvoie le reste d'une division !
A oui celui qui sert à rien
Bah justement...
Je vais prendre le reste de la division de nombres de jours par 3.
3 ?! Pourquoi ?
Parce qu'on a 3 images

Si on en avait 25, il faudrait faire le modulo avec 25

Voici des exemples :
24%3 = 0
25%3 = 1
26%3 = 2
27%3 = 0
28%3 = 1
29%3 = 2
etc...
Le modulo nous permet d'avoir un nombre compris entre 0 et 2, c'est parfait pour notre tableau ça !!
Nous allons incorporer le code PHP ! Maintenant à vous de jouer pour que ça marche
Secret (cliquez pour afficher)Code : PHP1
2 | $jour = getdate('mday');
$notreImage = $liste[$jour%3];
|
$notreImage contiendra le nom de l'image, image qui changera chaques jours
Comment ça marche ? Lors du chargement du fichier PHP, le naviguateur va être redirigé vers l'image.
Pour rediriger quelqu'un on utilise la fonction header (oh ça alors !), elle fonctionne ainsi :
Code : PHP
Allez à vous !
Secret (cliquez pour afficher)Code : PHP1 | header("location: ".$liste[$id]);
|
$id contiendra soit mt_rand(0, 2) soit $jour%3
Tout simplement

.
Au hasard
Code : PHP1
2
3
4
5
6 | <?php
$liste = array("firefox_normal.png", "firefox_simple.png", "firefox_lumiere.png");
$hasard = mt_rand(0, 2);
header("location: ".$liste[$hasard]);
?>
|
Par jour
Code : PHP1
2
3
4
5
6 | <?php
$liste = array("firefox_normal.png", "firefox_simple.png", "firefox_lumiere.png");
$jour = getdate('mday');
header("location: ".$liste[$jour%3]);
?>
|
Voila ! Remarquez que mes images sont dans un dossier firefox au même endroit que mon image PHP
Revenons à nos trois images que je voulais voir au hasard.
Vous avez tout ce qu'il faut pour finir mon travail non ?
Secret (cliquez pour afficher)
Code : PHP1
2
3
4
5
6 | <?php
$liste = array("http://www.siteduzero.com/uploads/fr/files/12001_13000/12386.png", "http://www.siteduzero.com/uploads/fr/files/12001_13000/12387.png", "http://www.siteduzero.com/uploads/fr/files/12001_13000/12388.png");
$hasard = mt_rand(0, 2);
header("location: ".$liste[$hasard]);
?>
|
Malheureusement les uploads m'empèchent d'envoyer des images de type PHP, mais essayez chez vous ces scripts
Comment améliorer le script avec quelques idées
- Permettre au visiteur de choisir votre avatar, avec un cookie contenant la clé du tableau correspondante
- Afficher des images selon la date. Ex : un oeuf au chocolat pour Pâque
- Dans la même idée, vous pouvez afficher une image personnalisé pour l'anniversaire de quelqu'un. Pour ça vous pourrez même écrire son prénom(GD)
(cf tuto de m@théo)
- Faire une compilation des deux techniques : vous prenez une image au hasard qui durera 1 jour.
- Redimensionner les images en 100x100px, et mettre le fichier PHP en avatar.
Il y a une alternative, la fonction
readfile(); qui permet d'afficher une image et pas de rediriger vers l'image.
Code : PHP1
2
3
4
5
6
7
8 | <?php
header('Content-type: image/png');
$liste = array("http://www.siteduzero.com/uploads/fr/files/12001_13000/12386.png", "http://www.siteduzero.com/uploads/fr/files/12001_13000/12387.png", "http://www.siteduzero.com/uploads/fr/files/12001_13000/12388.png");
$hasard = mt_rand(0, 2);
readfile($liste[$hasard]);
?>
|
Vous êtes beaucoup à vous poser la question, je vais donc vous y répondre : l'url-rewriting.
C'est tout bête à faire ! Il vous suffit d'ouvrir notepad++ et de taper ce texte :
Code : Apache1
2 | RewriteEngine on
RewriteRule ^fichier\.png$ fichier.php [L]
|
Ensuite vous enregistrez ce fichier
dans le même dossier que votre image sous le nom de
.htaccess.
Vous pouvez l'enregistrez dans un dossier parent en mettant par exemple après
Code : Apache1 | RewriteRule ^dossier/fichier\.png$ dossier/fichier.php [L]
|
ou
Code : Apache1 | RewriteRule ^fichier\.png$ dossier/fichier.php [L]
|
à vous de voir

.
Concrètement, si vous avez un dossier avec un fichier avatar.php, signature.php et banniere.php et que vous voulez les afficher sur un forum, voici ce que vous devriez taper :
Code : Apache1
2
3
4 | RewriteEngine on
RewriteRule ^signature\.gif$ signature.php [L]
RewriteRule ^avatar\.jpg$ signature.php [L]
RewriteRule ^banniere\.png$ banniere.php [L]
|
C'est bon vous comprenez un peu mieux ? L'url-rewriting, on le trouve partout et même ici !
Citation : La page que vous lisezhttp://www.siteduzero.com/tuto-3-9689-1-creer-un-avatar-qui-change.html
En réalité ce n'est pas tuto-3-9689-1-creer-un-avatar-qui-change.html le nom de la page, c'est sans doute quelque chose comme...
tuto.php?id=9689&ref=3&typ=1&titre=creer-un-avatar-qui-change.
Le problème de cet technique est quelle use beaucoup de ressources... Il va falloir vous munir donc d'un hebergement pas trop mal

.
Super !
Maintenant vous pourrez craner sur les forums avec votre avatar !
Ca c'est mieux qu'un GIF animé