PHP会话变量相关问题

时间:2015-05-06 05:38:34

标签: php session-variables

我在将会话变量的值从一个页面传输到另一个页面时遇到问题。我在Windows 7上使用最新的XAMPP。

在这里你可以看到第一个和第二个php文件的代码。 http://pastebin.com/jQdQ4i7g | http://pastebin.com/UNA7QRyu

SNAP-1 enter image description here SNAP-2 enter image description here

在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";
?>

1 个答案:

答案 0 :(得分:3)

您的代码看起来就像10年前一样。我建议使用更新的指南来学习。编程(或技术利基中的任何东西)一直在变化。超过一年的“学习如何编程”指南,书籍,博客或教程可能已过时。很久以前,MySQL已被弃用,意味着已被杀死,不应再使用了。使用MySQLi或PDO。处理用户输入时,请使用预准备语句。如果您计划使用您的代码,它将被任何新手黑客攻击,因为它充满了SQL注入。您在SQL查询中使用原始GET数据。条形斜线并不能真正保护你。甚至10年前,我们使用了mysql_real_escape_string。

那个,以及你的doctype,让我觉得你的后续教程非常古老。我不是doctype专家,因此我不知道XHTML 1.0是否适合使用HTML5 doctype。我只使用<!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,而不是将所有内容存储到SESSION中。如果你必须使用会话数据(即:保持数据,以便在用户浏览其他页面时不会丢失数据,如购物车),那么你可能想要创建一个数组并将其存储在会话中,而不是大量的会话变量。

$moviedata = array( 'city' => 'Miami', 'movie' => 'Avengers', 'date' => '05/22/2015');
$_SESSION['movie_data'] = $moviedata;

如果您只是将数据从表单传递到下一页,请使用GET或POST而不是SESSION。

希望能引导你朝着正确的方向前进。

相关问题