为什么会话变量没有存储在我的代码的PHP中?

时间:2015-01-03 19:43:45

标签: php

我的两个代码都有错误,其中会话变量未在session2.php页面中执行,这些都是错误:

  

注意:未定义的索引:第10行的C:\ xampp \ htdocs \ php \ vehiclebazar \ session2.php中的favcolor   最喜欢的颜色是。
  注意:未定义的索引:第11行的C:\ xampp \ htdocs \ php \ vehiclebazar \ session2.php中的favanimal   最喜欢的动物是。

session1.php:

<?php
// Start the session
session_start();
?>
<!DOCTYPE html> //html type
<html>
<body>

<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>

</body>
</html>

第二页是

session2.php:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>

</body>
</html>

3 个答案:

答案 0 :(得分:6)

这是根据您的初始/原始帖子而不是将其标记为编辑,包括您所做的所有其他编辑。

您的编辑仍然包含$'_SESSION["favcolor"]$之间的引用_


您看到这些'$'_SESSION不能包含带引号的美元符号。

所有这些都需要一次性读作$_SESSION,这就是你收到这些警告的原因。

阅读这篇超级全球

这些超全球变量是:

$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV

此外,在您的第一个文件中,您有

<?php//opening of php
如果设置error reporting,那么单独就会抛出错误。删除//opening of php或将其放在第二行:

<?php 
//opening of php

有问题的错误:

  

解析错误:语法错误,意外'$ _SESSION'(T_VARIABLE)......


在测试代码时以及在修复所有这些错误之后,确实发布了

Favorite color is green.
Favorite animal is cat.

在第二个文件中。

你应习惯不要让评论如此接近可执行代码, 尤其 开头<?php代码。

另一个是session_start();//where session start,它不会抛出/导致错误,但它只是令人困惑。


您还可以检查两个会话是否都已设置:

if(isset($_SESSION["favcolor"]) && isset($_SESSION["favanimal"])){
    echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
    echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
}

else{
    echo "Sessions are not set.";
}

另外,既然你说你是通过localhost这样做的,那么确保sessions / tmp文件夹是可写的并且设置了正确的写权限。

使用:

<?php 
phpinfo();

在单独的文件中查看您的会话设置的设置。


将错误报告添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。

答案 1 :(得分:0)

你应该使用 $ _ SESSION [&#34; favcolor&#34;] 而不是&#39; $&#39; _SESSION [&#34; favcolor&#34;]

http://php.net/manual/en/language.variables.superglobals.php

答案 2 :(得分:0)

'$'_SESSION["favcolor"] = "green";
'$'_SESSION["favanimal"] = "cat";
echo "Favorite color is " . '$'_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . '$'_SESSION["favanimal"] . ".";

在PHP中,变量应该看起来像$var,而不是'$'var。因此,使用'$'_SESSION["favcolor"]'$'_SESSION["favanimal"]代替$_SESSION["favcolor"]$_SESSION["favanimal"]

进一步阅读PHP变量: http://php.net/manual/en/language.variables.basics.php