Aller au contenu

Sujets conseillés

Posté

:gueule: ARRTGGG oups desole:

kes fichiers à inclure sont dans la variable $include_aleatoire et pas $fichier:

include($include_aleatoire[$i]);

  • Réponses 82
  • Créé
  • Dernière réponse

Contributeurs actifs dans ce sujet

Posté

pourquoi dans ta premiere version il affiche bien dans le desordre, mais pourquoi c'est toujours dans le meme ordre ?

c'est un desordre aménagé lol

parcontre je sais pas ou mettre tes nouvelles ligne pour le rendre aléatoire totalement

Posté

:blink: voila

<?php 
$nb_aleatoire="4";
$rep ="includes/";
// on liste les fichiers du repertoire
if ($handle = opendir($rep)) {
$fichiers = array();
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$fichiers[] = $rep . $file;
}
}
closedir($handle);
// On crée le tableau contenant les fichiers à inclure
srand ((double) microtime() * 10000000);
$include_aleatoire = array_rand ($fichiers, $nb_aleatoire);
shuffle($include_aleatoire);
for($i=0;$i<count($include_aleatoire);$i++){
include($include_aleatoire[$i]);
}
}

?>

Posté
pourquoi dans ta premiere version il affiche bien dans le desordre, mais pourquoi c'est toujours dans le meme ordre ?

<{POST_SNAPBACK}>

parcequ'il prend les fichiers dans l'ordre de date de modif je crois

Posté

alors cette fois j'ai des message d'erreur

Warning: main(4): failed to open stream: No such file or directory in ...../index.php on line 18

Warning: main(): Failed opening '4' for inclusion (include_path='.:/home/temporaire/upload') in ....index.php on line 18

Posté

voila un mode debug ...

essaye de voir ce qui ne vas pas ;)

<?php 
$nb_aleatoire="4";
$rep ="includes/";
// on liste les fichiers du repertoire
if ($handle = opendir($rep)) {
$fichiers = array();
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$fichiers[] = $rep . $file;
echo $rep . $file.'<br>';
}
}
closedir($handle);
echo '<hr>';
// On crée le tableau contenant les fichiers à inclure
srand ((double) microtime() * 10000000);
$include_aleatoire = array_rand ($fichiers, $nb_aleatoire);
shuffle($include_aleatoire);
for($i=0;$i<count($include_aleatoire);$i++){
echo $include_aleatoire[$i].'<br>';
include($include_aleatoire[$i]);
}
}

?>

Posté (modifié)

maintenant il m'affiche includes/nom du fichier.php

+ message d'erreur

includes/dgd.php

includes/bkhjhk.php

includes/ùlùmm.php

includes/ù.php

includes/nnjkjhk.php

includes/fghg.php

--------------------------------------------------------------------------------

3

Warning: main(3): failed to open stream: No such file or directory in /indexphp on line 21

Warning: main(): Failed opening '3' for inclusion (include_path='.:/home/temporaire/upload') in /index.php on line 21

Modifié par reg34000
Posté

ok, petite erreur de ma part ;)

<?php 
$nb_aleatoire="4";
$rep ="includes/";
// on liste les fichiers du repertoire
if ($handle = opendir($rep)) {
$fichiers = array();
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$fichiers[] = $rep . $file;
}
}
closedir($handle);
// On crée le tableau contenant les fichiers à inclure
srand ((double) microtime() * 10000000);
$include_aleatoire = array_rand ($fichiers, $nb_aleatoire);
shuffle($include_aleatoire);
for($i=0;$i<count($include_aleatoire);$i++){
include($fichiers[$include_aleatoire[$i]]);
}
}

?>

cela devrait etre bon

Posté

nikel trop fort

:fete::fete::fete:

tu bosse dans l'info c'est ton job t'es programmateur

au fait c'est quoi les risque d'un tel script on peut faire quoi a mon site ?

Posté (modifié)

au fait c'est quoi les risque d'un tel script on peut faire quoi a mon site ?

tu parles de failles ?? de sécurité ???

il peu se passer quoi

Modifié par reg34000
Posté

On pourrait mais ça dépend des fichiers qui vont être inclus ;)

J'ai pas vraiment lu le code, mais normalement je ne vois pas trop où il pourrait y avoir des failles. Et ce n'est pas vraiment ça le problème, mais c'est que dans le cas où il y en aurait elle seraient plus dures à trouver par les devellopeurs (par les crackers aussi mais bon, possibles quand même).

Mais sinon, je vois pas vraiment l'utilité d'un tel script m'enfin ...

Posté

Salut rportal

j'espere que tu a bien dormis lol

car moi j'ai reflechit a ton script toute la nuit. :fou:

Et donc j'aimerais savoir s'il est possible de remplacer l'affichage aléatoire des includes a chaque chargempent par un affichage aléatoire des includes par jour (si on charge la page 10 fois le meme jour c'est les memes includes qui se font, alors que si on la charge le lendemain c'est d'autres qui se font).

L'idée serait de se servir de la date 18/08/2004 pour faire 10+08+04= 22

