2013-03-19 153 views
0

我試圖在頁面加載之間保存變量值。頁面加載的PHP會話變量

我認爲下面的代碼在第一次用戶點擊頁面時不會顯示任何內容。下一次應該顯示數字5.它在第一次和每次之後都顯示一個零(0)。

<?php 
session_start(); 
$_SESSION['test']; 
echo $_SESSION['test']; 
$_SESSION['test'] = 5; 
?> 

我做錯了什麼?我的PHP服務器可能安裝不正確?等

服務器設置

PHP Version 5.3.13 
session.auto_start Off Off 
session.bug_compat_42 Off Off 
session.bug_compat_warn Off Off 
session.cache_expire 180 180 
session.cache_limiter nocache nocache 
session.cookie_domain no value no value 
session.cookie_httponly Off Off 
session.cookie_lifetime 0 0 
session.cookie_path//
session.cookie_secure Off Off 
session.entropy_file /dev/urandom /dev/urandom 
session.entropy_length 0 0 
session.gc_divisor 1000 1000 
session.gc_maxlifetime 1440 1440 
session.gc_probability 1 1 
session.hash_bits_per_character 4 4 
session.hash_function 0 0 
session.name PHPSESSID PHPSESSID 
session.referer_check no value no value 
session.save_handler files files 
session.save_path /var/php_sessions /var/php_sessions 
session.serialize_handler php php 
session.use_cookies On On 
session.use_only_cookies On On 
session.use_trans_sid 1 1 
+1

評論第3行$ _SESSION ['test']; – Ateszki 2013-03-19 19:20:20

+0

@Ateszki雖然這條線很可能不是OP想要做的,但它不應該成爲問題。 – PeeHaa 2013-03-19 19:22:00

+0

我知道,這只是一個評論,清理代碼,使事情更容易調試 – Ateszki 2013-03-19 19:25:50

回答

3
  1. session.save_path(/ var/php_sessions)目錄是可寫的。我看到你沒有使用tmp目錄,所以我問這個。

  2. session.use_trans_sid應爲0 - 如果啓用「use_trans_sid」,則會話標識每次都附加到URL上。我不確定ajax請求會發生什麼,但我認爲它會被附加到。

  3. 這是有點衝突使用session.use_only_cookies作爲1和session.use_trans_sid作爲1,因爲use_only_cookies指定模塊是否將只使用cookie來存儲會話ID在客戶端。

+0

/var/php_sessions不存在,我也無法創建它。這看起來像我需要問我的虛擬主機。謝謝。 – w0lf42 2013-03-19 19:41:06

+1

進行測試,您可以將其指向您的服務器上的可寫目錄,例如:session_save_path('/ home/example.com/my_sessions'); ini_set('session.gc_probability',1);或ini_set(session.save_path,'/ path/to/your/folder')http://php.net/manual/en/function.session-save-path.php – 2013-03-19 19:43:39

+0

可寫目錄是問題所在。 – w0lf42 2013-03-19 19:53:00

0

你可以嘗試以下方法:

<?php 
session_start(); 
if (!isset($_SESSION['test'])) { 
    $_SESSION['test'] = 0; 
} 
echo $_SESSION['test']; 
$_SESSION['test'] = 5; 
?> 
+0

我試過了。不幸的是,這不起作用。 – w0lf42 2013-03-19 19:25:28

0
$_SESSION['test']; 

我覺得這條線是創建$ _SESSION數組中的新元素用鑰匙'test'...因爲沒有賦值,所以它的值爲0.

嘗試將其更改爲

if(!array_key_exists('test', $_SESSION)) { 
    $_SESSION['test'] = 5; 
} 
0

事情是這樣的??:

<?php 
    session_start(); 
    if(isset($_SESSION['test'])) 
    {$_SESSION['test'] = 5;} 
    else 
    { 
     $_SESSION['test'] = ""; 
    } 
    echo $_SESSION['test']; 
?> 

PS:它的所有做這些事情的順序,你應該檢查會話是否存在分配5,如果不能創造var和分配沒什麼......你第一次執行這個腳本不是要顯示什麼,但後來它會顯示5

Saludos;)

+0

我也試過,但沒有發生。 – w0lf42 2013-03-19 19:31:47

+0

我在我的本地主機上測試過並且工作...第一次沒有顯示....如果脈衝f5然後在您的phpinfo中顯示5每次 – Hackerman 2013-03-19 19:37:39

+0

....顯示會話的配置....這些地雷:會議 啓用 會話支持\t 登記保存處理\t文件中的用戶註冊 串行處理\t PHP php_binary WDDX – Hackerman 2013-03-19 19:39:29