第一页(inputform1test.php)
<?php require_once('Connections/Project.php'); ?>
<?php
if (!isset($_SESSION)) {
session_start();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Input (Test)</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="inputdisplaytest.php">
<p>Name
<input type="text" name="name" id="textfield" />
</p>
<p>Text
<input type="text" name="text" id="textfield2" />
</p>
<p>
<input type="submit" name="button" id="button" value="Submit" />
</p>
</form>
</body>
</html>
第二页(inputdisplaytest.php) 测试它是否在第二页(inputdisplaytest.php)中工作
<?php include('Connections/Project.php'); ?>
<?php
if (!isset($_SESSION)) {
session_start();
}
$_SESSION['name']= $_POST['name'];
$_SESSION['text']= $_POST['text'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Display Input (Test)</title>
</head>
<body>
<table width="200" border="0">
<tr>
<td><?php echo $_SESSION['name']?></td>
<td><?php echo $_SESSION['text']?></td>
</tr>
</table>
<a href="inputdisplaytest_2.php">inputdisplaytest_2.php</a>
</body>
</html>
第三页(inputdisplaytest2.php) 这是我收到错误的部分
<?php include('Connections/Project.php'); ?>
<?php
if (!isset($_SESSION)) {
session_start();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Display Input (Test)</title>
</head>
<body>
<table width="200" border="0">
<tr>
<td><?php echo $_SESSION['name']?></td>
<td><?php echo $_SESSION['text']?></td>
</tr>
</table>
<p><a href="inputdisplaytest.php">inputdisplaytest.php</a></p>
</body>
</html>
我点击查看它是否仍在第二页上工作。 (哪个不行) 当我通过浏览器点击后退按钮时,当我转到超链接和“文档已过期”时,我得到了undefinex索引问题。
如何让会话变量返回/不过期? 任何帮助将不胜感激。
答案 0 :(得分:1)
你不需要
if (!isset($_SESSION)) {
session_start();
}
在脚本开始时使用session_start()。甚至在那些包括之前。
您无法在session_start之前打印任何内容。检查日志中的错误。
答案 1 :(得分:0)
我相信您发现此错误的原因是因为您正在发布表单数据。当您发布表单数据时,它会在您单击“提交”时发送。返回表单将为您提供重新加载表单数据的消息。如果将其更改为GET,则表单数据应该坚持下去。
答案 2 :(得分:0)
删除您用来检查会话是否已设置的 if 语句,因为在您的情况下, session_start()永远不会被执行,由于 $ _ SESSION 数组始终由 PHP 设置,除非您执行取消设置($ _ SESSION),这将弃用,这将取消整个 $ _ SESSION 未设置($ _ SESSION),因为这将禁用通过 $ _ SESSION 超全局数组注册会话变量。所以:
if(!isset($_SESSION)){
session_start();
}
变为:
session_start();
这解决了未定义索引错误的问题。
要在导航回处理表单的页面时解决浏览器后退按钮错误,您必须输入:
session_cache_limiter('private_no_expire');
在 second.php 文件中的 session_start()之前,这行代码避免&#34;页面已过期&#34; 警告,您可以在avoid "Page Has Expired" warnings找到更多解释。
最后,在 second.php 文件中的 session_start()之后,添加以下代码:
if(isset($_POST['button'])){
$_SESSION['name']= $_POST['name'];
$_SESSION['text']= $_POST['text'];
}
检查表单是否已提交,如果是,您可以处理数据并显示页面,否则您只需使用会话中以前存储的数据显示页面。
答案 3 :(得分:0)
我自己也有这个问题,会话变量没有传递,最近遇到了答案。对不起,我不能相信在之前的帖子中回复此帖的人,因为我再也找不到这个帖子了。简单地说,有时候,特别是在共享主机上,会话不会存储在正确的位置。您可以通过强制将会话保存在特定位置来解决此问题。我的解决方案是:
ini_set('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/session'));
我的会话文件位于域的根文件夹中。
然后我开始会议:session_start();
然后我确保此人已登录:
if(isset($_SESSION["your_variable"])) {
$your_variable = $_SESSION["your_variable"];
//add any other session variables in the same manner
//be sure to rename "your_variable" with the name of your variable
}else{
header('Location: signin.php');
exit;
}
如果未登录或未找到会话变量,则底部的标题重定向是该人员前往的位置,以便会话变量传递到此页面。注意退出,它可以使您的代码更安全。所以我的第一行代码是:
ini_set('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . `'/session'));`
session_start();
if(isset($_SESSION["your_variable"])) {
$your_variable = $_SESSION["your_variable"];
}else{
header('Location: signin.php');// or wherever your sign in happens to be
exit;
}
我希望这会有所帮助。