2014-02-20 38 views
0

我試圖通過存儲在會話的獨立變量的所有變量如下:

<?php 

session_start(); 
ini_set('display_errors', 'off'); 
ini_set('display_startup_errors', 'off'); 


$vars = array('id','name','mail1','mail2','phone1','phone2','address','genere', 
         'departament','tittle'); 
    foreach ($vars as $v) { 
      if (isset($_SESSION[$v])) { 
       $$vars[v]= $_SESSION[$v]; 
       echo $$vars[v].'<br />'; 
      } 
     } 
    echo $name; 
    echo </ br>;    
    echo $mail1; 


?> 

但是當我嘗試打印變量的內容,顯然是空的。我究竟做錯了什麼?

+4

您錯過了'genere'',試圖在這裏粘貼代碼時發生錯誤? –

+2

'$ {$ v} = $ _SESSION [$ v];'應該可以工作,但不建議,因爲安全問題等。我只是堅持用'$ _SESSION'變量,如果我是你 – Class

+0

@ICanHasCheezburger好名字,是的,當我粘貼代碼時發生錯誤.. – franvergara66

回答

1

試試這個:

extract($_SESSION) 
echo $id; 
echo $name; 
// so on ... 

編號:http://in2.php.net/extract

請檢查警告注意在文件中給出

foreach ($vars as $v) { 
    if (isset($_SESSION[$v])) { 
     $$v= $_SESSION[$v]; 
     echo $$v.'<br />'; 
    } 
} 
-3

您可以使用函數「eval」來解釋一個字符串。小心!

<?php 
session_start(); 
$_SESSION['name'] = 'John'; 
$_SESSION['city'] = 'Los Angeles'; 

$str = ""; 
foreach ($_SESSION as $s => $v){ 
    $str .= '$' . $s . " = '" . $v . "';"; 
} 

eval($str); 
echo $name . " and " . $city; ?> 
+2

eval()語言結構非常危險,因爲它允許執行任意PHP代碼。 – franvergara66

0

而不是單獨存儲您的變量您應該將它們存儲在一個數組中。這樣你就可以訪問你需要的唯一變量。

類似下面:

$_SESSION['details'] = array(); 
$_SESSION['details']['name'] = 'xxx'; 
$_SESSION['details']['id'] = 'xxx'; 
$_SESSION['details']['mail1'] = 'xxx'; 
$_SESSION['details']['mail2'] = 'xxx'; 
$_SESSION['details']['phone1'] = 'xxx'; 

現在來訪問他們的個人可以簡單地做到這一點。

extract($_SESSION['details']); 
echo $name; 
echo $id; 
2

你的代碼有錯誤只更改線路isset函數一樣,後:

<?php 
$$v = $_SESSION[$v];  
?>