2015-01-19 4 views
1

Я новый пользователь для PHP. У меня есть работа над некоторыми php project.want какая-то помощь в отношении сеанса в php.I есть страница login.html, которая формирует действие для входа в login.js. при входе в систему имя пользователя и пароль запросили url на странице login.php для проверки имени пользователя & пароля в таблице mysql db и запуска сессии session_start() и установки $ _SESSION для имени пользователя и пароля. Если true, то переместился на домашнюю страницу с сеансом. но мой home.php содержание страницы HTML-код с этим PHP кодсвязанный с session_start() в php

<?php 
    if(!isset($_SESSION["USER"])) { 
     include ('../content/logout.php'); 
     exit(); 
    } 
?> 

у меня начинают sessio_start() на login.php.I были сверяться с print_r ($ _ SESSION); для сеанса не началось. но его начало. когда я переношу на home.php, он не работает. Я проверяю его на home.php на print_r, но он не отображается. Я установил PHP-код, написанный на home.php. и он показывает мне ошибку, что [клиент 127.0.0.1:53005] PHP Warning: session_destroy(): Попытка уничтожить неинициализированную сессию в logout.php ........

моего выхода из системы страницы содержит HTML-код с этим кодом php

<?php 
    session_destroy(); 
    session_unset(); 
?> 

и переместите его на login.html страницу.

+0

у вас должен быть 'session_start()' на каждом php-файле ... его больше похоже на сообщение ... он получает переданное время – Dwza

+0

вы можете мне рассказать. Необходимо, чтобы session_start() нуждался на каждой странице. Если мы начать на странице входа в систему, то почему нам нужно начать снова на другой странице? – Pratiksha

ответ

0

Вам нужно снова начать сеанс. Должно быть на каждой странице.

<?php 
    session_start(); 
    if(!isset($_SESSION["USER"])) { 
     include ('../content/logout.php'); 
     exit(); 
    } 
?> 

Чтобы использовать сеансовые сеансы, вам всегда нужно начинать сеанс на каждом вашем php. Это вроде как POST без отправки ^^ И это должно быть для любого выхода! Но вы должны сказать своему php, что есть сеанс, и вы хотите его использовать.

РЕДАКТИРОВАТЬ

См this quote

session_start() создает сеанс или возобновление текущей основе идентификатора сеанса передается через GET или POST запроса, или передается через куки.

+0

Можете ли вы рассказать мне. Обязательно, чтобы session_start() нуждался на каждой странице. Если мы запустимся на странице входа в систему, то почему нам нужно снова начать работу на другой странице. – Pratiksha

+0

Как я уже сказал ... на дальнейших страницах его не запускается ... session_start больше похож на сессию включения, чем. Но ... вам просто нужно добавить его. Это должно сделать это :) – Dwza

+0

@Pratiksha см. Мое редактирование :) – Dwza

0

Когда сервер получает HTTP-запрос, он получает данные GET/POST/COOKIE и не знает, к какой серверной сессии относится клиент.

Когда вы вызываете session_start() сервер создает сеанс или возобновляет текущий [сеанс] на основе идентификатора сеанса, переданного через запрос GET или POST, или передается через файл cookie.

Так каждый раз при необходимости сеанс в PHP (например: для чтения/записи $ _SESSION), вы сусла первого вызова сеанса с session_start() и сервером либо загрузить или создать сеанс на основе GET/POST/COOKIE данные.

Если вы звоните session_start() каждый раз, больно, используйте session.auto_start param. Или вы можете поставить session_start() в auto_prepend_file.