Aller au contenu
reg34000

includes aléatoires

Noter ce sujet :

Recommended Posts

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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);
}

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

rportal je met ou ladresse de mon dossier ou se trouve mes fichier PHP a inclure ?

ok merci a tous les deux (oxyd-x) je compte sur vous lol

Partager ce message


Lien à poster
Partager sur d’autres sites

je suis vraiment nul en php (programmation)

variable $rep ok

si c'est le dossier "includes"

je fait

includes $rep

ou variable $includes

lol

Partager ce message


Lien à poster
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]);
}
}

?>

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites
:gueule: tu as oublié la boucle pour faire les include .... relit un peu plus haut j'avais complété le code .... mais laisse le '/' ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

super genial extra

WAOUWWWWWWWWWWWWWW

trop fort

BINGOOOOOOOOOOO :fete:

:boude: maintenant c'est quoi c'est histoire de truc pas fiable avec des risques de faille enorme ????

Partager ce message


Lien à poster
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:

Partager ce message


Lien à poster
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...

Partager ce message


Lien à poster
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'); ?>

Partager ce message


Lien à poster
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);

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×