即使我有 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() [function.session-start]:无法发送会话 cookie 错误