$_SESSION 显示在点击提交一次后不反映更改
$_SESSION display not reflecting changes after hitting submit once
我正在创建一个可以编辑用户名的个人资料页面。我似乎无法弄清楚如何在成功编辑后更新首页显示的用户名(即 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.
}
}
?>
请注意,引用的两组代码在同一页中。
实际情况是名称仍然显示以前的名称,据说已被覆盖。我尝试刷新页面还是没有变化,我需要再次提交(第2次)以显示新名称。
您可以而且应该彻底 简化您的代码。目前这里有各种不必要的操作。从语义上考虑你想要完成什么:
If the user submits their name, update the session with the new value. Then output the value.
就是这样。让你想要完成的事情的语义指导你如何完成它。启动会话,检查表单 post,有条件地更新值,输出值的当前状态。例如:
<?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'];
?>
我正在创建一个可以编辑用户名的个人资料页面。我似乎无法弄清楚如何在成功编辑后更新首页显示的用户名(即 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.
}
}
?>
请注意,引用的两组代码在同一页中。
实际情况是名称仍然显示以前的名称,据说已被覆盖。我尝试刷新页面还是没有变化,我需要再次提交(第2次)以显示新名称。
您可以而且应该彻底 简化您的代码。目前这里有各种不必要的操作。从语义上考虑你想要完成什么:
If the user submits their name, update the session with the new value. Then output the value.
就是这样。让你想要完成的事情的语义指导你如何完成它。启动会话,检查表单 post,有条件地更新值,输出值的当前状态。例如:
<?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'];
?>