页面之间的会话变量丢失[重复]

Posted

技术标签:

【中文标题】页面之间的会话变量丢失[重复]【英文标题】:Session variables lost between pages [duplicate] 【发布时间】:2014-11-06 08:06:42 【问题描述】:

在一个页面中,两个变量在一个 URL 中传递。

在第二页中,这些变量被初始化。提交时,新页面打开。问题就在这里,我无法恢复会话变量。

脚本指示错误(未定义的索引)。

提前感谢您的帮助。

这里是代码:

首页

<?php
$requete_cours="SELECT COURS.SIGLE AS SIGLE, ANNEE FROM COURS, MODULE WHERE           COURS.ID_MODULE = MODULE.ID_MODULE and ID_PERSONNE = $userid";
//$requete_cours;   
$res = mysqli_query($cxn, $requete_cours);
echo (mysqli_error ($cxn));
while($ligne = mysqli_fetch_array($res))
echo '<a href="professeur_absences.php?classe='.$ligne['ANNEE'].'&amp;cours='.$ligne['SIGLE'].'">';
echo $ligne['ANNEE'].' - '.$ligne['SIGLE'].'</a>';
echo '<br/>';
   
?>  

第二页

$_SESSION['classe'] = $_GET['classe'];
$_SESSION['cours'] = $_GET['cours'];

第三页

if(isset($_REQUEST['afficher']))
    $semaine = $_REQUEST['semaine'];
    $classe = $_SESSION['classe'];
    $cours = $_SESSION['cours'];
    $_SESSION['semaine'] = $semaine;
    $requete_cours_id = "SELECT ID_COURS FROM COURS WHERE SIGLE = $cours";
    //echo $requete_cours;  
    $res = mysqli_query($cxn, $requete_cours_id);
    echo (mysqli_error ($cxn));
    $coursId = mysqli_fetch_array($res);

【问题讨论】:

你的页面是用session_start() 开始的吗?在您的示例中看不到这个 session_start 已初始化,一直报错。 有时,您可能会将 cookie 路径设置为不存在的目录。检查 phpinfo、session、session.cookie_path。如果不是主值(即“/”) - 将其更改为您需要的目录或重置为默认值(即“/”)。还要检查 session.save_path 并执行与上述相同的操作。 【参考方案1】:

您必须通过在每个脚本的开头调用session_start() 来初始化会话。确保这始终是第一行,因为session_start() 发送标头。

找几个examples on basic usage in the PHP docs。

【讨论】:

session_start 已初始化,一直报错。

以上是关于页面之间的会话变量丢失[重复]的主要内容,如果未能解决你的问题,请参考以下文章

页面之间的 PHP 会话丢失 - 行为因服务器而异

会话变量不会延续到其他页面 [重复]

Rails 仅在生产时才在页面重新加载时丢失会话变量 current_user_id(React 16.13、Rails 6、Heroku)

每当我重新加载页面时,仍会设置取消设置 PHP 会话变量 [重复]

php检索会话变量以限制对页面的访问[重复]

PHP 会话变量没有传递到我的登录页面,但会话 ID 是