Accès au manager - réservé aux membres

Navigation

Bouts de Codes PHP

Photo du jour choisi de manière aléatoire à partir d'un répertoire

Informations sur le code source PHP

Ecrit par :  KOogar
Autres codes en PHP de l'auteur : [51] sources Voir
Date d'enregistrement du code le 27 Avril 2005 - Vu 6475 fois
Code source zippé: Télécharger le fichier ZIP
Impression: Imprimer le code
Ajouter la page à vos favoris

Description du code source

Informations sur le code source

Vous désirez afficher une image différente tous les jours ?
Ce script est fait pour vous.
Le principe est simple, un fichier texte contient le jour et le nom de l'image a afficher, reste plus qu'à afficher si la date est la meme, sinon on choisi une nouvelle image de manière aléatoire et elle s'affiche pour la journée !!

Code Source



.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
.12
.13
.14
.15
.16
.17
.18
.19
.20
.21
.22
.23
.24
.25
.26
.27
.28
.29
.30
.31
.32
.33
.34
.35
.36
.37
.38
.39
.40
.41
.42
.43
.44
.45
.46
.47
.48
.49
.50
.51
.52
.53
.54
.55
.56
.57
.58
.59
.60
.61
.62
.63
.64
.65
.66
.67
.68
.69
.70
.71
.72
.73
.74
.75
.76
.77
.78
.79
.80
.81
.82
.83
.84
.85
.86
.87
.88
.89
.90
.91
.92
.93
.94
.95
.96
.97
.98
.99
.100
.101
.102
.103
.104
.105
.106
.107
.108
.109
.110
.111
.112
.113
.114
.115
.116
.117
.118
 

<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Photo du jour choisi de manière aléatoire à partir d'un...*/
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts124-PHP.htm              */
/* Auteur         : KOogar                                                    */
/* Date édition   : 27 Avril 2005                                             */
/*                                                                            */
/******************************************************************************/


// TITRE
// Photo du jour choisi de manière aléatoire a partir d'un répertoire

// EXPLICATIONS
// Vous désirez afficher une image différente tous les jours ?
// Ce script est fait pour vous.
// Le principe est simple, un fichier texte contient le jour et
// le nom de l'image a afficher, reste plus qu'a afficher si la date
// est la meme, sinon on choisi une nouvelle image de manière aléatoire
// et on l'affiche pour la journée !!

// CAS PARTICULER
// Le code verifie que vous soyez bien le REFERER pour la mise à jour
// cela empeche les moteurs de recherches de pinger le code ;)
// Si le script ne marche pas c'est que votre serveur serveur ne renvoi
// pas le REFERER, c'est tres rare mais cela peut arriver
// Si c'est le cas -> changer cette ligne: if($rel != FALSE) par if($rel == FALSE)

// EXECUTION DU SCRIPT
// 1° Mettez vos images dans un repertoire que vous nommer + bas
// 2° Créer le fichier info_image.txt et n'oubliez pas d'ouvrir
//    les droits en écriture sur ce fichier ou utiliser
//    chmod ($fichier_text, 0777); si votre serveur le permet
// 3° Get fun !!!


$nomRepertoire "votre_repertoire_ici";
$fichier_text  "info_image.txt";

// lit le fichier selon la ligne
 function lire($fichier$ligne)
 {
  if (file_exists($fichier))
  {
  if($res fopen($fichier,"r+"))
  {
  while(!feof($res))
  { $result[]= fgets($res,1000000); }
  fclose($res);
  $tab=$result;
  $result=$tab[$ligne-1];
  return $result;
  }
  }
  }
// info du fihier
  $elt1 explode("/"lire($fichier_text,"1") );
// date du jour
  $elt2 explode("/"date("d/m") );


// date similaire
  if ($elt1[0] == $elt2[0])
   {
   $image lire($fichier_text,"2");
  // SORTIE PRINT  SORTIE PRINT //
   echo '<img scr="',$nomRepertoire,'/',$image,'" alt="" /><br />';
   }


// mise a jour avec une image aléatoire
  else
  {
  $imgs = array();
  $dossier opendir($nomRepertoire);
  $i=0;

  while ($Fichier readdir($dossier))
  { $imgs[$i] .= $Fichier;  $i++;
  }
  closedir($dossier);

  srand ((double)microtime()*10000000);
  $nbr rand(1, ($i-1));

// check le referer et ecrit la nouvelle date

  $referer $_SERVER["HTTP_REFERER"];
  $host $_SERVER["HTTP_HOST"];
  $rel strstr($referer,$host);
  if($rel != FALSE) {
//  chmod ($fichier_text, 0777);
  $f fopen($fichier_text"w");
  fwrite($f,date("d/m"));
  fwrite($f,"\n");
  fwrite($f,$imgs[$nbr]);
  fclose($f);
//  chmod ($fichier_text, 0755);
  }


  // SORTIE PRINT  SORTIE PRINT //
  echo '<img scr="',$nomRepertoire,'/',$imgs[$nbr],'" alt="" /><br />';
 }

?> 

Fonctions du code source

