即使我有 session_start(); 我的会话变量也不会传递到我的其他页面;在所有 3 页的开头。为啥是这样?

Posted

技术标签:

【中文标题】即使我有 session_start(); 我的会话变量也不会传递到我的其他页面;在所有 3 页的开头。为啥是这样?【英文标题】:My session variables wont pass through to my other pages even though i have session_start(); at the begining of all 3 pages. why is this?即使我有 session_start(); 我的会话变量也不会传递到我的其他页面;在所有 3 页的开头。为什么是这样? 【发布时间】:2021-09-06 09:22:09 【问题描述】:

我有两种形式可以获取用户输入。形式一是 "index.php" 形成二"select.php。我使用 "options.php" 显示一些内容,我打算使用用户在显示器中输入。我面临的问题是,即使我在所有三个页面上都有 session_start(); 我的变量都没有通过。我做了一个 var_dump($_SESSION) ;echo $_SESSION; 我什至使用了 session_regenerate_id(TRUE);

index.php 会话变量

if(isset($_POST['login']))
     $_SESSION['name'] =  $_POST['name'];
     $_SESSION['surname'] = $_POST['surname']; 
     $_SESSION['email'] = $_POST['email'];

select.php 会话变量

if(isset($_POST['submit']))
   $_SESSION['checkIn'] = $_POST['checkIn'];
   $_SESSION['checkOut'] = $_POST['checkOut'];
   $_SESSION['islandList'] = $_POST['islandList']; 
 

以下是每个页面的 3 个标题

<?php 
//index.php page 1
session_start();  
?>
<?php 
   if(!isset($_POST['name'], $_POST['surname'], $_POST['email']))?>
// basic html form goes here.
<?php 
if(isset($_POST['login']))
   $_SESSION['name'] =  $_POST['name'];
   $_SESSION['surname'] = $_POST['surname']; 
   $_SESSION['email'] = $_POST['email'];
?>

<?php
//select.php    page 2
    session_start();
    echo $_SESSION['name']; // session variable does not go through
    echo $_SESSION['surname']; // session variable does not go through
    echo $_SESSION['email']; // session variable does not go through
?>



<?php
            if(isset($_POST['submit']))
                $_SESSION['checkIn'] = $_POST['checkIn'];
                $_SESSION['checkOut'] = $_POST['checkOut'];
                $_SESSION['islandList'] = $_POST['islandList']; 
            
            var_dump($_SESSION);
        ?> 

<?php 
// options.php  page 3
  session_start();
  require_once 'rateCalc.php';
?>


<?php 


echo $_SESSION; // session variables do not go through
var_dump($_SESSION); // session variables do not go through

?>

我对此还是很陌生。但从我所看到的一切来看,我无法看出我在哪里犯了错误。这发生在所有 3 个浏览器上。火狐、铬和微软边缘。 我检查了 cookie,检查了会话 ID,但它仍然无法正常工作。 另一件事是,当我尝试使用例如 echo $_SESSION['islandList'] 时,变量不会通过但如果我使用 $_POST['islandList'] 它有时作品,从我的课程和笔记中,我的印象是,在这种情况下,它不应该像那样工作。我还没有设法在网上找到解决方案。通过谷歌浏览了大约 20 个网站。

PHP SESSION INFO

【问题讨论】:

检查您的 PHP 错误日志中是否有“标头已发送”警告。这可能会干扰发送会话 cookie。 嗨,Barmar,我已经编辑了帖子,并插入了我的会话信息图像。我似乎找不到错误日志部分 您为什么希望在会话设置中找到错误日志记录设置?见***.com/questions/5127838/… “我有两个表单可以获取用户输入。表格一是“index.php”,它会变成表格二“select.php”。 - 好的,那么在这种情况下,实际发送 POST 数据 index.php 的是什么?您确实在其中检查了isset($_POST['login']),然后尝试从 $_POST 分配会话变量……但如果您从未实际提交任何表单 index.php,那么这当然行不通。 【参考方案1】:

设法解决它。完成过杀,但它不能以任何其他方式工作。

    if(isset($_POST['login']))
    $name = $_POST['name'];
    $surname = $_POST['surname'];
    $email = $_POST['email'];

    $_SESSION['name'] =  $name;
    $_SESSION['surname'] = $surname; 
    $_SESSION['email'] = $email;

      // delete 3rd ones
    $_SESSION['name'] =  $_POST['name'];
    $_SESSION['surname'] = $_POST['surname']; 
    $_SESSION['email'] = $_POST['email'];
  
  if(isset($_POST['submit']))
    $checkIn = $_POST['checkIn'];
    $checkOut = $_POST['checkOut'];
    $islandList = $_POST['islandList'];

    $_SESSION['checkIn'] = $checkIn;
    $_SESSION['checkOut'] = $checkOut;
    $_SESSION['islandList'] = $islandList;

    $_SESSION['checkIn'] = $_POST['checkIn'];
    $_SESSION['checkOut'] = $_POST['checkOut'];
    $_SESSION['islandList'] = $_POST['islandList'];
      
  

【讨论】:

以上是关于即使我有 session_start(); 我的会话变量也不会传递到我的其他页面;在所有 3 页的开头。为啥是这样?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查是不是已输入 session_start? [复制]

如何检查是不是已输入 session_start? [复制]

与 php 中的 session_start() 相关

无用的会

关于PHP session_start出现的错误

php。 session_start() [function.session-start]:无法发送会话 cookie 错误