2011-03-21 173 views
29

不知道這是屬於這裏還是在web應用程序中...如果適用,請移動。查看php會話變量

我甚至不知道這樣的事情是否可行,但是Firefox或Chrome是否有擴展或附加組件,讓我可以查看我所有的PHP會話變量,這些擴展組件可讓您查看餅乾?

回答

53

餅乾都可以在客戶端,所以他們可以從瀏覽器中看到。


在另一方面,會話數據存儲在服務器上,從不發送到客戶端(除非你編寫一些代碼來做到這一點,當然)

轉儲變量的內容,如$_SESSION,您可以使用var_dump()功能。
在開發服務器,您可以安裝Xdebug延伸,以提高它的輸出大大(和許多其他調試相關的東西,順便說一句)

如果你不想污染您網頁的HTML,你可以安裝FirePHP擴展到螢火蟲,並使用相應的PHP庫發送數據(如變量轉儲)它。
這將使你的變量,如$_SESSION,顯示在Firebug的控制檯。

+0

我剛纔接受了這個,但從未評論過FirePHP擴展是我一直在尋找,謝謝 – EmmyS 2011-08-11 16:12:46

+0

@EmmyS歡迎您:-)很高興能幫到您! – 2011-08-11 16:59:52

+0

這意味着用戶或黑客無法看到我們在應用程序中使用的可變模式是什麼,我是對嗎? – 2016-10-10 11:50:02

6

PHP會話變量存儲在服務器上,無法訪問客戶端。

1

編號會話變量存儲在服務器上。唯一可以在Firefox中看到的是存儲在會話cookie中的會話的ID(例如PHP_SESS_ID=randomgarbage)。

你必須明確地編寫一個腳本,將轉儲出來的會話變量,東西一樣簡單:

dumpsession.php:

<pre> 
<?php 
    var_dump($_SESSION); 
3

編號會話數據是服務器端,而cookie是客戶端。會話cookie包含會話標識符,服務器(即:PHP)使用它來檢索適當的會話數據。

這是不可能的,以查看會話數據,而不遠程訪問服務器,或者使用腳本(即駐留在服務器上)。

這就是爲什麼我們建議以存儲在會話,而不是曲奇「敏感」信息,因爲它不能被諮詢/輕易改變。

0

您可以使用: 的print_r($ _SESSION);

+1

請擴大您的答案 – 2013-01-15 14:32:55

+0

如果您不想使用擴展名,您可以在php文件中使用 Print_r($ _SESSION); 認爲它可能有幫助,有一個很好的 – 2013-01-22 15:38:14

0

我有這個簡單的腳本,顯示$ _SESSION變量。

<?php 
error_reporting(E_ALL); 
session_start(); 
if (isset($_POST['session'])) { 
    $session = eval("return {$_POST['session']};"); 
    if (is_array($session)) { 
     $_SESSION = $session; 
     header("Location: {$_SERVER['PHP_SELF']}?saved"); 
    } 
    else { 
     header("Location: {$_SERVER['PHP_SELF']}?error"); 
    } 
} 

$session = htmlentities(var_export($_SESSION, true)); 
?> 
<!DOCTYPE html> 
<html lang="en-US"> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Session Variable Management</title> 
     <style> 
      textarea { font: 12px Consolas, Monaco, monospace; padding: 2px; border: 1px solid #444444; width: 99%; } 
      .saved, .error { border: 1px solid #509151; background: #DDF0DD; padding: 2px; } 
      .error { border-color: #915050; background: #F0DDDD; } 
     </style> 
    </head> 
    <body> 
     <h1>Session Variable Management</h1> 
<?php if (isset($_GET['saved'])) { ?> 
     <p class="saved">The session was saved successfully.</p> 
<?php } else if (isset($_GET['error'])) { ?> 
     <p class="error">The session variable did not parse correctly.</p> 
<?php } ?> 
     <form method="post"> 
      <textarea name="session" rows="<?php echo count(preg_split("/\n|\r/", $session)); ?>"><?php echo $session; ?></textarea> 
      <input type="submit" value="Update Session"> 
     </form> 
    </body> 
</html> 

將其安裝在測試服務器上,將其命名爲「sess。php「或類似的東西,它顯示當前的會話。 不要把它留在生產服務器上!!!