2016-03-28 46 views
1

我想允許用戶輸入一些文本,然後使用該文本作爲他們的會話用戶名,然後在每頁頂部回顯一個歡迎「用戶名」,然後註銷按鈕,它將結束會話並允許用戶輸入新的用戶名表格文本指定會話名稱

當前代碼將允許用戶輸入名稱,然後會出現一個歡迎名稱,但是如果用戶更改了頁面,它將被銷燬,和文本框輸入一個名字永遠不會消失,要麼 - 這是母版頁中笨

<form action="" method="POST"> 
<input type="text" name="input_value"> 
<input type="submit" name ='in' value="LogIn"> 
</form> 

<?php 
    if (session_status() == PHP_SESSION_NONE) { 
     session_start(); 
     $_SESSION['userses'] = ''; 
    } 

    if(session_status() == PHP_SESSION_ACTIVE && $_SESSION['userses']==''){ 

    $_SESSION['userses'] = $_POST['input_value']; 
    echo "Welcome, ".$_SESSION['userses']."!"; 
    } 

else{ 
echo "Welcome, ".$_SESSION['userses']."!"; 
    } 



?> 
<form action="<?php session_destroy(); ?>" method="POST"> 
<input type="submit" name='out' value="LogOff"> 
</form> 
+1

你還沒有理解客戶端和服務器端的區別。您不能簡單地在html標記中放置一個php命令,並希望在客戶端發生某些事情時執行該命令。這不是事情的方式。請通過幾個例子來加深理解。 – arkascha

+0

只需在腳本開始時調用session_start,不要檢查會話狀態 – Hikariii

+0

您應該查看如何使用codeigniter會話http://www.codeigniter.com/user_guide/libraries/sessions.html – user4419336

回答

-1

你必須改變

if(session_status() == PHP_SESSION_ACTIVE && $_SESSION['userses']=='') 

if(isset($_POST['in'])){ 

$_SESSION['userses'] = $_POST['input_value']; 
} 

所以當他提交的用戶名,這將如果趕上POST請求,然後添加輸入您的用戶名

你不需要檢查session_status

編輯:

和正如評論所說,把session_start();在每一頁的代碼

例子的開頭:

<?php session_start(); 
if(isset($_SESSION['userses'])) echo "Welcome".$_SESSION['userses']; 
?> 
<form action="" method="POST"> 
<input type="text" name="input_value"> 
<input type="submit" name ='in' value="LogIn"> 
</form> 

<?php 

if(isset($_POST['in'])){ 

$_SESSION['userses'] = $_POST['input_value']; 
} 
?> 
<form action="<?php session_destroy(); ?>" method="POST"> 
<input type="submit" name='out' value="LogOff"> 
</form> 

您使用笨,爲什麼不使用會話庫:

https://www.codeigniter.com/user_guide/libraries/sessions.html

+0

謝謝m9我會看看會議的東西codeigniter風格 – user2101517