我在将会话变量的值从一个页面转移到另一个页面时遇到了问题。我在Windows 7上使用最新的XAMPP。
在这里你可以看到第一个和第二个php文件的代码。http://pastebin.com/jQdQ4i7g | http://pastebin.com/UNA7QRyu
SNAP-1

SNAP-2

在snap2中,我没有得到所有3个变量的值,我在第一页中存储如下所示:
$_SESSION['city']=$city;
$_SESSION['movie']=$movie;
$_SESSION['date']=$date;第二页中的抓取操作如下:
$city = $_SESSION['city'];
$city = $_SESSION['movie'];
$city = $_SESSION['date'];那么,为什么我在第二页上没有得到这3个变量的值呢?如果您需要任何其他信息,请让我知道。谢谢。
但是正如你所看到的,这在任何页面上都可以很好地工作!为什么?
<?php
$username = $_SESSION['myusername'];
echo "Welcome $username";
?>发布于 2015-05-06 14:27:16
您的代码看起来像是10年前的代码。我建议使用更新的指南来学习。编程(或技术领域的任何东西)一直在变化。超过一年的“学习如何编程”指南、书籍、博客或教程可能已经过时了。MySQL在很久以前就被弃用了,意思是被杀死了,不应该再使用了。使用MySQLi或PDO。在处理用户输入时,请使用准备好的语句。如果你计划实时使用你的代码,它将会被任何新手黑客攻击,因为它充满了SQL注入。在SQL查询中使用原始的GET数据。去掉斜杠并不能真正保护你。即使在10年前,我们也使用mysql_real_escape_string。
这一点,再加上你的doctype,让我觉得你接下来的教程实在太老了。我不是文档类型专家,所以我不知道XHTML1.0是否适合使用HTML5文档类型。我只使用<!doctype HTML>。有关HTML5的更多信息,请访问:http://www.w3schools.com/html/html5_intro.asp
您的问题是您正在启动会话两次。你应该收到一个错误,所以我认为你有错误报告关闭?在开发或调试时,将错误报告设置为E_ALL以显示所有错误。这将为您节省大量的时间。这些错误的存在是有原因的,让你知道你做错了什么。我在您的代码中没有看到它,所以请检查您的php.ini文件。我见过很多脚本,他们用"error_reporting(0)“来隐藏他们的错误。这是一个糟糕的想法,而且太懒了。正确地处理错误,而不必隐藏它们。
为什么你要把所有东西都存储在$_SESSION中?如果您有一个用户填写的表单,并且您需要将该数据传递到另一个页面,则可以使用$_GET和$_POST来实现。
示例:
page1.php
<form action="page2.php" method="post">
<input type="text" name="name" />
<input type="submit" name="submit" value="Submit" />
</form>page2.php
<?php
if ( isset($_POST['name']) && ! empty($_POST['name]') ) {
echo htmlspecialchars($_POST['name'], ENT_QUOTES);
}
?>将php.ini中的错误报告级别更改为E_ALL。只使用start_session()一次!
这应该可以解决您的问题,并让您知道代码中的任何其他错误。我建议放弃MySQL,使用MySQLi。对用户接收的数据使用预准备语句。对表单使用GET或POST,而不是将所有内容都存储到会话中。如果您必须使用会话数据(即:保留数据,以便在用户浏览其他页面时不会丢失数据,例如购物车),那么您可能希望创建一个数组并将其存储在会话中,而不是大量的会话变量。
$moviedata = array( 'city' => 'Miami', 'movie' => 'Avengers', 'date' => '05/22/2015');
$_SESSION['movie_data'] = $moviedata;如果您只是将数据从表单传递到下一页,请使用GET或POST not SESSION。
希望它能指引你朝着正确的方向前进。
https://stackoverflow.com/questions/30068380
复制相似问题