2014-01-24 37 views
3

我完全不熟悉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" /> 

回答

3

你我们需要在每个页面的顶部添加这个来获得y我们的形象:

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

这应该工作!

+0

嗨。谢谢。这似乎工作。但问题在于,脚本正在生成每个页面上的$ img,正如您已经想到的那样。我现在需要的是一个代码,该函数$ img = getRandomFromArray($ imgList);只在用户没有存储在他的会话中的变量时才运行。怎么做? – monchichi

+0

我想我明白了。 我这样做过: <?php session_start();如果(isset($ _ SESSION ['UserImg'])){ $ img = $ _SESSION ['UserImg']; } else { $ img = getRandomFromArray($ imgList); } $ _SESSION ['UserImg'] = $ img; ?> – monchichi

+1

是的,这应该工作!在else块中添加'$ _SESSION ['UserImg'] = $ img;'。否则,你已经拥有了会话变量。 – Tzar

0

每个页面调用之上:

session_start(); 

为了安全变量在会话例如:

$_SESSION['imageid'] = $ID 

要获得可变后:

$imageid = $_SESSION['imageid']