我对php会话变量声明有疑问。
我有两个php文件。 1. head.php 2. body.php
head.php
session_start();
$id = $_Session['id'];
$name = $_Session['name'];
some other text like include js include css etc.
body.php
include 'head.php';
echo $id;
echo $uid;
这是对的吗?或者我是否也需要在 body.php 文件中添加session_start();
。
答案 0 :(得分:4)
<强> TL; DR 强>
在头文件中调用该函数后,无需再次调用该函数。
哦,它是$_SESSION
,而不是$_Session
如果包含多个文件,在哪里声明session_start?
将任何输出发送到浏览器之前。别的都无所谓。在此之前可以有数百个PHP代码行,只要它们不发送任何可以在此之后调用session_start();
的输出。
显然在此之前你不会有SESSION值:)
请详细说明我不明白
在调用echo
之前,不要session_start()
或打印等任何内容,甚至不要在PHP标记之外。不要在PHP标记之前放置任何html或空格。在调用该函数之前,绝对不应该向浏览器发送任何内容。
错误使用
<html>
<?php
session_start();
?>
正确用法
<?php
blahblahblah(); // or nothing
session_start();
echo "<html>";
?>
答案 1 :(得分:1)
此外,如果您将head.php包含在许多php文件中,则应先检查会话,然后再启动会话。否则你会收到错误。
if(session_id())
{
// session has been started
}
else
{
// session has NOT been started
session_start();
}
您当前的代码没问题,会话开始应该在head.php本身