PHP无法显示更新的值
我试图在PHP无法显示更新的值,php,jquery,mysql,session,Php,Jquery,Mysql,Session,我试图在showNamediv中显示更新值,但我的网站仅在注销并再次登录后显示更新值 按saveName按钮更新用户名 成功更新PHPMyAdminusers表中的用户名 showNamediv仍然显示旧用户名。即使我刷新页面 index.php <div id="showName"> <?php if(isset($_SESSION['userId'])){ echo $_SESSION['username']; } ?> </div>
showName
div中显示更新值,但我的网站仅在注销并再次登录后显示更新值
saveName
按钮更新用户名users
表中的用户名showName
div仍然显示旧用户名。即使我刷新页面<div id="showName">
<?php
if(isset($_SESSION['userId'])){
echo $_SESSION['username']; }
?>
</div>
<div id="message"></div>
<div> <input id="editName" name="editName" /> </div>
<button id="saveName" type="submit" >Save</button>
<?php
ob_start();
session_start();
include_once('database.php');
$validUser= $_SESSION["username"];
if(isset($_POST['editName']))
{
$username = $_POST["editName"];
if ($username =="") {
echo "Enter your full name.";
return false;
}else {
$sql = "UPDATE users SET username='$username' WHERE username='$validUser'";
if(mysqli_query($con, $sql)){
echo "Successfully Updated.";
} else{
echo "Something went wrong"; }
}
return false;
}
ob_end_flush();
?>
$("#saveName").click( function(e) {
e.preventDefault();
e.stopPropagation();
$.post("edit.php",
$("#editName").serializeArray(),
function(info){ $("#message").html(info);
});
});
在数据库中更新新用户名后,必须将其放入会话。
$\u会话[“用户名”]=$您的新用户名
<? php
ob_start();
session_start();
include_once('database.php');
$validUser = $_SESSION["username"];
if (isset($_POST['editName'])) {
$username = $_POST["editName"];
if ($username == "") {
echo "Enter your full name.";
return false;
} else {
$sql = "UPDATE users SET username='$username' WHERE username='$validUser'";
if (mysqli_query($con, $sql)) {
echo "Successfully Updated.";
$_SESSION["username"] = $username // Updating the new username to session
} else {
echo "Something went wrong";
}
}
return false;
}
ob_end_flush(); ?>
警告:当使用mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将$\u POST
或$\u GET
数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。提示:如果您正在从$\u会话
中提取数据,那么如果您在数据库中更改数据,您也必须对其进行更新。@tadman我实际上有一个使用trim()
的函数,stripslashes()
和htmlspecialchars()
用于$\u POST
。我想知道当我同时更新数据库时如何更新$\u SESSION
?这种方法完全不合适,它不能正确地防止注入。将准备好的语句与占位符值一起使用。此外,要更新会话
$\u,通常只需分配给它即可。你一开始是怎么设定这个值的?那样。