PHP - 会话,随机函数和数组

时间:2014-07-21 09:08:11

标签: php

所以我创建了一个测验,最后使用shuffle()函数生成随机引用。

当我刷新页面时,我会反复从数组中获取不同的值。

我希望它保持相同的价值。

这是我的代码:

<?php

$answer=array(

"Good job.", 
"Great work!", 
"Excellent."

);

shuffle ($answer);

echo $answer[0];

);

我想要的是...... 例如:

  

如果随机播放功能生成&#34; 干得好!&#34;而页面是    REFRESHED ,我希望它留在&#34; 干得好!&#34;,不要重新洗牌。

我的猜测是使用Cookie和会话就是答案,但我尝试过。

session_start()

提前致谢。

已编辑(仍然没有工作。)

<?php
session_start();

//Array of cars
$answer = array(
"Mercedes", 
"Benz", 
"Honda", 
"Toyota", 
"Nissan", 
"Mazda", 
"Hyundai", 
"Ford", 
"Lexus", 
"Lamborghini", 
"Ferrari", 
"Porche", 
"Mitsubushi", 
"Scion", 
"Chrysler", 
"Jeep", 
"Masarati"
);

 shuffle ($answer);


 if( isset ($_SESSION['myAnswer'])){
    $answer = $_SESSION['myAnswer'];
}
else{
    $_SESSION['myAnswer'] = $answer;
}

?>

2 个答案:

答案 0 :(得分:1)

以下是Cookie的示例。我们采用随机密钥,然后将其保存到cookie中,而不是对数组进行洗牌。由于cookie可以被篡改,我们确保适当地验证该值。

$answer = array(
  "Good job.", 
  "Great work!", 
  "Excellent."
);


if (isset($_COOKIE['answer'])) {
    $answer_key = $_COOKIE['answer'];
}
if (!isset($answer_key) || !isset($answer[$answer_key])) {
    $answer_key = rand(0, count($answer)-1);
    setcookie('answer', $answer_key, time()+9999);
}

echo $answer[$answer_key];

这仅适用于键为数字(0,1,..., n )的数组。在使用setcookie()之前,请确保不输出任何内容(包括空格)。

答案 1 :(得分:0)

命令session_start()只会使会话可用,并且已在大多数配置中完成。您需要做的是实现将您的答案存储到会话中的实际代码,并从那里进行检索(如果可用)。

一个小样本(不是完整的代码,你可能想自己想要这样做)可能看起来像这样:

if( isset $_SESSION["myAnswer"] ){
    $answerIdx = $_SESSION["myAnswer"];
}
else{
    // Do it like you did before...
    $_SESSION["myAnswer"] = $answerIdx;
}