2014-06-05 95 views
3

我有啓用會話的PHP代碼。會話文件正在tmp目錄中創建,但它是空的,這就是爲什麼我的瀏覽器Internet Explorer和Chrome無法獲取會話並在整個頁面中顯示它。PHP會話文件爲空

這是我的PHP代碼。

Page2。

<html> 
<body> 
<form action="test3.php" method="post"> 
Username: <br><input type="text" name="username"></br> 
<input type="submit" name = 'submit1' value= 'Login'> 
</form> 
</body> 
</html> 

Page3。

<?php 
session_start(); 
?> 

<html> 
<body> 

<?php 
$username = $_POST['username']; 
$_SESSION['username']= $_POST['username']; 
echo "<br> Hi $username.</br>"; 
?> 

<form action="test4.php" method="post"> 
<input type="submit" name = 'submit' value= 'click me'> 
</form> 

</body> 
</html> 

Page4。

<?php 
session_start(); 
$username = $_SESSION['username']; 
echo "<br> Hi $username.</br>"; 
?> 
+0

我以前有過這個問題 - 檢查你的'php.ini'配置 - 如果設置不正確,'$ _SESSION'不管用什麼都不起作用。看看[這個問題](http://stackoverflow.com/questions/16705786/php-ini-example-to-enable-sessions)一些線索。 –

回答

1

問題解決我不得不將session.cookie_path改爲php.ini改爲/改爲/tmp

+0

是否可以添加解釋?爲什麼路徑是根? – Joshua

+0

這是相對於站點的路徑(例如http://example.com/中的/而不是本地文件系統上的路徑)。 –

2

檢查session.save_path在您的服務器的php.ini文件。

您可以通過檢查phpinfo()輸出來查看現在設置的內容。

<?php 

phpinfo(); 

?> 

尋找session塊應該看起來像這樣;從我MAMP安裝截圖:

enter image description here

然後在你的php.ini應該是配置的這樣一個塊:

; Argument passed to save_handler. In the case of files, this is the path 
; where data files are stored. Note: Windows users have to change this 
; variable in order to use PHP's session functions. 
; As of PHP 4.0.1, you can define the path as: 
;  session.save_path = "N;/path" 
; where N is an integer. Instead of storing all the session files in 
; /path, what this will do is use subdirectories N-levels deep, and 
; store the session data in those directories. This is useful if you 
; or your OS have problems with lots of files in one directory, and is 
; a more efficient layout for servers that handle lots of sessions. 
; NOTE 1: PHP will not create this directory structure automatically. 
;   You can use the script in the ext/session dir for that purpose. 
; NOTE 2: See the section on garbage collection below if you choose to 
;   use subdirectories for session storage 
; 

session.save_path = /Applications/MAMP/tmp/php 

確保路徑確實存在你的系統&的Apache服務器可以對寫信給它。如果目錄不存在或無法寫入,請根據需要調整以符合您的設置。

我發現this site有很多關於如何處理這類問題的很好的信息。

+0

其設置爲'session.save_path =「W;/tmp」 ' – Hadi

+0

如果你在windows上,它最可能是'w:\ tmp'。如果你在Unix機器上,它很可能只是'/ tmp'。 – JakeGould

+0

另請查看本網站的建議:http://support.ultimatelocator.com/index.php?/Knowledgebase/Article/View/60/0/php-session-problems-warning-session_start-opentmp-failed-permission- denied – JakeGould