PHP会话:生成变量并将其保存为会话

时间:2014-01-24 14:06:23

标签: session session-variables session-cookies php

我是php会话的新手。我无法完成一项简单的任务。 这就是我想要做的事情:

  • 我网站的访问者会看到随机图片

这部分到目前为止是有效的。但每次用户进入另一个页面时(我在所有页面上显示此随机图像),脚本都会生成一个新的随机图像以供显示。

我现在想做的是:

  • 将随机图像变量保存到会话中,这样他就可以在他保存会话时访问的每个页面上看到相同的图像。

这是我的工作代码,用于获取随机图像而不将其保存到会话中。如果有人可以帮助我了解代码应该如何,所以它适用于会话将是非常棒的。请记住:在会议方面我完全是新手。

正如您所看到的,我需要在生成后将变量$ img存储到会话中。如果用户没有在他的会话中存储$ img变量,那么脚本只会再次访问新站点。

<?php
function getImagesFromDir($path) {
$images = array();
if ( $img_dir = @opendir($path) ) {
    while ( false !== ($img_file = readdir($img_dir)) ) {
        // checks for gif, jpg, png
        if ( preg_match("/(\.gif|\.jpg|\.png)$/", $img_file) ) {
            $images[] = $img_file;
        }
    }
    closedir($img_dir);
}
return $images;
}

function getRandomFromArray($ar) {
mt_srand( (double)microtime() * 1000000 ); // php 4.2+ not needed
$num = array_rand($ar);
return $ar[$num];
}


$root = '';
// use if specifying path from root
//$root = $_SERVER['DOCUMENT_ROOT'];

$path = 'images/';


// Obtain list of images from directory 
$imgList = getImagesFromDir($root . $path);
$img = getRandomFromArray($imgList);
?> 

<img src="/<?php echo $path . $img ?>" alt="image" />

2 个答案:

答案 0 :(得分:3)

您需要在每个页面的顶部添加此图片以获取图片:

session_start();
if(isset($_SESSION['UserImg'])){
   $img = $_SESSION['UserImg'];
}
else {
    $img = getRandomFromArray($imgList);
    $_SESSION['UserImg'] = $img;
}

这应该可以解决!

答案 1 :(得分:0)

在每个页面调用之上:

session_start();

以会话中的安全变量为例:

$_SESSION['imageid'] = $ID

要获得变量:

$imageid = $_SESSION['imageid']