2017-01-31 83 views
0

我試圖在showName div中顯示更新的值,但我的網站僅在註銷並重新登錄後纔會顯示更新值PHP無法顯示更新的值

  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); 
    }); 

}); 
+1

** WARNING **:當使用'mysqli'你應該使用[參數化查詢(http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **不要**使用字符串插值或連接來完成此操作,因爲您創建了嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 **絕不**將'$ _POST'或'$ _GET'數據直接放入查詢中,如果有人試圖利用您的錯誤,這會非常有害。 – tadman

+1

提示:如果你從'$ _SESSION'拉取數據,那麼你必須更新它,如果你在數據庫中改變它。 – tadman

+0

@tadman我實際上有一個爲'$ _POST'使用'trim()','stripslashes()'和'htmlspecialchars()'的函數。我想知道如何在更新數據庫的同時更新'$ _SESSION'? –

回答

0

您必須在數據庫更新後將新用戶名添加到會話中。 $_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(); ?>