防止再次包含php模板

时间:2018-05-07 15:30:15

标签: php

每次页面重新加载时,根页中都会包含随机模板。如何阻止再次包含相同的模板?

   <?php
      $templates= array("template1.php","template2.php","template3.php");
      $Randomize_templates = $templates[array_rand($templates,1)];
      include  $Randomize_templates;
    ?>

例如: 如果已经包含template1.php,请从数组中删除它。

$templates= array("template2.php","template3.php");

2 个答案:

答案 0 :(得分:0)

目前,每次重新加载页面都会将模板数组重置为包含所有模板的原始状态。

您可以通过使用会话和会话变量$_SESSION['templates']来解决这个问题,最初设置数组(如果它是空的if (empty($_SESSION['templates'])){$_SESSION['templates']= array("template1.php","template2.php","template3.php");})并在用户导航时编辑会话变量现场。 该解决方案的替代方案是使用数据库或文本文件,但会话本身最为舒适。

如果用户在您的网站中导航的次数多于可用模板的数量,请考虑可能发生的情况。

答案 1 :(得分:-1)

基本上你可以这样做

  1. 随机播放原始阵列
  2. 将其保存在当前用户的会话中
  3. 每次用户访问页面时都会从会话中弹出第一个模板
  4. 当数组为空时,将其洗牌并重新加载。
  5. 那是一个代码示例

    if (!isset($_SESSION['templates']) || empty($_SESSION['templates'])) {
      $templates = array("t1.php","t2.php","t3.php");
      shuffle($templates); // templates are shuffled in place
      $_SESSION['templates'] = $templates;
    }
    
    // or array_pop that should be faster if you have a huge amount of templates
    $currentTemplate = array_shift($_SESSION['templates']);
    

    每次需要执行此类操作时都应包括此内容

    重要提示:请确保您的会话已启动,否则请使用session_start()

    明确启动