Скрипт, выводящий рандомную строку из файла

Статус
В этой теме нельзя размещать новые ответы.

b7186

Гуру форума
Регистрация
19 Янв 2011
Сообщения
727
Реакции
95
Всем привет. Народ, помогите написать простой скрипт на PHP. Есть текстовый файл, в котором лежат URL по одному в строчку, вида:

Код:
http://site.ru/page1.html
http://site.ru/page2.html
http://site.ru/page3.html
http://site.ru/page4.html

Скрипт должен случайным образом брать одну любую строку из списка и выводить пользователю. Было бы вооще шикарно, если бы пользователю еще писалась кука, цель которой проверить обращался пользватель к скрипту, или нет. Если обращался, то в течении 1 часа ему показываем все тот же URL из списка.

Чувствую, что дело то плевое, а как сделать хз :(
 
вот пример :
PHP:
<?php
$file_handle = fopen("pagelist.txt", "r"); // откроем файл
$rand = array(); // создаем пустой массив
while (!feof($file_handle)) { 
$line = fgets($file_handle);
$line=str_replace("\n","",$line);
$rand[] = $line;
}
fclose($file_handle);
echo $rand[rand(0,count($rand))];
?>
p.s : куками не знаю как работать
 
PHP:
$file = file('index.php');
if (is_array($file) && count($file) > 0) {
    echo $file[mt_rand(0, count($file))];
}
 
PHP:
if(!is_file('url.txt') or !$data = file_get_contents('url.txt')) exit('ERROR:1');
if(!$data = preg_split("/[\s]+/", $data, -1, PREG_SPLIT_NO_EMPTY)) exit('ERROR:2');
// или так. Но в файле не должно быть пустых строк и в конце файла не должно быть переноса строк. Лучше то что выше
// if(!is_file('url.txt') or !$data = file('url.txt')) exit('ERROR:1');
// $data = array_map('trim',  $data);

$key = isset($_COOKIE['test_url']) ? (int) $_COOKIE['test_url'] : false;
if($key !== false and array_key_exists($key, $data)) exit($data[$key]);
$key = array_rand($data);
// можно было бы писать в cookie URL, но подумав, я решил что так лучше.
setcookie('test_url', $key, time()+3600);
exit($data[$key]);
 
Последнее редактирование:
Полный вариант.
PHP:
$urlfromfile = file('index.php');
if(is_array($urlfromfile) === true) {
    $countstr = count($urlfromfile);
    if ($countstr > 0) {
        if (empty($_COOKIE['urlfromfile']) === false && strlen($_COOKIE['urlfromfile']) > 0) {
            for ($idx = 0; $idx < $countstr; $idx++) {
                if ($_COOKIE['urlfromfile'] === md5($idx) . sha1($idx)) {
                    echo $urlfromfile[$idx];
                }
            }
            unset($idx);
        } else {
            $curenturl = mt_rand(0, $countstr);
            setcookie('urlfromfile', md5($curenturl) . sha1($curenturl), time() + 3600, '/', '.' . str_ireplace('www.', '', $_SERVER['SERVER_NAME']), null, true);
            echo $urlfromfile[$curenturl];
            unset($curenturl);
        }
    }
    unset($countstr);
}
unset($urlfromfile);
 
Последнее редактирование:
Всем спасибо. Еще вот такой код посоветовали:
Код:
<?php
  if (!isset($_COOKIE['url']) || empty($_COOKIE['url']))
  {
    $txt = file('1.txt'); 
    $url = $txt[array_rand($txt)]; 
    unset($txt);
    setcookie('url', $url, time() + 60 * 60);    
    echo $url;      
  }
  else
  {
    echo $_COOKIE['url'];
  }
?>
Пожалуй на нем остановлюсь.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху