【问题标题】:Save Background-Image in Session in Drupal在 Drupal 的会话中保存背景图像
【发布时间】:2013-07-20 20:19:42
【问题描述】:

我有一个网站,我想为页面随机选择背景图片。此图像应保存在会话变量中,直到浏览器关闭。目前,每次页面刷新时,都会一次又一次地调用随机函数,但它应该留在会话中。那么如何使用 drupal 或一般 php 将背景图像保存到浏览器会话中,直到浏览器关闭?

这里调用每个页面的代码加载随机函数。

<div id="page" style="background: url('/sites/all/themes/klickers/css/images/bgtop-0<?php    echo rand(1, 4); ?>.jpg') no-repeat 50% 0 #000000;" class="<?php print $classes; ?>">

【问题讨论】:

    标签: php css drupal


    【解决方案1】:

    这样就可以了

    <?php
    session_set_cookie_params(0); // this will ensure your session destroys when browser is closed
    session_start();
    if(!isset($_SESSION['bgImage'])) {
    $bgImage = rand(1, 4);
    $_SESSION['bgImage'] = $bgImage;
    } 
    ?>
    <div id="page" style="background: url('/sites/all/themes/klickers/css/images/bgtop-0<?php    echo $_SESSION['bgImage']; ?>.jpg') no-repeat 50% 0 #000000;" class="<?php print $classes; ?>">
    

    已编辑

    已添加session_set_cookie_params(0);

    【讨论】:

    • 是的,完美。如果我将 session_set_cookie_params(0) 放入 if 子句,它确实有效。非常感谢。我的代码在主帖上更新了。
    【解决方案2】:
    <?php
    
    session_start(); //call this before doing anything else
    if (isset($_SESSION['bgimage'])) {
        $bgimage = $_SESSION['bgimage'];
    }
    else {
        $bgimage = mt_rand(1,4); //mt_rand() is the better rand()
        $_SESSION['bgimage'] = $bgimage;
    }
    
    ?>
    <!DOCTYPE HTML>
    ...
    <div id="page" style="background: url('/sites/all/themes/klickers/css/images/bgtop-0<?php echo $bgimage ?>.jpg') no-repeat 50% 0 #000000;" class="<?php print $classes; ?>">
    

    【讨论】:

    • 我试过你的代码,但它首先说:“注意:会话已经开始 - 忽略 include() 中的 session_start()”。也试过没有 session_start 但它没有保存它。 Drupal 需要其他的东西,但是 php 总体上你的代码可以工作,但遗憾的是在 drupal 中没有。
    • 你需要在你的图片标签中回显$_SESSION['bgimage']而不是$bgimage
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 2017-04-07
    • 2020-06-07
    • 2017-01-18
    • 2021-06-29
    相关资源
    最近更新 更多