Как создать систему ротационного перенаправления PHP?

Допустим, есть 3 ссылки:

Как бы я пошел о создании системы перенаправления на основе ротации?

Вот как это будет работать:

  • Пользователь открывает http://example.com а затем перенаправляется на http://example.com/1

  • URL http://example.com/1 (то, на что перенаправляется пользователь, сохраняется в текстовом файле с URL-адресом в качестве значения текстового файла)

  • Когда другой пользователь посещает http://example.comвместо того, чтобы быть перенаправленным на http://example.com/1, он будет перенаправлен на http://example.com/2. Код должен знать, чтобы перенаправить на http://example.com/2 вместо / 1, поскольку / 1 хранится в текстовом файле. После перенаправления пользователя значение текстового файла изменяется с … / 1 ​​на … / 2.

  • То же самое происходит, когда следующий пользователь посещает, но перенаправляется на … / 3.

  • Четвертый пользователь перенаправляется на … / 1

  • И так далее

    <?php
    $link[0] = array('link' => 'http://example.com/1', 'percent' => 33);
    $link[1] = array('link' => 'http://example.com/2', 'percent' => 33);
    $link[2] = array('link' => 'http://example.com/3', 'percent' => 33);
    
    $percent_arr = array();
    foreach($link as $k => $_l) {
    $percent_arr = array_merge($percent_arr, array_fill(0, $_l['percent'], $k));
    }
    
    $random_key = $percent_arr[mt_rand(0,count($percent_arr)-1)];
    $redirectlink = $link[$random_key]['link'];
    
    ?>
    
    <a href="<?php $redirectlink ?>">Click to redirect</a>
    

В настоящее время я использую этот код, но он не предоставляет мне то, что нужно.

0

Решение

Если вы используете базу данных со своим сценарием, я бы рекомендовал использовать временные метки:

  • Вы создаете таблицу с 3 столбцами, id siteurl lastvisit,

  • Создайте запрос, который получит сайт, который был посещен давным-давно.

  • Когда пользователь заходит на ваш сайт, он перенаправляется туда, где он принадлежит. Временная метка сайта обновляется.

Если у вас нет базы данных, просто используйте .txt.

0

Другие решения

Если я правильно понимаю ваш текст, вам не нужна взвешенная маршрутизация, поэтому

просто сохраните индекс следующего маршрута в вашем текстовом файле и вращайте его при каждом вызове.

Читать файл:

$link[0] = array('link' => 'http://example.com/1');
$link[1] = array('link' => 'http://example.com/2');
$link[2] = array('link' => 'http://example.com/3');

$next = intval(file_get_contents('next.txt')); // $next -> 0
$redirectTo = $link[$next];

Теперь поверните и запишите файл:

$next = ($next === 2) ? 0 : next +1;
file_put_contents('next.txt', $next);

//redirect ...
0

По вопросам рекламы [email protected]