2017-06-10 10 views
0

Ich möchte meine Sitzungsvariable aktualisieren, aber sie wird jedes Mal zurückgesetzt, wenn ich die Seite aktualisiere. Was soll ich tun?Sitzungsvariable wird auf Seitenaktualisierung zurückgesetzt

<?php 

session_start(); 
include_once 'connect.php'; 

$currID = $_SESSION['user_id'][0]; 
$sfName = $_SESSION['user_id'][1]; 
$smName = $_SESSION['user_id'][2]; 
$slName = $_SESSION['user_id'][3]; 

$fullName = $_POST['fullName']; 
list($vfName, $vmName, $lvName) = explode('|', $fullName); 

$qEditName = "UPDATE userzavier SET fname='$vfName', mdname='$vmName', lname='$lvName' where ID='$currID'"; 
if (mysqli_query($con, $qEditName)) { 
    $sfName = $vfName; 
    $smName = $vmName; 
    $slName = $lvName; 
    echo $sfName . ' ' . $smName . ' ' . $slName; 
    } else { 
    echo "Error updating record: " . mysqli_error($con); 
    } 
    mysqli_close($con); 

?> 
+1

nicht wirklich die Frage zu verstehen. – rtfm

+0

Ich habe Sitzungsvariable (Array) aktualisiert, aber es wird zurückgesetzt, wenn ich die Seite aktualisiere ... – Derry

Antwort

0

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

Vielen Dank ... es ist wirklich funktioniert ...... – Derry

+0

Achten Sie darauf, es richtig zu markieren, so dass die Frage nicht als unbeantwortet gelassen wird – Rasclatt

-1

prüfen Sitzungsstatus vor session_start() versuchen:

 if (session_status() == PHP_SESSION_NONE) { 
       session_start(); 
     } 

statt:

 session_start(); 
+0

das ist nicht was Session-Start tut – rtfm

+0

session_start - Starten Sie neue oder ** fortsetzen bestehende ** Sitzung. http://php.net/manual/en/function.session-start.php – rtfm

+0

Okay Entschuldigung, ich war auf diese Antwort https://stackoverflow.com/questions/6249707/check-if-php-session-has basiert -ready-started? rq = 1 Und es scheint, dass die Möglichkeit, dass session_start() ausgeführt werden kann, während eine Sitzung bereits existiert, das Problem verursachen kann. Also nahm ich an, dass es es überschrieb. –

Verwandte Themen