[RESOLU] Page aléatoire

Petit nouveau ! | 3 Messages

19 avr. 2021, 10:35

Bonjour.
Je ne connais pas grand chose au développement.
Avec mes élèves, dans le cadre d'un projet, on cherche à afficher une vidéo aléatoire grâce à un qrcode.
J'ai récupéré ce code sur internet :

Code : Tout sélectionner

<?php $sites = array( "https://.../video001.mp4", "https://.../video002.mp4", "https://.../video003.mp4", "https://.../video004.mp4", "https://.../video005.mp4", "https://.../video006.mp4", "https://.../video007.mp4" ); $minimum = 0; $maximum = count($sites); $nb = rand($minimum, $maximum); header('Location: '.$sites[$nb]); ?>

Je rencontre un problème :

Lorsqu'on ouvre la page, ça mène toujours à la même vidéo. La fonction "aléatoire" ne fonctionne pas apparemment.

Merci d'avance pour votre aide.

Bonne nuit.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 avr. 2021, 11:01

Bizarre car le code semble plutôt correct à première vue...

Quelques conseils :
- Après un header('Location...'); toujours mettre un exit; ça permet d'éviter que du code ou un espace HTML ou quoique ce soit soit envoyé au navigateur et puisse provoquer un bug bizarre
- Un index de tableau commence effectivement à 0 et la conséquence c'est que la valeur maximum est count($tableau)-1
- Pour aider au debugage, remplace la fonction header() par var_dump() afin de voir l'url vers lequel doit se faire la redirection
##edit : Je viens de tester en faisant un var_dump() et ça fonctionne de mon côté
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

19 avr. 2021, 11:34

Merci pour votre message.
J'ai corrigé le problème de la valeur maximum du tableau.
Lorsque je colle mon url dans un navigateur, ce dernier me redirige vers une vidéo aléatoire. Tout va bien.

Je rencontre un autre problème.
Cette page doit être accessible grâce à un qr code.
Lorsque scanne le code pour aller sur la page, il me redirige toujours vers la même vidéo...
Ça fonctionne pourtant bien avec copier coller de l'url.

Merci pour votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 avr. 2021, 11:50

Es-tu sûr d'avoir généré un QRcode qui ne contient que l'url que tu as indiqué ?
Car si tu passes par un générateur en ligne, ils ont tendance à mettre une url intermédiaire genre qrco.de ou un truc du genre pour te donner des statistiques, et il est possible du coup qu'ils gardent en mémoire cache l'url finale de la vidéo au moment où ils l'ont consulté la 1ʳᵉ fois.

Tu peux utiliser par exemple le site suivant mais sans mettre l'option "Scan Tracking" :
https://www.qr-code-generator.com/
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 avr. 2021, 11:52

Et également pour limiter le risque de mise en cache, tu peux ajouter cette ligne juste avant ton header(location)
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

19 avr. 2021, 12:07

J'ai justement utilisé ce site pour générer le qrcode. Mais ça ne fonctionne pas.
J'en ai testé un autre, et j'ai un autre résultat... qui fonctionne. https://www.unitag.io/
Mais le lien passe par un site puis est redirigé de nouveau vers ma page... bizarre.
En tout cas, merci pour votre aide... je dois pouvoir m'en sortir avec toutes infos.
Merci.
Bonne journée.