2017-01-31 20 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> 

个人设定

<?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(); ?> 
関連する問題