2013-03-27 85 views
0

如果我想存儲當前在我的網站上的用戶的$ _SESSION ['user']名稱,並且我想在每個頁面上寫一條消息, 「用戶」,我該做什麼?我已經試過:不工作SESSION ['user'] in php

<?php 
     session_start(); 
?> 
    <form> ... </form> 

進入驗證頁面,我有

 <?php 
     $_SESSION['user']=$_POST['user']; 
     ... 
    ?> 

//並在其他網頁我有

<?php 
echo "Hy ".$_SESSION['user']; 
... 

>

在我的網站?我只有「Hy」沒有用戶。我做錯了什麼?

+4

頁面開頭是否有'session_start()'? – JoDev 2013-03-27 15:16:12

回答

4

你必須確保該功能session_start()是要在使用會話的每一個頁面上。另外,在將任何頭文件/輸出發送到瀏覽器之前,需要使用session_start()。

好:

<?php 
session_start(); 

//Do something with sessions 
$_SESSION['user'] = $username; 

壞:

<?php 
echo 'Hi'; 
session_start(); 

壞:

<head> 
    <title>Page Title</title> 
</head> 
<?php 
session_start(); 

此外,您的當前實現姿勢如果您沒有清理輸出,則存在安全風險。請確保你輸出用戶名時使用htmlspecialchars,否則你打開XSS攻擊:

echo htmlspecialchars($_SESSION['user'], ENT_QUOTES, "utf-8"); 
+0

建議OP應該調整[錯誤報告級別](http://php.net/manual/en/function.error-reporting.php)。 – ficuscr 2013-03-27 15:19:11

+0

非常感謝!我不能爲你的答案投票,因爲我是新的,我必須有一些聲望點。我會在那之後投票。無論如何,再次感謝。 – 2013-03-27 15:21:26

1

您在其他頁面的開始丟失了session_start(),一旦你在特定的啓動會話的會話值將可以訪問頁。

+0

非常感謝!我不能爲你的答案投票,因爲我是新的,我必須有一些聲望點。我會在那之後投票。無論如何,再次感謝。 – 2013-03-27 15:22:04