2017-01-31 3 views
0

Ich versuche, den aktualisierten Wert in showName div anzuzeigen, aber meine Website zeigt nur den aktualisierten Wert erst nach dem Abgemeldet und erneut angemeldet.PHP kann keine aktualisierten Werte anzeigen

  1. Benutzernamen durch Drücken der Taste saveName aktualisieren.
  2. erfolgreich aktualisiert Benutzername in PHPMyAdmin users Tabelle.
  3. showName div zeigt immer noch den alten Benutzernamen an. Auch wenn ich die Seite aktualisiere.

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

** WARNUNG **: Bei der Verwendung von 'mysqli' Sie [parametrisierte Abfragen] verwenden sollten (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) und ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), um Benutzerdaten zu Ihrer Abfrage hinzuzufügen. ** Verwenden Sie NICHT ** String-Interpolation oder Verkettung, um dies zu erreichen, weil Sie einen schwerwiegenden [SQL injection bug] erstellt haben (http://bobby-tables.com/). ** NIEMALS ** $ _POST 'oder' $ _GET' Daten direkt in eine Abfrage einfügen, es kann sehr schädlich sein, wenn jemand versucht, Ihren Fehler auszunutzen. – tadman

+1

Hinweis: Wenn Sie Daten aus dem '$ _SESSION' ziehen, müssen Sie diese ebenfalls aktualisieren, wenn Sie sie in der Datenbank ändern. – tadman

+0

@tadman Ich habe tatsächlich eine Funktion, die 'trim()', 'stripslashes()' und 'htmlspecialchars()' für '$ _POST' verwendet. Ich frage mich, wie man '$ _SESSION' aktualisieren kann, wenn ich die Datenbank gleichzeitig aktualisiere? –

Antwort

0

Sie müssen den neuen Benutzernamen in die Sitzung einfügen, sobald er in der Datenbank aktualisiert wurde. $_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(); ?> 
Verwandte Themen