Aller au menu - Aller au contenu

[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

Avatar
Auteur : almaju
Créé : le 09/07/2006 01:18:52
Modifié : le 06/10/2007 11:59:56
Noter et commenter ce tutoriel
Imprimer ce tutoriel
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 o_O
C'est quoi ?
Je vais essayer de vous l'expliquer dans ce tuto ;)
Sommaire du chapitre :

On prépare !

Avant de commencer la partie PHP, nous allons choisir nos images !
Voici 3 images que j'ai choisies :
Image utilisateurImage utilisateurImage utilisateur

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 : PHP
1
$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 :pirate:

Au hasard !

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 :magicien:

Nous allons donc sélectionner notre image au hasard :)
A vous !
Secret (cliquez pour afficher)
Code : PHP
1
mt_rand(0, 2)

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 !

Par rapport à une date

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') !
o_O 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éDescriptionValeur 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 :lol:

Bah justement...
Je vais prendre le reste de la division de nombres de jours par 3.
3 ?! Pourquoi ?

Parce qu'on a 3 images :lol:
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 : PHP
1
2
$jour = getdate('mday');
$notreImage = $liste[$jour%3];


$notreImage contiendra le nom de l'image, image qui changera chaques jours :)

Headers

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
1
header("location: url");

Allez à vous !
Secret (cliquez pour afficher)
Code : PHP
1
header("location: ".$liste[$id]);

$id contiendra soit mt_rand(0, 2) soit $jour%3

Tout simplement :lol: .

Compilation

Au hasard


Code : PHP
1
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 : PHP
1
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 ;)

Résultat et comment l'améliorer.

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 : PHP
1
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 :)




Il y a une alternative, la fonction readfile(); qui permet d'afficher une image et pas de rediriger vers l'image.

Code : PHP
1
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]); 
?>

Annexe : Comment transformer un .php en .png ?

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 : Apache
1
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 : Apache
1
RewriteRule ^dossier/fichier\.png$ dossier/fichier.php [L]

ou
Code : Apache
1
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 : Apache
1
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 lisez
http://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é :)
Auteur : almaju
Noter et commenter ce tutoriel
Imprimer ce tutoriel

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | Fil RSS | XHTML 1.0 | CSS 2.0
Edité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 89 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0466s (0.0307s)