Php 如果包含多个文件,在何处声明会话\u开始?

Php 如果包含多个文件,在何处声明会话\u开始?,php,Php,我对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. include 'head.php'; echo $id; echo $uid; body.php session_start(); $id = $_S

我对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.
include 'head.php';
echo $id;
echo $uid;
body.php

session_start();
$id = $_Session['id'];
$name = $_Session['name'];
some other text like include js include css etc.
include 'head.php';
echo $id;
echo $uid;
这是正确的吗?或者我需要添加
session_start()也在body.php文件中。

TL;DR

在头文件中调用函数后,无需再次调用该函数

哦,这是
$\u会话
,而不是
$\u会话

如果包含多个文件,在何处声明会话\u开始

将任何输出发送到浏览器之前。没有别的事了。在此之前可能有数百行PHP代码,只要它们不发送任何您可以调用的输出
session_start()之后

显然,在此之前您不会有会话值:)


请详细说明我不明白

在调用
session\u start()
之前,不要回显或打印任何内容,甚至不要在PHP标记之外。也不要在PHP标记前放置任何html或空格。在调用该函数之前,绝对不应该向浏览器发送任何内容

错误用法

<html>
<?php
session_start();
?>

正确用法

<?php
blahblahblah();   // or nothing
session_start();
echo "<html>";
?>

TL;DR

在头文件中调用函数后,无需再次调用该函数

哦,这是
$\u会话
,而不是
$\u会话

如果包含多个文件,在何处声明会话\u开始

将任何输出发送到浏览器之前。没有别的事了。在此之前可能有数百行PHP代码,只要它们不发送任何您可以调用的输出
session_start()之后

显然,在此之前您不会有会话值:)


请详细说明我不明白

在调用
session\u start()
之前,不要回显或打印任何内容,甚至不要在PHP标记之外。也不要在PHP标记前放置任何html或空格。在调用该函数之前,绝对不应该向浏览器发送任何内容

错误用法

<html>
<?php
session_start();
?>

正确用法

<?php
blahblahblah();   // or nothing
session_start();
echo "<html>";
?>

此外,如果您将head.php包含在许多php文件中,则应首先检查会话,然后启动会话。否则你会得到错误

     if(session_id())
 {
      // session has been started
 }
 else
 {
      // session has NOT been started
      session_start();
 }

您当前的代码还可以,会话开始应该在head.php本身中

如果您将head.php包含在许多php文件中,那么您应该首先检查会话,然后启动会话。否则你会得到错误

     if(session_id())
 {
      // session has been started
 }
 else
 {
      // session has NOT been started
      session_start();
 }

您当前的代码还可以,会话开始应该是head.php本身

请详细说明我不理解。错误。如果您包括f1.php和f1.php执行会话_start(),那么您包括f2.php和f2.php也执行会话_start(),您将收到一个错误/警告,说明会话已经启动。除非你用错误报告()来隐藏它们ofc@hanshenrik调用
session_start()两次不会覆盖任何内容
session_start-启动新会话或恢复现有会话
,也没有人建议他们使用它两次。您不需要添加
session_start()
body.php
中,如果您在@HankyPanky中包含
head.php
“我是否需要在body.php文件中添加session_start()”,“在您向浏览器发送任何输出之前,其他什么都不重要”,是的,有一件事很重要,不管session_start()是否已被调用。请详细说明我不明白,错了。如果您包括f1.php和f1.php执行会话_start(),那么您包括f2.php和f2.php也执行会话_start(),您将收到一个错误/警告,说明会话已经启动。除非你用错误报告()来隐藏它们ofc@hanshenrik调用
session_start()两次不会覆盖任何内容
session_start-启动新会话或恢复现有会话
,也没有人建议他们使用它两次。您不需要添加
session_start()
body.php
中,如果您在@HankyPanky中包含
head.php
“我是否需要在body.php文件中添加session_start()”,“在您向浏览器发送任何输出之前,其他什么都不重要”,是的,有一件事很重要,不管session_start()是否已被调用。