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

我正在创建一个个人资料页面,可以在其中编辑用户名。我似乎无法弄清楚如何在成功编辑后更新显示在首页的用户名(即 Hi Kana!)。


该名称是使用我页面顶部的会话变量$_SESSION['username']生成的


<?php

session_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.

}

}

?>

请注意,引用的两组代码在同一页中。


发生的情况是该名称仍然显示以前的名称,据说已被覆盖。我尝试刷新页面但它仍然没有改变,我需要再次提交(第二次)以显示新名称。


慕后森
浏览 96回答 1
1回答

largeQ

您可以而且应该大大简化您的代码。目前这里有各种不必要的操作。从语义上考虑你想要完成什么:如果用户提交了他们的姓名,则使用新值更新会话。然后输出值。就是这样。让你想要完成的事情的语义指导你如何完成它。启动会话,检查表单发布,有条件地更新值,输出值的当前状态。例如:<?phpsession_start();// update the valueif(isset($_POST['submit'])) {&nbsp; &nbsp; $_SESSION['username'] = $_POST['textinput'];}// output the valueecho $_SESSION['username'];?>在没有用户名的情况下,您可能想要添加一个合理的默认值。那就像:<?phpsession_start();// set a default valueif (!isset($_SESSION['username'])) {&nbsp; &nbsp; $_SESSION['username'] = "Default User";}// update the valueif(isset($_POST['submit'])) {&nbsp; &nbsp; $_SESSION['username'] = $_POST['textinput'];}// output the valueecho $_SESSION['username'];?>
打开App,查看更多内容
随时随地看视频慕课网APP