单击链接时导航到不同的页面

时间:2017-03-23 07:42:28

标签: php arrays

我有以下Index.php文件的代码。每当用户点击HTML页面中的链接时,它就会重定向到Index.php页面。此页面随机重定向到三个不同的页面,即:" index_control.php" ," index_non_intrusive.php" ," index_intrusive.php"。 但是,现在,我想做的就是:当用户首先点击链接时,它应该导航到数组中的第一个链接(index_control.php),当第二个用户点击链接时,数组的第二个链接(index_non_intrusive.php)等等。当第四个用户点击链接时,它应该再次从数组重定向到第一个链接(index_control.php)。所以序列导航不是随机的。如果有人可以提供一些暗示或帮助来实现这一点,那就太好了。

Index.php

<html>
  <head>
    <title>
      abc
    </title>
  </head>

<?php
  $links= array("http://abc/index_control.php","http://abc/index_non_intrusive.php","http://abc/index_intrusive.php");
  $randomLink = $links[rand(0, count($links)-1)];
  header("Location: {$randomLink}");
  exit();
?>

<html>

2 个答案:

答案 0 :(得分:1)

您必须在某处保存点击次数,在我使用简单JSON file的示例中。我使用jQuery来监听点击事件并将数据发送到PHP

<?php
    if(isset($_POST['clicked'])){
        $links = array(
            "link1",
            "link2",
            "link3",
        );
        $clicked_count = json_decode(file_get_contents('test.json'),true)['clicked'];
        $clicked_count = ($clicked_count >= 2) ? 0 : $clicked_count+1;
        file_put_contents('test.json', json_encode(['clicked'=> $clicked_count]));
        header("location: {$links[$clicked_count]}");
        exit;
    }
?>

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <a href="#" id="button">Click</a>
</body>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<script type="text/javascript">
    $(function(){
        $('#button').click(function(){

            // first parameter is your php file e.g. something.php, leave it blank if you use the same file
            $.post("", {clicked:true});  
        });
    });
</script>
</html>

test.json

{
    "clicked":1
}

答案 1 :(得分:1)

由于“会话是针对单个会话ID存储个人用户数据的简单方法”(在@Oliver的link中找到),我认为会话不是均匀分发您的会话的工具(不同!)用户使用不同的URL。您将需要一个全局可访问的“变量”。一个非常简单的方法可以是引用存储在文件中的整数值,并在每次使用后递增,如

<?php
  $f="filename_for_integer_value.txt"; // make sure you have write access!
  $links= array("http://abc/index_control.php",
                "http://abc/index_non_intrusive.php",
                "http://abc/index_intrusive.php");
  $n=file_get_contents($f);
  file_put_contents($f,($n+1)%count($links));
  header("Location: {$links[$n]}");
  exit();
?>