Aller au contenu

includes aléatoires


reg34000

Sujets conseillés

Salut

j'ai eu une idée de script mais j'ai besoin de votre aides pour m'aider à le realiser.

Je souhéterais faire en php un script qui permette de faire des includes aléatoirement.

C'est a dire qu'il va chercher un fichier a inclure au hazard dans un dossier déterminé.

L'idée est que l'on puisse définir le nombre de fichier a inclure

Du style on lui dis inclus au hazard 3 fichiers du dossier XXX

sans inclure 2 fois le meme (quelque soit le nom des fichiers).

Je compte sur vous

Lien vers le commentaire
Partager sur d’autres sites

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

Contributeurs actifs dans ce sujet

voila une idee. Pas testée, ecrite en live.

// 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
$include_aleatoire = array_rand ($fichiers, $nb_aleatoire);
}

Lien vers le commentaire
Partager sur d’autres sites

Salut,

ce que tu cherches à faire peut se réaliser en quelques lignes de codes, mais, le probléme, ne ce situe pas réellement dans cette opération, mais plutot dans le résultat que celle-ci pourrait engendrer.

Au niveau de la sécurité par exemple, ce genre de scripts peut laisser derriere lui des "trous" de sécurité énormes, du meme fait que l'inclusion "a la volée" peut engendrer des bugs (simple et de compatiblité avec le reste du code source).

Je ne sais pas réellement pourquoi tu veux agir ainsi, mais il éxiste, j'en suis persuadé, une alternative "propre" pour faire ce que tu cherche à réaliser.

Je reste dans le coin pour te filer un coup de main si tu en as besoin;

@+ oxyd-x

Lien vers le commentaire
Partager sur d’autres sites

<?php
$rep ="test/";
// 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
$include_aleatoire = array_rand ($fichiers, $nb_aleatoire);
for($i=0;$i<count($include_aleatoire);$i++){
include($fichiers[$i]);
}
}

?>

Lien vers le commentaire
Partager sur d’autres sites

pour le code

<?php

$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

$include_aleatoire = array_rand ($fichiers, $nb_aleatoire);

}

?>

voici le message d'erreur

Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in ................/index.php on line 12
Lien vers le commentaire
Partager sur d’autres sites

essaye de renseigner la valeur de la variable "$nb_aleatoire" avec , par exemple , le nombre de fichier que tu deserais listé ;)

(place cette variable au début du code, à l'endroit ou tu à inserer la varaible $rep="blablabla")

je reste quand meme persuadé que tu devrait te méfier de ce genre de script, surtout si tu ne métrise pas le language php, car, il peut générer des erreurs et des trous de sécurité, MEME SI, au premier ou au second lancement, tout va pour le mieux !

Le débugage d'un script ne se fait pas sur une phase de tests précise, elle est longue, et doit impliqué toutes les probabilitées de mélanges/actions.

Je doute fort que l'inclusion à la volée soit une bonne pratique... la compatiblié, les dépendances, la sécurité, la gestion parent/enfant, ...

Modifié par oxyd-x
Lien vers le commentaire
Partager sur d’autres sites

<?php 
$nb_aleatoire="3";
$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
$include_aleatoire = array_rand ($fichiers, $nb_aleatoire);
}
?>

ca n'affiche plus d emessage d'erreur mais ca affiche rien lol page vide

Lien vers le commentaire
Partager sur d’autres sites

au fait il m'affiche toujours tout dans le meme ordre pas de facon aléatoire ???

quand je fais recharger la page il la charge toujours avec les meme includes et dans le meme ordre :gueule:

Lien vers le commentaire
Partager sur d’autres sites

bah si tu fais des includes aleatoires de scripts php, ceux ci vont:

1) modifier des variables, inclurent d'autres trucs, ... Du coup, il peut y avoir une interactions avec les autres scripts que tu vas inclure (initialisatio de varaible à la mauvaise valuer, etc)

2) il se peut que un des scripts possèdent un trou de secu...

Lien vers le commentaire
Partager sur d’autres sites

oui mais le but c'été de faire des includes de facon aléatoire

si c'es toujours pour les faire de la meme facon je reste avec des page statique et je le fais direct avec la fonction include

<?php include ('02.php'); ?>

<?php include ('01.php'); ?>

<?php include ('03.php'); ?>

Lien vers le commentaire
Partager sur d’autres sites

au fait il m'affiche toujours tout dans le meme ordre pas de facon aléatoire ???

quand je fais recharger la page il la charge toujours avec les meme includes et dans le meme ordre :gueule:

<{POST_SNAPBACK}>

met :

srand ((double) microtime() * 10000000);

avant la lign array_rand

Si tu as peu de fichiers dans include, il se peut que l'aleatoire soit difficile

tu peux aussi faire un shuffle apres le array_rand si tu veux:

shuffle($include_aleatoire);

Lien vers le commentaire
Partager sur d’autres sites

fait au moins le premier: il initialise le generateur de nombre aléatoire (normalement c'est fait automatiquement depuis php 4.2 mais bon)

et tu peux faire le deuxieme: il va te melanger les fichiers extraits ou tu peux le faire sur le rpertoire si tu preferes

l'alea est de toute facon fonction du nombre de fichiers dans ton repertoire. Si tu as une 10aine de fichiers, l'alea va etre faible si tu en tires 3 ;)

Modifié par rportal
Lien vers le commentaire
Partager sur d’autres sites

<?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[$i]);
}
}

?>

je suis vraiment nul mais j'ai pas compris ou les mettre, car il n'y a rien de plus d'aléatoire lol

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



Connectez-vous maintenant

×
×
  • Créer...