2017-06-18 4 views
0

Ich habe ein sehr einfaches PHP-Skript, wo es Werte eines XML nimmt und speichert es in $ _SESSION. Wenn die Seite jedoch geändert wird und ich diese Werte abrufen möchte, sind sie leer. Hier ist die Methode, die die Werte annimmt:PHP - Sitzung speichert keine Variablenwerte

session_start(); 
if (isset($_REQUEST["LocalitatForm"])) { 
recollirDades(); 
} 

function recollirDades(){ 
    $localitat = $_REQUEST["localitat"]; 
    $data = $_REQUEST["data"]; 
    $min = 0; 
    date_format($data, 'Y-m-d'); 
    $xmlDoc = simplexml_load_file("../data/".$localitat.".xml"); 
    foreach ($xmlDoc->prediccion->dia as $dia){  
     if($dia['fecha'] == $data){ 
      $min = $dia->temperatura->minima; 
      $max = $dia->temperatura->maxima; 
     } 
    } 

    $_SESSION["localitat"] = $localitat; 
    $_SESSION["data"] = $data; 
    $_SESSION["min"] = $min; 
    $_SESSION["max"] = $max; 
    header("location: ../views/Temperatura.php"); 
} 

Und hier wird der doc („Temperatura.php“), die die Werte zeigen sollte:

<?php 
session_start(); 
echo $_SESSION["localitat"]." ". $_SESSION["data"] . " " .   
$_SESSION["min"]; 
$localitat = $_SESSION["localitat"]; 
$data = $_SESSION["data"]; 
$min = $_SESSION["min"]; 
$max = $_SESSION["max"]; 
?> 
<html> 
<head> 
    <title>Temperatura</title> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
</head> 
<body> 
     <div id='data'> 
     Localitat: <?php echo ucfirst($localitat)?><br> 
     Data: <?php echo $data ?><br> 
     Temperatura mínima: <?php echo $min ?>ºC<br> 
     Temperatura màxima: <?php echo $max ?>ºC<br> 
    </div> 
    <a href='../index.php'><input type='button' value='Tornar a buscar'>   
    </a> 

</body> 
</html> 

In der ersten Datei, sind die Werte korrekt Ich habe es mit einem Echo überprüft.

+0

Wenn rufen Sie 'recollirDades()'? Weil ich nicht sehen kann, wo es heißt. – Jonathan

+0

Sorry, habe vergessen, den Methodenaufruf dorthin zu setzen, ist am Anfang des Skripts –

+0

Siehst du keinen Fehler in den Protokolldateien? – CoderSam

Antwort

0

Okay, ich habe das Problem gefunden. Sie können den Wert eines XML-Knotens nicht direkt in $ _SESSION speichern. In diesem Fall trage ich es als String. So ist der Code der Methode würde so aussehen:

session_start(); 
if (isset($_REQUEST["LocalitatForm"])) { 
recollirDades(); 
} 

function recollirDades(){ 
$localitat = $_REQUEST["localitat"]; 
$data = $_REQUEST["data"]; 
$min = 0; 
date_format($data, 'Y-m-d'); 
$xmlDoc = simplexml_load_file("../data/".$localitat.".xml"); 
foreach ($xmlDoc->prediccion->dia as $dia){  
    if($dia['fecha'] == $data){ 
     $min = (string)$dia->temperatura->minima; 
     $max = (string)$dia->temperatura->maxima; 
    } 
} 

$_SESSION["localitat"] = $localitat; 
$_SESSION["data"] = $data; 
$_SESSION["min"] = $min; 
$_SESSION["max"] = $max; 
header("location: ../views/Temperatura.php"); 
}