Вопрос

Тема в разделе "PHP", создана пользователем Fars, 25 июн 2011.

Модераторы: latteo
  1. Fars

    Fars

    Регистр.:
    26 июн 2009
    Сообщения:
    347
    Симпатии:
    32
    Есть код, выводящий рандомно строки из тхт файла:
    <?php
    $textfile = "http://www.site.ru/phrase.txt";
    $quote = rand(0, sizeof($quotes)-1);
    echo $quotes[$quote];
    }else{
    echo ("");
    }
    ?>

    Код будет стоять на ВП.

    Как сделать, чтобы вместо "www.site.ru" скрипт сам ставил нужную домашнюю директорию сайта?
     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    А смысл то какой? :confused: Пропишите один раз руками нужный адрес и пользуйте его... Другое дело если вы хотите один раз вытянуть текст со стороннего сайта на свой (например если сайт в локалке а инфа динамично меняется через определённый промежуток времени как то праздники), а потом информацию вытягивать уже из своего локального файла...
     
  3. dixi

    dixi

    Регистр.:
    15 июн 2011
    Сообщения:
    199
    Симпатии:
    51
    а если попробовать без указания домена а просто:

    <?php
    $textfile = "/phrase.txt";
    $quote = rand(0, sizeof($quotes)-1);
    echo $quotes[$quote];
    }else{
    echo ("");
    }
    ?>
     
  4. Fars

    Fars

    Регистр.:
    26 июн 2009
    Сообщения:
    347
    Симпатии:
    32
    dixi, так не работает. нужен полный урл к файлу.

    dino, отличное решение, как я сразу не догадался.. а по теме есть варианты?
     
  5. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    вот так но должно быть еще начало всей этой конструкции вы его п видимому не выложили
    PHP:
    <?php
     $textfile 
    $_SERVER['DOCUMENT_ROOT']."/phrase.txt"
     
    $quote rand(0sizeof($quotes)-1);
     echo 
    $quotes[$quote]; 
     }else{
     echo (
    ""); 
     }
     
    ?>
     
    Fars нравится это.
  6. dixi

    dixi

    Регистр.:
    15 июн 2011
    Сообщения:
    199
    Симпатии:
    51
    кажется нашлось

    http://www.londatiga.net/it/how-to-define-global-absolute-path-in-php/
     
  7. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Ну например так я реализовал вытягивание с башорга страницы со случайными фразами для локальной сетки, работающей через проксю
    Для начала создаёшь файл под названием time.txt здесь будет храниться время последнего скачивания инфы со стороннего сайта
    bash.txt - тут будет храниться инфа стянутая со стороннего сайта
    файлам присваиваешь права 777 для возможности их перезаписи
    исполняемый файл, назовем например bash.php, выглядит следующим образом:
    PHP:
    $fileTimeName="http://адрес_твоего_сервера/bash_random_panel/time.txt";
    $timeRead=fopen("$fileTimeName""r");  
    $lastTime=fread($timeReadfilesize("$fileTimeName"));//вычитываем время последнего обновления
    fclose($timeRead);
    if ((
    $lastTime+7200)< time()){ //если времени прошло больше чем установленный промежуток то скачиваем новую инфу со стороннего сайта
    $proxy "10.3.102.165"//адрес локального прокси сервера с которого есть доступ в интернет
    $port 8080// порт прокси сервера
    $url "http://bash.org.ru/random"// адрес стороннего сайта
    $fp = @fsockopen($proxy$port$errno$errstr10);
    @
    fwrite($fp"GET $url HTTP/1.0\r\nHost: $proxy\r\n\r\n");//выдираем новую инфу
    $opens '';
    while(!@
    feof($fp)){
      
    $opens .= @fgets($fp100);
    }
    fclose($fp);

    // разбиваем заголовки и body
    $exp explode"\r\n\r\n"$opens);
    if ( isset( 
    $exp[1] ) )
    {
      
    $opens $exp[1];
    }
    // убираем из полученного файла все лишнее, оставляя только то что нужно
    $quotes = ('#<div>(.*)</div>#ims');
    preg_match_all($quotes$opens$outs);
    $fileBashName"http://адрес_твоего_сервера/bash_random_panel/bash.txt";
    for(
    $i 0$i count($outs[1]); $i++) {

    $bash $outs[1][$i];

    //---------------------
    $hdl=fopen($fileBashName"w");
    fwrite($hdl$bash); //сохраняем отредактированный  текст в нужный файл
    fclose($hdl);
    //-------------------
        
    }
    $fileTimeName="http://адрес_твоего_сервера/bash_random_panel/time.txt";
    $time=time();
    $timeWrite=fopen("$fileTimeName""w");
    fwrite($timeWrite$time); //обновляем в файле время последнего обновления информации
    fclose($timeWrite);
    }
    //Дальше выдаем случайную фразу из локального файла
    $fileBashName"http://адрес_твоего_сервера/bash_random_panel/bash.txt";
    $fsize=filesize($fileBashName);
    if(!
    $fsize){die('Ошибка!!!');}
    $debfile=fopen($fileBashName"rt");
    $text=fread($debfile,$fsize);
    $count preg_match_all('@[^<div>(.*)<script(.*)</div>]<div>(.*)</div>@',$text,$matches);
    echo 
    $matches[0][rand(0,$count-1)];//собсно, выборка цитаты.
    fclose($debfile);
    Надеюсь из этого ты выберешь все что тебе нужно...
    Ногами прошу меня крепко не пинать код был написан на заре моего "творчества" :) Кое что я бы сейчас поменял, но харит жутко:D тем более что все работает...
     
  8. Fars

    Fars

    Регистр.:
    26 июн 2009
    Сообщения:
    347
    Симпатии:
    32
    Нет, код полностью рабочий. Отлично справляется с дерганием фраз.:ay:
    А как его доработать, чтобы он из указанной папки наугад дергал картинки?

    dino, чего именно делает твой скрипт? может найдется ему применение. Тут ветка php для начинающих, комментировать каждую строчку придется, чтобы польовать можно было.
     
  9. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Скрипт раз в два часа парсит с башорга страницу с рандомными цитатами, чистит все лишнее и ложит в текстовый документ на локальном сервере. Все остальное время выдает на экран, из сохраненного на локальном сервере файла, случайным образом выбранную цитату...
     
  10. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    PHP:
    <?php
    $handle 
    opendir($_SERVER['DOCUMENT_ROOT']."/images/");
    while(
    $file readdir($handle))
    {
      if (
    $file != '.' && $file != '..')
      {
        
    $filename[$i] = $file
        
    $i++;
      }
    }
    shuffle($filename);
    if(isset(
    $filename[0])) $img $filename[0]; //в $img имя случайной картинки 
    примерно так
     
    Fars нравится это.