<?php
|
/*---------------------------------------------------------------*/
|
/*
|
Titre : Photo du jour choisi de manière aléatoire à partir d'un répertoire
|
|
URL : https://phpsources.net/code_s.php?id=124
|
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 />';
|
}
|
|
?>
|
|
KOogar
23 Aout 2007 à 14:38voila 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 );
PatrickDLS
23 Aout 2007 à 14:02Alors qui peut m'aider à modiier le script :
quand le jour change, il
PatrickDLS
28 Juil 2007 à 17:18Merci, 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.
Superouioui
27 Juil 2007 à 10:59Je 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.
KOogar
27 Juil 2007 à 07:38"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.
PatrickDLS
26 Juil 2007 à 23:07Ca 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
23 Juil 2007 à 17:54le second jour de quoi ? as-tu bien mis ton fichier txt en chmod 777 sur ton serveur ?
PatrickDLS
23 Juil 2007 à 08:16ET 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
PatrickDLS
22 Juil 2007 à 10:40Ca 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
KOogar
16 Juin 2007 à 17:01Bien vu ;-)
J'ai modifié le script. Merci
Superouioui
08 Juin 2007 à 01:36Merci 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.
Laurent
21 Déc 2005 à 14:00je reviens sur le site pour dire que ce calendrier est carrement génial!!
Merchi merchi