Fonctions php / mysql PHP

  • file_exists : Vérifie si un fichier ou un dossier existe - (PHP 4, PHP 5)
  • fopen : Ouvre un fichier ou une URL - (PHP 4, PHP 5)
  • feof : Teste la fin du fichier - (PHP 4, PHP 5)
  • fgets : Récupère la ligne courante sur laquelle se trouve le pointeur du fichier - (PHP 4, PHP 5)
  • fclose : Ferme un fichier - (PHP 4, PHP 5)
  • explode : Coupe une chaîne en segments - (PHP 4, PHP 5)
  • date : Formate une date/heure locale - (PHP 4, PHP 5)
  • echo : Affiche une chaîne de caractères - (PHP 4, PHP 5)
  • array : Crée un tableau - (PHP 4, PHP 5)
  • opendir : - (PHP 4, PHP 5)
  • readdir : Lit une entrée du dossier - (PHP 4, PHP 5)
  • closedir : Ferme le pointeur sur le dossier - (PHP 4, PHP 5)
  • microtime : Retourne le timestamp UNIX actuel avec les microsecondes - (PHP 4, PHP 5)
  • srand : Initialise le générateur de nombres aléatoires - (PHP 4, PHP 5)
  • rand : Génère une valeur aléatoire - (PHP 4, PHP 5)
  • strstr : Trouve la première occurrence dans une chaîne - (PHP 4, PHP 5)
  • fwrite : Écrit un fichier en mode binaire - (PHP 4, PHP 5)

Commentaires [13]

14AT253
le 20/12/2005 à 13:59:00
Salut
il n'y a pas d'exemple pour le fichier texte , dommage
J'ai essayé date,image ; date/image mais cel ne fonctione pas
ou enfin presque c'est pas la bonne image ( meme en virant la condition aleatoire )
Merci de m'aider
@+
Laurent
le 21/12/2005 à 14:00:00
Le fichier texte est vide au depart et se remplira de lui meme. Tu as peut etre oulier de faire un chmod 777 sur le fichier texte, le chmod 777 donne le droit en écriture sur le fichier.
superouioui
le 08/06/2007 à 01:36:00
Merci pour ce script j'utilise sur mon site http://f19.free.fr/f19/articles.php?lng=fr&pg=108

Mais j'ai constater un bug à la ligne 69. J'ai du remplacer la ligne : $nbr = rand(0 ($i-1)); par $nbr = rand(1, ($i-1)); car au niveau zero il y a les deux points du retour au dossier parent.
KOogar
le 16/06/2007 à 17:01:00
Bien vu ;-)

J'ai modifié le script. Merci
patrickDLS
le 22/07/2007 à 10:40:00
Ca commence à marcher chez moi !
Mais comment faut -il faire pour que les photos aléatoires soient à la bonne dimension sur le site ?
QUESTION 1Faut -il les formater toutes à la même dimension avant de les stocker dans le repertoire 'votre repertoire'? Comment faites vous ?
QUESTION 2 : pouvez vous donner aussi l'exemple de l'appel de cette photo aléatoire dans la page html, avec tous les details de formatage ?
MERCI !!
Patrick_DLS
patrickDLS
le 23/07/2007 à 08:16:00
ET malgré le rand (1 etc.. ) corrigé, le second jour j'ai toujours dans le un fichier texte jour/date .. et ca calle !
Merci de m'éclairer
KOogar
le 23/07/2007 à 17:54:00
le second jour de quoi ? as-tu bien mis ton fichier txt en chmod 777 sur ton serveur ?
patrickDLS
le 26/07/2007 à 23:07:00
Ca progresse ! Mais il reste quelques troubles :
*pourquoi autant chez moi que chez superouioui (voir http://f19.free.fr/f19/articles.php?lng=fr&pg=108) , le cadre apparait un peu trop haut et trop large par rapport à la photo ?
Secundo, est-ce normal qu'il ny' a pas toute la liste de photos du repertoire qui se mette dans le fichier txt.
Tertio : comment modifier le script pour qu'il mette une marque dans le nom ou qu'il detruise les photos deja utilisées, pour ne les afficher qu'un jour chacune ?
MERCI !
P.
KOogar
le 27/07/2007 à 07:38:00
"Le cadre apparait un peu trop haut ??"
Ca ce n'est pas du php, c'est de l'habillage, regarde du cote css.
Un code place dans img genre style="margin-bottom:5px;" devrait suffir

Pour le reste: voila comment ca marche. Le code ecrit 2 choses dans le fichier texte:
- la date
- le nom de l'image

C'est tout. A chaque fois le code regarde la date. Si elle est differente de la date d'aujoudh'ui, on met a jour.
Pas plus compliqué que ca.

Est-ce que chez free, tu peux laisser un fichier .txt ouvert en écriture ? La est le probleme à mon avis.
superouioui
le 27/07/2007 à 10:59:00
Je confirme chez free ça marche.
J'ai mis le scipte php à l'exterieur du site. Pour retrouver la photo sur mon site j utilise comme toi une iframe :



Pour retirer le cadre il faut rajouter le parametre : FRAMEBORDER="no"
tu peux colorer le fond de la page de ta photo de la même couleur que le fond de ton site.


patrickDLS
le 28/07/2007 à 17:18:00
Merci, tout ça est bien compris !
Est-ce que quelqu'un peut modifier le script pour qu'il detruise la photo qu'il vient d' utiliser, pour ne les afficher qu'un jour chacune et peu à peu 'vider le réservoir" de photos ?
CE serait complet !
Merci.
patrickDLS
le 23/08/2007 à 14:02:00
Alors qui peut m'aider à modiier le script :
quand le jour change, il
KOogar
le 23/08/2007 à 14:38:00
voila voila!!

donc juste apres le else =>

else
{
// prend le nom de l'image du fichier texte
$image_del = lire($fichier_text,"2");
// et supprime l'image pour qu'elle ne soit jamais reprise
delete ($image_del );

Poster un commentaire

:P :) :wink: :lol: :surprised: :confused: :mad: :no:
Taille du texte:
Couleur:
Code de sécurité

Les dernières offres d'emploi