Aller au contenu

Sujets conseillés

Posté

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

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

Contributeurs actifs dans ce sujet

Posté

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

Posté

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

Posté

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

Posté

je suis vraiment nul en php (programmation)

variable $rep ok

si c'est le dossier "includes"

je fait

includes $rep

ou variable $includes

lol

Posté
<?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]);
}
}

?>

Posté

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
Posté (modifié)

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
Posté

<?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

Posté
:gueule: tu as oublié la boucle pour faire les include .... relit un peu plus haut j'avais complété le code .... mais laisse le '/' ;)
Posté

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 ????

Posté

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é

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...

Posté

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

Posté
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);

Posté (modifié)

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
Posté

<?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

Veuillez vous connecter pour commenter

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



Connectez-vous maintenant

×
×
  • Créer...