为了账号安全,请及时绑定邮箱和手机立即绑定

$_SESSION 显示在点击提交一次后不反映更改

$_SESSION 显示在点击提交一次后不反映更改

PHP
慕后森 2023-04-21 10:03:24
我正在创建一个个人资料页面,可以在其中编辑用户名。我似乎无法弄清楚如何在成功编辑后更新显示在首页的用户名(即 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'];

?>


查看完整回答
反对 回复 2023-04-21
  • 1 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信