【问题标题】:PHP Sessions: Generate a variable and save it for sessionPHP Sessions:生成一个变量并将其保存为会话
【发布时间】:2014-02-15 13:35:06
【问题描述】:

我对 php 会话完全陌生。我无法完成一项简单的任务。 这就是我想要做的:

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

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

我现在想做的是:

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

这是我获取随机图像而不将其保存到会话中的工作代码。如果有人可以帮助我了解代码的外观,以便它与会话一起使用,那就太棒了。请记住:在会话方面,我完全是新手。

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

<?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" />

【问题讨论】:

    标签: session session-variables session-cookies php


    【解决方案1】:

    你需要在每个页面的顶部添加这个来获取你的图片:

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

    这应该可以解决!

    【讨论】:

    • 嗨。谢谢。这似乎有效。但问题是脚本在每个页面上生成 $img,正如您已经知道的那样。我现在需要的是函数 $img = getRandomFromArray($imgList); 的代码。仅当用户的会话中没有存储变量时才运行。该怎么做?
    • 我想我明白了。我这样做了: if(isset($_SESSION['UserImg'])){ $img = $_SESSION['UserImg']; } 其他 { $img = getRandomFromArray($imgList); } $_SESSION['UserImg'] = $img; ?>
    • 是的,应该会成功的!在 else 块本身中添加 $_SESSION['UserImg'] = $img;。否则你已经有了 session 变量。
    • 感谢这项工作。当然 $_SESSION['UserImg'] = $img;需要在 else 之外删除,所以它只被调用一次
    【解决方案2】:

    在每个页面调用的顶部:

    session_start();
    

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

    $_SESSION['imageid'] = $ID
    

    要取回变量:

    $imageid = $_SESSION['imageid']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多