Я пытаюсь сгенерировать случайное число (от 1 до 151), чтобы открыть страницу на основе случайно сгенерированного идентификатора. Проблема здесь связана с совместимостью браузера, поскольку предполагаемая функциональность работает в Edge, но не в Chrome или FireFox.
pokedex.php:
<form action='randomPokemon.php' >
<button type="submit" class="toolsBtn">Random</button>
</form>
случайный покемон.php:
<?php
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'pokedex.php?pid=';
$randomid = rand(1, 151);
header("HTTP/1.1 303 See Other");
header("Location: http://$host$uri/$extra" . mt_rand(1, 151));
unset($randomid);
exit;
?>
Демонстрация в реальном времени по адресу: http://fraserprovan.co.uk/projects/pokedex/pokedex.php
Я понятия не имею, почему это работает в Microsoft Edge, но не в других браузерах. В хроме каждый раз открывается одна и та же страница, как будто переменная $randomid не меняется. Будем очень признательны за любые советы или ссылки на другие ресурсы.
ОБНОВЛЕНИЕ: решил сделать это на Javascript вместо использования следующей функции. Спасибо за предложения.
function randomPokemon(){
var randomNum = Math.floor(Math.random() * 151) + 1;
document.location.replace('pokedex.php?pid=' + randomNum);
}
randomPokemon.php
URL-адрес меняется наpokedex.php
, как и ожидалось. Это происходит, даже если я вставляю URL-адрес сrandomPokemon.php
. - person Mr Glass   schedule 24.06.2018Random
, но я всегда получаю #39, если я захожу на страницу из консоли, используяlocation.href = "http://fraserprovan.co.uk/projects/pokedex/randomPokemon.php"
. - person Mr Glass   schedule 24.06.2018header('Expires: Sun, 01 Jan 2014 00:00:00 GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', FALSE); header('Pragma: no-cache');
? - person SirPilan   schedule 24.06.2018