php get, enregistrements aléatoires, et le bouton de retour
-
21-09-2019 - |
Question
Mon site dispose d'une bibliothèque de jeux, de nations, des scénarios de jeux, etc.
library.php
reçoit un type=___
& id=___
par exemple library.php?type=scenario&id=ABCD001
library.php
enregistre le id
à une variable de session et charges comprennent un approprié pour le type
Tout cela fonctionne dandy. Maintenant, je voulais donner à mes utilisateurs la possibilité de tirer un scénario aléatoire. Pour ce faire, j'ai ajouté une id
spéciale à la logique au sein lib-scenario.php
(include) de telle sorte que si library.php?type=scenario&id=random
compte tenu de l'inclure sait exécuter une requête alternative pour un enregistrement au hasard plutôt que pour la id
réelle
Cela fonctionne aussi dandy ... à moins que quelqu'un touche le bouton Random Scenario
deux + fois de suite, et décide que le scénario aléatoire précédent était beaucoup plus cool, je veux aller retour pour cela.
Parce que l'adresse http est toujours directory/library.php?type=scenario&id=random
peu importe combien de fois vous cliquez sur Random Scenario
, dès que vous cliquez en arrière, vous serez redirigé vers la dernière page avec une autre adresse que vous avez visité.
Donc, si vous commencez à la page Home
, et appuyez sur Random Scenario
35 fois, décider alors la 34e était un ce que vous vouliez et cliquez BACK
, vous serez mis en arrière sur la page Home
.
Je dois admettre que ce ne fut pas un problème, je l'avais prévu. Un de mes testeurs a été le premier à avoir l'envie de sauvegarder dans le flux de scénario au hasard et nous sommes ici.
Comment puis-je ajouter des fonctionnalités de sauvegarde à mon script?
La solution
Faites le bouton « scénario aléatoire » lien simplement à un identifiant de scénario réel (mais au hasard). Vous aurez sans doute de construire cela avec une requête SQL pour obtenir tous les id de vos scénarios.
$result = mysql_query("SELECT id FROM scenarios");
while ($row = mysql_fetch_row($result)) {
$ids[] = $row[0];
}
$randomid = array_rand($ids);
Bouton:
<a href="directory/library.php?type=scenario&id=<?php echo $randomid; ?>Random Scenario</a>
Si votre identifiant de scénario sont de tous les numéros consécutifs, vous pouvez simplement utiliser ceci:
$randomid = rand($min, $max);
Autres conseils
vous pouvez résoudre ce problème en redirigeant vers l'URL canonique pour le scénario, i.e. .: id = réoriente aléatoires id = A92831 ou tout ce qui a été sélectionné. l'URL finale sera enregistrée dans l'histoire, plutôt que l'id = url aléatoire.