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

问题描述 投票:-2回答:1

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

该名称是使用页面顶部的会话变量生成的,$ _ SESSION ['用户名']

<?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'])) {
    $_SESSION['newusername'] = $textinput; //setup a new session for the new username to be used above.
}
?>

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

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

php variables session submit
1个回答
0
投票

您可以并且应该急剧地简化您的代码。当前,这里有各种不必要的操作。从语义上考虑您要完成的工作:

如果用户提交了他们的姓名,请使用新值更新会话。然后输出值。

就是这样。让您想要完成的事情的语义指导您如何完成它。启动会话,检查表单发布,有条件地更新值,输出值的当前状态。例如:

<?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'];
?>
© www.soinside.com 2019 - 2024. All rights reserved.