2014-01-24 72 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']