【问题标题】:PHP cannot display updated valuesPHP 无法显示更新的值
【发布时间】:2017-06-16 11:27:12
【问题描述】:

我试图在showName div 中显示更新后的值,但我的网站仅在注销并再次登录后才显示更新后的值

  1. saveName 按钮更新用户名。
  2. 成功更新 PHPMyAdmin users 表中的用户名。
  3. showName div 仍然显示旧用户名。即使我刷新页面。

index.php

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

edit.php

<?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(); 
?>

script.php

$("#saveName").click( function(e) {
    e.preventDefault();
    e.stopPropagation();

    $.post("edit.php",
    $("#editName").serializeArray(),
         function(info){ $("#message").html(info);
    });

});

【问题讨论】:

  • 警告:当使用mysqli 时,您应该使用parameterized queriesbind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug切勿$_POST$_GET 数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
  • 提示:如果您从$_SESSION 提取数据,那么如果您在数据库中更改它,您也必须更新它。
  • @tadman 我实际上有一个函数使用trim()stripslashes()htmlspecialchars() 来表示$_POST。我想知道当我同时更新数据库时如何更新$_SESSION
  • 这种方法完全不够用,它不能正确防止注射。使用带有占位符值的准备好的语句。此外,要更新 $_SESSION,通常您只需分配给它。您最初是如何设置该值的?那样。

标签: php jquery mysql session


【解决方案1】:

在数据库中更新后,您必须将新用户名放入会话。 $_SESSION["username"] = $your_new_username

<? 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(); ?>

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2014-09-05
    • 1970-01-01
    • 2021-01-21
    • 2021-08-16
    相关资源
    最近更新 更多