se servir de ce chiffre (fixe toute la journée) pour faire l'affichage des includes

et le lendemain 19/08/2004 -> 19+08+04 = 23

ce qui implique un nouvel affichage aléatoire ???

C'est possible ??? :D

Posté

tout est possible. Pour cela il faut que tu crées un fichier de cache. Le plus simple est de se baser sur le nom du fichier; Je te propose une version non optimale (elle ne supprime pas les fichiers des jours précédents) :

$nb_aleatoire="4";
$rep ="includes/";

// Répertoire où l'on met les fichiers de cache
$rep_cache = 'cache/';
//On crée le nom du fichier du jour
$fichier_cache = $rep_cache . date("Ymd") . 'php';                          

// Si le n'existe pas on le crée puis on l'inclu.

if(!file_exists($fichier_cache)) {
$txt_fichier = "<?php\n";

// on liste les fichiers du repertoire
if ($handle = opendir($rep)) {
$fichiers = array();
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$fichiers[] = $rep . $file;
}
}
closedir($handle);
// On crée le tableau contenant les fichiers à inclure
srand ((double) microtime() * 10000000);
$include_aleatoire = array_rand ($fichiers, $nb_aleatoire);
shuffle($include_aleatoire);
for($i=0;$i<count($include_aleatoire);$i++){
$txt_fichier .= "include('".$fichiers[$include_aleatoire[$i]]."');\n";
}
}
$txt_fichier .= "?>";
$f=fopen($fichier_cache,'w');
fwrite($f,$txt_fichier);
fclose($f)=;
}

include($fichier_cache);

comme d'habitude: non testé

Posté

Salut

tout est possible. Pour cela il faut que tu crées un fichier de cache. Le plus simple est de se baser sur le nom du fichier; Je te propose une version non optimale (elle ne supprime pas les fichiers des jours précédents) :

c'est quoi un fichier de cache ????

Posté

C'est le résultat d'un script que tu mets dans un fichier pendant un certain temps et cela pour éviter de lancer ton script trop souvent.

En gros pour les scripts qui consomment beaucoup de ressources et dont les données ne varient pas beaucoup, il n'est pas nécessaire de générer le résultat à chaque fois mais tous les X heures ou jours. Dans ton cas tu ne veux pas mettre à jour la liste des includes à chaque visite mais une fois par jour, donc tu génères une seule fois par jour la liste des include et tu l'as met dans un fichier que l'on peut appeé un cache. C'est ce fichier qui est appelé au lieu du script (consommateur de ressources).

Posté

Ok

Mais l'idée serait de se servir de la date 18/08/2004 pour faire 10+08+04= 22

se servir de ce chiffre (fixe toute la journée) pour faire l'affichage des includes

et le lendemain 19/08/2004 -> 19+08+04 = 23

ce qui implique un nouvel affichage aléatoire ???

c'est bien cela sauf que plutot que de refaire le calcul il stoke le 22 ou le 23 dans un fichier

Mais si, le script prend la date comme base de calcul il peut faire 10 fois le calcul dans la journée il trouvera toujours le meme resultat le 18 aout 2004 tous les calcul donneront 10+08+04= 22

donc c'est pas grave s'il fait le calcul a chaque affichage puisqu'il trouve toujours le meme resulta il affiche donc toujours la meme chose

ou c'est plus compliqué que cela ????

ou il y a vraiment un intéret particulier a faire le cache

Posté

l'intérêt d'utiliser le cache et de ne pas se casser la tête à trouver une formule mathématiques pour tirer tes includes ;)

La tu as une génération aléatoire une seule fois par jour. Ce n'est pas ce que tu voulais?

Posté

si mais je me disait que je pouvait mettre le fichier qui contient ce script dans plusieur dossiers

et que pour chaque dossier (basename(dirname($_SERVER["PHP_SELF"]));

) + le jour j'avais une valeur

du style le script le 18/08/2004 dans le dossier abcd

donne 18+08+04 +1+2+3+4 (si a=1, b=2, c=3...)

20+9 =29

d'ou une mise en page

alors que si je met le meme fichier dans le dossier bcde

donne 18+08+04 +2+3+4+5 (si b=2, c=3, d=4...)

20+14 = 34

avec les meme fichiers mais qui se trouve dans un autre dossier j'obtien une autre mise en page

Posté

est ce que de refaire le calcul a chaque fois ca engendre quoi au niveau du serveur plus de consommation de bande passande, hits ...ou rien

Posté
est ce que de refaire le calcul a chaque fois ca engendre quoi au niveau du serveur plus de consommation de bande passande, hits ...ou rien

<{POST_SNAPBACK}>

Ca change que tu es obligé de trouver une fonction mathématiques pour faire le tirage... Perso je ne me lancerais pas là dedans, c'est se compliquer la vie pour rien.

Posté

donc je fais quoi pour combiner le jour + le nom du dossier qui contient le script basename(dirname($_SERVER["PHP_SELF"]));

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant

×
×
  • Créer...