php get, случайные записи и кнопка возврата - PullRequest
1 голос
/ 20 марта 2010

На моем сайте есть библиотека, полная игр, наций, игровых сценариев и т. Д.

library.php дается type=___ & id=___

например library.php?type=scenario&id=ABCD001

library.php сохраняет id в переменной сеанса и загружает включение, подходящее для type

Это все работает просто денди. Теперь я хотел предоставить своим пользователям возможность выбора случайного сценария. Для этого я добавил специальный id к логике в lib-scenario.php (включение), так что если задано library.php?type=scenario&id=random, включение знает, что нужно выполнить альтернативный запрос для случайной записи, а не для фактического id

Это также работает просто великолепно ... , если кто-то не нажмет кнопку Random Scenario два раза подряд и решит, что предыдущий случайный сценарий был намного круче, я хочу пойти назад к этому.

Поскольку http-адрес всегда directory/library.php?type=scenario&id=random независимо от того, сколько раз вы нажимаете Random Scenario, как только вы нажмете назад, вы попадете на последнюю страницу с альтернативным адресом, который вы посетили.

Итак, если вы начнете со страницы Home и нажмете Random Scenario 35 раз, затем решите, что 34-й был тем, что вы хотели, и нажмите BACK, вы вернетесь на страницу Home .

Я должен признать, что это не было проблемой, которую я ожидал. Один из моих тестеров был первым, кто захотел сделать резервную копию в потоке случайного сценария, и вот мы здесь.

Как добавить функцию резервного копирования в мой сценарий?

Ответы [ 2 ]

1 голос
/ 20 марта 2010

Вы можете решить эту проблему, перенаправив на канонический URL-адрес для сценария, т.е. последний URL будет сохранен в истории, а не id = случайный URL.

1 голос
/ 20 марта 2010

Сделайте кнопку «Случайный сценарий» просто ссылкой на фактический (но случайный) идентификатор сценария. Вам, вероятно, придется создать это с помощью SQL-запроса, чтобы получить все идентификаторы ваших сценариев.

$result = mysql_query("SELECT id FROM scenarios");
while ($row = mysql_fetch_row($result)) {
    $ids[] = $row[0];
}
$randomid = array_rand($ids);

Кнопка:

<a href="directory/library.php?type=scenario&id=<?php echo $randomid; ?>Random Scenario</a>

Если все идентификаторы вашего сценария являются последовательными числами, вы можете просто использовать это вместо:

$randomid = rand($min, $max);
...