2011-09-23 68 views
1

我有一個login.php文件,它抓取了index.html的用戶名和密碼錶單。 login.php檢查用戶是否存在,將它們記錄下來,meta將它們引導到網站的主頁。當他們進入主頁時,我失去了會話變量......我把那個頁面回顯出來,但沒有運氣。簡單的PHP會話問題

對於login.php中[它處理分貝的東西]:

session_start(); 

$myusername = $_POST['myusername']; 
$mypassword = $_POST['mypassword']; 
$_SESSION['username'] = $_POST['myusername']; 

對於homepage.php:

session_start(); 

$_SESSION['username'] = $_POST['myusername']; 
echo($_SESSION['username']); 

我留下了大量的代碼,因爲我假設這是一個快速修復。 index.html沒有PHP ...只是一個簡單的文本/密碼框使用POST。我能夠登錄用戶,只是沒有會話變量保持放置。任何輸入讚賞!

+0

在哪裏?根本沒有發佈,在homepage.php中,你給這個會話賦予一個空值,'因爲沒有發佈! – B4NZ41

回答

3

當您重定向到homepage.php時,沒有$_POST['myusername'],所以不要將其設置爲會話。 只要做echo($_SESSION['username']);會給你的用戶名。

+0

非常感謝!我之前做過這件事,但已經有一段時間了......你和其他所有海報都非常有幫助。謝謝!!! – phpsess1

1

您可以將它設置爲在主頁上空白,因爲threes沒有發佈到該頁面。

0

這條線的主頁,

$_SESSION['username'] = $_POST['myusername']; 

確保$_SESSION['username']是空!由於您的主頁未收到POST請求,因此請刪除此行。此外,會話$_SESSION['username']已設置在登錄頁面中,除非會話過期,該會話變量將出現在每個頁面中。

0

你可以試試這個方法是:

的login.php:

<php? 
session_start(); 

$myusername = $_POST['myusername']; 
$mypassword = $_POST['mypassword']; 
$_SESSION['username'] = $_POST['myusername']; // Suppose username is 'admin' 
?> 

homepage.php:

<php? 
session_id('SID'); // This will start the session on the previous session which started by login.php 
session_start(); 

print $_SESSION['username']; // This will print 'admin' 
?> 

通過使用這個程序,你會很容易地在多個頁面中使用$_SESSION['username']。當您使用以前的會話ID開始新會話時,您將很容易使用該會話中的所有會話變量define。