Random image par dates

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Random image par dates

Re: Random image par dates

par moogli » 17 déc. 2010, 23:11

on ne connaitra la réponse que lorsqu'il répondra .... :)

@+

Re: Random image par dates

par xTG » 17 déc. 2010, 13:30

Je suis d'accord avec toi, pour cela que je m'intéressais à ta solution. ^^
J'avais juste répondu au problème sous cet angle : "une image différente chaque jour"

Sinon @auteur du sujet :
Après relecture de ta demande en fait il demande plutôt une image fixe pour tel jour du mois non ?
Donc un tableau contenant l'url (ou le nom) de 31 images dont le résultat serait tiré de par l'index en corrélation avec la date du jour ne répondrait-il pas tout simplement au problème ?

Re: Random image par dates

par epommate2 » 17 déc. 2010, 09:26

Je n'avais pas vu ta réponse avec l'algo sur la date ;-)

Je pense que dans ce cas, les images vont se succéder dans le même ordre, avec une petite variante chaque début de mois et chaque début d'année.
Surtout s'il y a moins de 30 images ;-)
for($i = 0; $i<50; $i++){
$dateDuJour = date("Ymd",strtotime("+ $i day"));
$numero_image = $dateDuJour % 15;
echo " $numero_image";
}

Code : Tout sélectionner

2 3 4 5 6 7 8 9 10 11 12 13 14 0 1 6 7 8 9 10 11 12 13 14 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 1 2 3 4 5 6 1 2 3 4
Pas très aléatoire non ?

Re: Random image par dates

par xTG » 17 déc. 2010, 08:48

Bon dérivons un petit peu car ton point de vue m'intéresse. :o
Je comprends tout à fait qu'un simple algo comme le mien fasse une répétition de certaines images puisque le nombre d'image ne sera pas accordé au nombre de jour dans le mois.
Donc si je comprends bien ton but est de donner autant de poids à chaque image ?

Re: Random image par dates

par epommate2 » 17 déc. 2010, 08:44

Oui, mais je n'ai pas trouvé plus simple pour garantir la répartition correcte des nombres ....

La complexité vient de l'utilisation d'une sortie de MD5 comme un entier qui ne peut se faire qu'avec BC et comme
BC ne lis pas l'hexadécimal, il faut faire la transformation à la main.

Si on n'a pas besoin de l'aléa, c'est plus simple :
function getDayNumber($max_number){
	return strtotime(date("Y-m-d")) % $max_number;
}
Mais les images vont revenir avec la même périodicité ...

On peut compliquer un peu, mais je pense qu'il faut utilisé un fonction de hash pour avoir un bon aléa.
Je ne suis pas sûr que si on prend les derniers numéros du MD5, on ne va pas introduire un biais dans le tirage...

Mais je serais heureux de connaitre une technique plus simple !

(bon, évidemment, dans ce cas, ca permet d'économiser un champs dans une base de données, mais il y a des cas ou c'est vraiment nécessaire, exemple : tirer au sort un avatar a partir d'un email)

Re: Random image par dates

par xTG » 17 déc. 2010, 08:29

Juste un petit commentaire : je suis effaré de voir si compliqué pour juste obtenir un numéro unique à partir d'une date. :/

Re: Random image par dates

par epommate2 » 17 déc. 2010, 08:16

Voici une fonction qui affiche toujours le même chiffre en fonction de la date et d'un nombre d'image :
function getDayNumber($max_number){
	$hex = md5(date("Y-m-d"));
	$dec=0;
	$len = strlen($hex);
	for ($i = 1; $i <= $len; $i++) {
		$dec = bcadd($dec, bcmul(strval(hexdec($hex[$i - 1])), bcpow('16', strval($len - $i))));
	}
	return 	bcmod($dec,$max_number);;
}

Re: Random image par dates

par xTG » 17 déc. 2010, 08:03

Des images numérotées par exemple :
image_1.jpg, ...., image_5.jpg
Ensuite un petit traitement pour exploiter la date :
$dateDuJour = date("Ymd");
Nous obtenons donc un entier avec lequel nous pouvons travailler :
$numero_image = $dateDuJour % NOMBRE_MAX_IMG;
echo "image_$numero_image";
Et avec un modulo tu auras donc une image différente pour chaque jour.

Code à tester parce que je ne suis pas sûr du calcul vu que date renvoi une chaîne de caractères... Au pire il suffit de la convertir en entier.

Re: Random image par dates

par moogli » 17 déc. 2010, 02:21

si l'image est précise pour une date donnée je te conseil une table de sgbd (tu peut utiliser sqlite si tu veut pas utiliser un autre serveur).

Après si ce que tu souhaite c'est que l'image soit aléatoire mais changé à des date fixe, autant utiliser un fichier avec le nom de l'image et du prochain changement.

@+

Random image par dates

par le_fermier » 17 déc. 2010, 01:57

Salut à tous,
Comment pourrais-je faire en sorte qu'une image header de mon site change automatiquement selon des dates précises à l'avance?
genre random image mais lié a des dates et non pas au chargement de la page
Merci