2016-02-09 2 views
0

У меня есть сомнение относительно объявления переменной сеанса php.где объявить session_start, если включено несколько файлов?

У меня есть два файла 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; 

это правильно? или мне нужно добавить session_start(); в body.php файл также.

ответ

3

TL; DR

Вам не нужно вызвать функцию еще раз после того, как вы назвали его в файле заголовка.

И О, это $_SESSION, не $_Session

где объявить session_start если несколько файлов включены?

Перед тем как отправить любой вывод в браузер. Остальное не важно. До этого могут быть сотни строк кода PHP, пока они не отправляют какой-либо вывод, после чего вы можете позвонить session_start();.

Очевидно, что вы не будете иметь значения SESSION до этого :)

Просьба подробно я не понял

Не echo или печать и т.д. ничего перед вызовом session_start(), даже за пределами PHP теги. Не помещайте никакие html или пробелы перед тегами PHP. Абсолютно ничего не следует отправлять в браузер, прежде чем вы вызовете эту функцию.

Неправильное использование

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

Право использования

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

Просьба подробно я не понял. – Ironic

+0

неправильный. если вы включили f1.php и f1.php, то session_start(), то вы включаете f2.php и f2.php также выполняет session_start(), вы получите сообщение об ошибке/предупреждении о том, что сеанс уже запущен. если вы не скрываете их с error_reporting() ofc – hanshenrik

+0

@hanshenrik Вызов 'session_start();' два раза ничего не перезаписывает. 'session_start - начать новый или возобновить существующий сеанс' И никто не предложил им использовать его дважды. –

1

Кроме того, если вы включаете ваш head.php во многих PHP файлы, которые вы должны проверить сессии первого, а затем начать сеанс. в противном случае вы получите ошибку.

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

Ваш текущий код в порядке, начало сеанса должна быть в head.php сама

Смежные вопросы