我正在創建一個個人資料頁面,可以在其中編輯用戶名。我似乎無法弄清楚如何在成功編輯后更新顯示在首頁的用戶名(即 Hi Kana?。?。該名稱是使用我頁面頂部的會話變量$_SESSION['username']生成的<?phpsession_start();if(isset($_POST['submit']) && isset($_SESSION['newusername'])){ unset($_SESSION['username']); //clear existing username session $_SESSION['username'] = $_SESSION['newusername']; //replace with the new username echo $_SESSION['username'];} else { echo $_SESSION['username'];}?>在使用文本輸入上設置的不同名稱點擊提交按鈕后,它應該會發生變化,但事實并非如此。這些是我上面提到的代碼之后的代碼行。<?php$textinput = $_POST['textinput']; if(isset($_POST['submit'])){if(strlen($_POST['textinput']) < 2)) {$errormessage = 'too short';}else{$_SESSION['newusername'] = $textinput; //setup a new session for the new username to be used above.}}?>請注意,引用的兩組代碼在同一頁中。發生的情況是該名稱仍然顯示以前的名稱,據說已被覆蓋。我嘗試刷新頁面但它仍然沒有改變,我需要再次提交(第二次)以顯示新名稱。
1 回答

largeQ
TA貢獻2039條經驗 獲得超8個贊
您可以而且應該大大簡化您的代碼。目前這里有各種不必要的操作。從語義上考慮你想要完成什么:
如果用戶提交了他們的姓名,則使用新值更新會話。然后輸出值。
就是這樣。讓你想要完成的事情的語義指導你如何完成它。啟動會話,檢查表單發布,有條件地更新值,輸出值的當前狀態。例如:
<?php
session_start();
// update the value
if(isset($_POST['submit'])) {
$_SESSION['username'] = $_POST['textinput'];
}
// output the value
echo $_SESSION['username'];
?>
在沒有用戶名的情況下,您可能想要添加一個合理的默認值。那就像:
<?php
session_start();
// set a default value
if (!isset($_SESSION['username'])) {
$_SESSION['username'] = "Default User";
}
// update the value
if(isset($_POST['submit'])) {
$_SESSION['username'] = $_POST['textinput'];
}
// output the value
echo $_SESSION['username'];
?>
- 1 回答
- 0 關注
- 126 瀏覽
添加回答
舉報
0/150
提交
取消