我正在创建一个个人资料页面,可以在其中编辑用户名。我似乎无法弄清楚如何在成功编辑后更新显示在首页的用户名(即 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条经验 获得超7个赞
您可以而且应该大大简化您的代码。目前这里有各种不必要的操作。从语义上考虑你想要完成什么:
如果用户提交了他们的姓名,则使用新值更新会话。然后输出值。
就是这样。让你想要完成的事情的语义指导你如何完成它。启动会话,检查表单发布,有条件地更新值,输出值的当前状态。例如:
<?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 关注
- 95 浏览
添加回答
举报
0/150
提交
取消