【问题标题】:PHP - Session not storing variable valuesPHP - 会话不存储变量值
【发布时间】:2017-06-18 15:07:38
【问题描述】:

我有一个非常简单的 PHP 脚本,它获取 XML 的值并将其保存在 $_SESSION 中。但是,当页面更改并且我想检索此值时,它们是空的。这是获取值的方法:

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");
}

这里是应该显示值的文档(“Temperatura.php”):

<?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>

在第一个文件中,值是正确的,我用回显检查了它。

【问题讨论】:

  • 你什么时候打电话给recollirDades()?因为我看不到它在哪里被调用。
  • 对不起,忘了把方法调用放在那里,在脚本的开头
  • 您在日志文件中没有看到任何错误吗?
  • 你的 if 检查 isset($_REQUEST["LocalitatForm"]) 是否返回 true?
  • 是的,似乎不允许对“SimpleXMLElement”进行序列化。也许我应该在将 XML 节点的值存储到 $_SESSION 之前进行某种转换?

标签: php html


【解决方案1】:

好的,我找到了问题所在。您不能立即将 XML 节点的值存储在 $_SESSION 中。在这种情况下,我将其转换为字符串。所以方法的代码是这样的:

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");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    相关资源
    最近更新 更多