2014-08-29 136 views
0

我已经创建了一个网站(link here),其中页面中间的繁殖者随机显示,只要有人进入该页面。页上的随机元素

我想知道如果有人从主页转到另一个页面,然后按下返回按钮,饲养员的订单将与他第一次进入网站时的相同。

现在每次有人进入主页时订单都会更改。

+0

你可以使用他的浏览器ID(user-agent + ip)来创建一个唯一的ID,用它作为随机算法的种子。你如何获取随机条目? – 2014-08-29 12:57:36

+0

我随机使用php函数shuffle(),然后显示它们。 – Radu 2014-08-29 13:01:23

+0

我认为你可以使用这个答案http://stackoverflow.com/questions/6557805/randomize-a-php-array-with-a-seed并将其与用户代理+ IP方法结合,以生成种子,将总是给你每个用户相同的结果。如果你已经有一个会话不知何故,你也可以使用种子的会话ID。 – 2014-08-29 13:03:52

回答

1

假设你有每串饲养员,像

$div[0]='<div>My breeder 1</div>'; 
$div[1]='<div>My breeder 2</div>'; 
$div[2]='<div>My breeder 3</div>'; 
$div[3]='<div>My breeder 4</div>'; 

和阵列

$my_breeders=[0,1,2,3]; 

如果洗牌数组,你会得到类似

$my_breeders=[1,3,2,0]; 

这是你显示div的顺序。把它放在一个字符串中并写入一个cookie。

$order=implode('-',$my_breeders); //gives a string: 1-3-2-0 
setcookie('breederorder',$order,time()+(30*60)) 

下一次有人访问的页面,检查该cookie

if(!empty($_COOKIE['breederorder'])){ 
    $my_breeders=explode('-',$_COOKIE['breederorder']); 
    } 

现在有了与以前相同的阵列。

注意,我在半小时(30 * 60)的时间内设置了cookie时间。如果设置时间过长,下次访问者访问您的页面时,het仍然会得到相同的订单。

+0

这似乎是一个很好的解决方案,我会在明天早上尝试它的第一件事,并告诉你它是如何发生的。感谢您真正的创新! – Radu 2014-08-31 17:32:39

1

如果设置了cookie,您可以从Cookie中的元素顺序中保存状态并防止随机化函数。

+0

我可以举个例子吗? – Radu 2014-08-29 12:49:29

+0

你如何随机化元素?你用哪种语言达到你的目标? – xyNNN 2014-08-29 13:20:07

+0

该网站与wordpress集成,我使用PHP的shuffle()函数来随机化它们。 – Radu 2014-08-29 13:23:33