Pergunta

Meu site tem uma biblioteca cheia de jogos, nações, cenários de jogo etc.

library.php é dado a type=___ & id=___

por exemplo library.php?type=scenario&id=ABCD001

library.php salva o id para uma variável de sessão e carrega um incluir apropriado para o type

Tudo isso funciona apenas dândi. Agora, eu queria dar aos meus usuários a opção de puxar um cenário aleatório. Para fazer isso, adicionei um especial id para a lógica dentro lib-scenario.php (a inclusão) que se for dado library.php?type=scenario&id=random A inclusão sabe executar uma consulta alternativa para um registro aleatório, e não para o real id

Isso também funciona apenas dândi ... a não ser que alguém atinge o Random Scenario botão duas vezes seguidas e decide que O cenário aleatório anterior era muito mais legal, eu quero ir de volta para isso.

Porque o endereço HTTP é sempre directory/library.php?type=scenario&id=random Não importa quantas vezes você clique Random Scenario, assim que você clicar de volta, você será levado para a última página com um endereço alternativo que visitou.

Então, se você começar no Home página, e acertar Random Scenario 35 vezes, então decidir o 34º era o que você queria e clique BACK, você será colocado de volta para o Home página.

Devo admitir que isso não era um problema que eu havia previsto. Um dos meus testadores foi o primeiro a ter o desejo de fazer backup no fluxo de cenário aleatório e aqui estamos.

Como posso adicionar funcionalidade de backup ao meu script?

Foi útil?

Solução

Faça o botão 'Cenário aleatório' simplesmente vincular a um ID de cenário real (mas aleatório). Você provavelmente terá que construir isso com uma consulta SQL para obter todos os IDs de seus cenários.

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

Botão:

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

Se o seu cenário IDs forem todos números consecutivos, você pode simplesmente usar isso:

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

Outras dicas

Você pode resolver isso redirecionando para o URL canônico para o cenário, ou seja: id = redirecionamentos aleatórios para ID = A92831 ou o que quer que tenha sido selecionado. O URL final será armazenado na história, em vez do ID = URL aleatório.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top