8Fermer10
azeLe 22/02/2009 à 03:07
tiens :
<?php
$keys=array_keys($_GET);
$path=$keys[0];

$path = ltrim($path,'/');

if(!is_dir($path))
{
  header('HTTP/1.1 404 Not Found');
  exit;
}

$handle=opendir($path);
while ($file = readdir($handle)) {
  if($file != '.' && $file != '..') {
    if(is_file($path.'/'.$file))
      $filelist[]=$file;
    }
}
closedir($handle);

$filename = $filelist[rand(0,count($filelist)-1)];
$filepath = $path.'/'.$filename;


$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\');
header("location: http://$host$uri/$filepath");

exit;


function getExt($file)
{
  $pos0=strpos($file,'.');
  if($pos0===FALSE)
    return('');
  while(!($pos0===FALSE))
  {
    $pos=$pos0;
    $pos0=strpos($file,'.',$pos+1);
  }
  return (substr($file,$pos+1));
}

function getMime($extension)
{
  static $mime_types=array(
	'gif'=>'image/gif','jpg'=>'image/jpeg','bmp'=>'image/bmp','png'=>'image/png','svg'=>'image/svg+xml',
	'css'=>'text/css','html'=>'text/html','htm'=>'text/html',
	'swf'=>'application/x-shockwave-flash');
  if(array_key_exists($extension,$mime_types))
    return $mime_types[$extension];
  else
    return 'text/plain';
}

?>

tu nommes le script index.php, tu fous ça dans un dossier, genre rand/ sur www.hercouetcorp.com . Dans ce même dossier tu crées un nouveau dossier que t'appelles comme tu veux et tu mets tous les fichiers que tu veux dedans, par exemple le dossier banner/
ensuite t'as qu'à appeller http://www.hercouetcorp.com/rand/?banner et ça choisira un fichier au pif dans le répertoire banner/
du coup tu peux créer autant de dossiers que tu veux dans rand/ pour créer autant de sélection de fichiers que tu veux. évite juste les caractères trop compliqués dans le nom des répertoires. par exemple si ya un point, ça ne marchera pas

bon sinon je pense que le script ne permettra pas de lire n'importe quel répertoire de ton ftp car php a l'air de remplacer les points dans le nom des paramètres de l'url par des underscore

(sinon, pour les gens qui si connaissent, j'en ai fait une version avec un fopen et un fpassthru, je sais pas vraiment si ya une méthode à préférer à l'autre)