单击 php 中的按钮时的随机(非重复)文件生成器

random(non- repeating) file generator on click of button in php

我想随机显示 5 个 php 文件内容,但是 不重复 使用 php/javascript 单击按钮 [NEXT](在 php 桌面也是如此)。

我使用的代码确实在页面加载时显示了随机网页,但我确实遇到了重复的网页

这是我用于 index.php 文件的代码:

<?php
$RandomList = array();
$RandomList[] = "/review/review-a1.php";
$RandomList[] = "/review/review-a2.php";
$RandomList[] = "/review/review-a3.php";
$RandomList[] = "/review/review-a4.php";
readfile($_SERVER['DOCUMENT_ROOT'].$RandomList[rand(0,count($RandomList)-1)]);
?>

请建议如何获取非重复文件。

只需保存您已经在 session:

中使用的路径
//Read visited paths from session or create a new list. 
//?? works only in PHP7+. Use isset()?: instead of ?? for previous versions
$visitedPaths = $_SESSION['visitedPaths'] ?? [];

//Your list, just slightly changed syntax. Same thing
$randomList = [
    "/review/review-a1.php",
    "/review/review-a2.php",
    "/review/review-a3.php",
    "/review/review-a4.php"
];

//Remove all paths that were already visited from the randomList
$randomList = array_diff($randomList, $visitedPaths);

//You need to check now if there are paths left
if (!empty($randomList)) {
    //The user did not load all files, so we can show him the next one
    //Use array_rand() rather than $array[rand(0, count($array) -1)]
    $randomPath = $randomList[array_rand($randomList)];
    readfile($_SERVER['DOCUMENT_ROOT'] . $randomPath);

    //Now we need to save, that the user loaded this file
    $visitedPaths[] = $randomPath;

    //And we need to save the new list in the session
    $_SESSION['visitedPaths'] = $visitedPaths;
} else {
    //TODO: Add some logic in case all paths have been visited
}