von Ihrem Skript zu urteilen, aktualisieren Sie in der Datenbank, aber nicht die Sitzung zu aktualisieren . Es würde Ihnen helfen, dem Schlüssel Namen zuzuweisen, damit er lesbar ist. Sie sollten auch eine if
-Klausel verwenden, wenn Sie sich auf eine $_POST
oder $_GET
verlassen. Beachten Sie, da Sie mit benutzer gesendeten Daten zu tun haben, sollten Sie bind parameters auf Explosionswerte (ich habe das nicht in meinem Beispiel getan, aber haben Link geliefert oben):
<?php
# Start session
session_start();
# Include database
include_once('connect.php');
# Assign current values
$currID = $_SESSION['user_id'][0];
$sfName = $_SESSION['user_id'][1];
$smName = $_SESSION['user_id'][2];
$slName = $_SESSION['user_id'][3];
# Add an if here, this is not always guaranteed
if(!empty($_POST['fullName'])) {
$fullName = $_POST['fullName'];
# This explode seems strange, the input sounds like it could be reworked...
list($vfName, $vmName, $lvName) = explode('|', $fullName);
# Sql statement, this should have parameters that are bound since you are
# receiving them from $_POST, which can seriously mess up your database via injection
$qEditName = "UPDATE userzavier SET fname='$vfName', mdname='$vmName', lname='$lvName' where ID='$currID'";
# Create query
if (mysqli_query($con, $qEditName)) {
# Here is where you need to fix your script
# Assign the session, not just variable (you really
# should make the key associative, not numeric. It is
# easier to read and use if it was $_SESSION['user_id']['first_name'] or similar)
$_SESSION['user_id'][1] =
$sfName = $vfName;
$_SESSION['user_id'][2] =
$smName = $vmName;
$_SESSION['user_id'][3] =
$slName = $lvName;
echo $sfName . ' ' . $smName . ' ' . $slName;
} else {
#Display Error
echo "Error updating record: " . mysqli_error($con);
}
# Close connection
mysqli_close($con);
}
nicht wirklich die Frage zu verstehen. – rtfm
Ich habe Sitzungsvariable (Array) aktualisiert, aber es wird zurückgesetzt, wenn ich die Seite aktualisiere ... – Derry