Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
会话无法使用PHP_Php_Session - Fatal编程技术网

会话无法使用PHP

会话无法使用PHP,php,session,Php,Session,我的网站在访问时不会启动会话,我不知道为什么,但我的网站是这样工作的: <?php session_start(); $title = "Home"; include("include/header.php"); include("include/functions.php"); ?> ...HTML stuff here... <?php include("footer.php"); ?> …这里的HTML内容。。。 但是当我检查Cook

我的网站在访问时不会启动会话,我不知道为什么,但我的网站是这样工作的:

<?php

session_start(); 

$title = "Home"; 

include("include/header.php");
include("include/functions.php"); 

?>

...HTML stuff here...

<?php 

include("footer.php"); 

?>

…这里的HTML内容。。。
但是当我检查Cookies(Firefox的插件)时,没有启动任何会话。。。我使用了session_regenate_id();但它根本不起作用

它无法登录,因为没有会话,我的网站中没有任何会话_destroy(),只有在注销中

但有趣的是,当我登录(还没有刷新或导航)然后点击注销按钮时,我的网站上有一个会话,然后当我再次登录时,它告诉我我已登录,但如果我登录并导航或刷新,它不会告诉我我已登录,因为没有会话

注销:

<?php

session_start();
session_destroy();

setcookie("cookie-name", "", time()-60, "", "", 0);

header("Location: ../index.php");

exit;

?>


我该怎么办?

在访问和使用会话的每个文件的开头必须有
会话\u start()
。名称有误导性,
session\u start()
实际上并不启动新会话,而是初始化PHP会话菜单。

您必须在正在访问和使用会话的每个文件的开头都有
session\u start()
。名称有误导性,
session\u start()
实际上并不启动新会话,而是初始化PHP会话菜单。

不确定它是否相关,但有一个奇怪的PHP怪癖,要求会话\u start()位于
的正下方,不确定它是否相关,但是有一个奇怪的PHP怪癖,要求SESSION_START()位于
的正下方,这可能是因为您在给出的两个示例中都没有设置会话,您必须有一行类似于下面的行才能真正创建会话,然后要访问所有后续页面上的会话变量,需要session_start()


这可能是因为您在所给出的任何一个示例中都没有设置会话,您必须有下面这样一行来实际创建会话,然后在需要会话的所有后续页面上访问会话变量


它看起来不像您在会话或cookie中设置的任何内容

如果要在会话中传递信息,需要在$\u会话变量中指定必要的值

例如,在主页上,您可以执行以下操作:

<?php
session_start();
$_SESSION['myVariable'] = "my text";
?>

然后在随后的任何页面上,您都可以访问已设置的变量

<?php
session_start();
echo $_SESSION['myVariable'];  //This will print "my text"
?>

它看起来不像会话或cookie中的任何设置

如果要在会话中传递信息,需要在$\u会话变量中指定必要的值

例如,在主页上,您可以执行以下操作:

<?php
session_start();
$_SESSION['myVariable'] = "my text";
?>

然后在随后的任何页面上,您都可以访问已设置的变量

<?php
session_start();
echo $_SESSION['myVariable'];  //This will print "my text"
?>



您使用的是什么错误报告级别?您使用的是什么错误报告级别?我也尝试过,但似乎什么都没有。如果问题没有解决,为什么这是公认的答案?谁说问题没有解决?如果它被接受,那意味着他们认为它有帮助。下次在否决OP指出的最佳答案之前,请三思而后行。@bpterson76我确实希望被接受的答案能够解决问题中的问题。此外,我对此投了反对票,因为我正在寻找解决同一问题的方法,但这并没有解决它。否决票是指其他人以更多的票数查看答案。我也尝试过,也尝试过var_dump($_SESSION),但似乎什么都没有。如果问题没有解决,为什么这是公认的答案?谁说问题没有解决?如果它被接受,那意味着他们认为它有帮助。下次在否决OP指出的最佳答案之前,请三思而后行。@bpterson76我确实希望被接受的答案能够解决问题中的问题。此外,我对此投了反对票,因为我正在寻找解决同一问题的方法,但这并没有解决它。下一票表示其他人会以更多的票数查看答案。index.php、login.php、register.php在包含header.php和其他文件之前,在最开始就有session_start()。index.php、login.php、register.php有session_start()在开始之前,它包括header.php和其他文件。当我想登录时,它会写入会话:$\u session['USER']=$row['username'];但是在输出中,它不工作,会话根本不工作。您是否检查了$row['username']是否包含值?当我要登录时,它会写入会话:$\u session['USER']=$row['username'];但是在输出中,它不起作用,会话根本不起作用。您是否检查过$row['username']是否包含一个值?我知道如何进行会话,如果在会话开始()之后写入会话,它就不起作用。我知道如何进行会话,如果在会话开始()之后写入会话,它就不起作用