подгрузить случайный файл посредством пхп

Тема в разделе "PHP", создана пользователем ramses21, 21 янв 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ramses21

    ramses21 Постоялец

    Регистр.:
    20 июл 2008
    Сообщения:
    107
    Симпатии:
    16
    Захотел вот я сделать на странице модуль, который будет подгружать случайный текст при каждой загрузке страницы.
    если обычным способом мы подгружаем данные из указанного нами файла вот так

    PHP:
    <?include ("inc/file.inc");?>
    хотелось бы узнать как можно подгрузить данные из случайного файла из директории inc/

    Заранее благодарен
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    Получаем случайный файл

    Код:
    $dir = './inc';
     $file_arr = array();
     if ($dh = opendir($dir)) {
      while (($file = readdir($dh)) !== false) {
       if(!is_dir($dir.'/'.$file) )$file_arr[]= $dir.'/'.$file;
      }
      closedir($dh);
     }else{
      
      echo 'не можем открыть категорию.';
     }
    
      $random_file = $file_arr[array_rand($file_arr)];
    
     
    ramses21 нравится это.
  3. ramses21

    ramses21 Постоялец

    Регистр.:
    20 июл 2008
    Сообщения:
    107
    Симпатии:
    16
    что-то у меня совсем не получается. как мне файлы назвать в директории инк?
    я пронумеровал их без расширения тхт.

    выводит вот такую строку при запросе:
    $random_file = $file_arr[array_rand($file_arr)];
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    эээ разрешение файлов вообще не влияет на работу. Может ты оставил $random_file = $file_arr[array_rand($file_arr)]; за пределами тегов php <? ... ?>
    Если надо, могу прокомментировать каждый оператор.
     
  5. ramses21

    ramses21 Постоялец

    Регистр.:
    20 июл 2008
    Сообщения:
    107
    Симпатии:
    16
    ага, оставил :ah:
    тока я сейчас сделал чтоб в теге пхп все было, но теперь получается пустая страница.
    в подгружаемых файлах обычный текст.
     
  6. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    Я надеюсь ты сделал include или file_get_contents?
    Ибо $random_file будет содержать './inc/случайый_файл'
     
  7. ramses21

    ramses21 Постоялец

    Регистр.:
    20 июл 2008
    Сообщения:
    107
    Симпатии:
    16
    если можно...
    кроме инклюда и эхо больше ничего не знаю.

    это конечно же я тоже не понял :ah:
    куда это прописать надо? :thenks:

    Добавлено через 10 минут
    все нормально, все ок.
    тему можно закрывать. разобрался благодаря советам KillDead
     
  8. BDS

    BDS Читатель

    Заблокирован
    Регистр.:
    7 янв 2009
    Сообщения:
    42
    Симпатии:
    2
    а так не проще?..
    PHP:
    $f glob'inc/*' );

    echo 
    $fmt_rand0, ( sizeof($f) - ) ) ];
     
    ramses21 нравится это.
  9. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    PHP:
    $dir './inc'// путь до папки
     
    $file_arr = array(); // массив, куда будут попадать все файлы
     
    if ($dh opendir($dir)) { // открываем папку, если не удалось переходим по условию else 
      
    while (($file readdir($dh)) !== false) { // перебираем всё, что есть в открытой папке
       
    if(!is_dir($dir.'/'.$file) )// если это не папка (среди файлов будут gfgrb ".", "..")
    $file_arr[]= $dir.'/'.$file;  //помещаем в массив путь $dir и имя файла $file
      
    }
      
    closedir($dh);// закрываем
     
    }else{
     
      echo 
    'не можем открыть категорию.';
     }
    // теперь в массиве $file_arr все файлы с путями.  array_rand вернёт случайный индекс массива
      
    $random_file $file_arr[array_rand($file_arr)];
    // $random_file содержит случайный файл , вместе с относительным путём
    echo file_get_contents($random_file);// выведет содержание файла
     
  10. BDS

    BDS Читатель

    Заблокирован
    Регистр.:
    7 янв 2009
    Сообщения:
    42
    Симпатии:
    2
    лана.. тогда и я целиком.. ))
    PHP:
    $root  $_SERVER['DOCUMENT_ROOT'] . '/inc/';

    if( 
    false !== ($f glob$root '*.*' )) ){

    $rf $fmt_rand0, ( sizeof($f) - ) ) ];

    echo 
    file_get_contents$rf );

    return;
    }
    echo 
    'нет никто';
    думаю заработает.. ))
     
Статус темы:
Закрыта.