Сессии не работают PHP - PullRequest
1 голос
/ 15 июля 2010

Мой веб-сайт не запускает сеанс при посещении, я не знаю почему, но мой веб-сайт работает следующим образом:

<?php

session_start(); 

$title = "Home"; 

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

?>

...HTML stuff here...

<?php 

include("footer.php"); 

?>

Но когда я проверяю с помощью Cookies (дополнение для Firefox), сеансы не запускаются ... Я использовал session_regenerate_id (); но это не работает вообще.

Не удается войти в систему, так как нет сессий, у меня нет session_destroy () на моем веб-сайте, только в выходе.

Но забавно то, что когда я вхожу в систему (пока не обновляя и не перемещаясь), а затем нажимаю кнопку выхода из системы, на моем веб-сайте есть сеанс, а когда я снова вхожу, он говорит мне, что я вошел в систему. НО, если я вхожу в систему и перемещаюсь или обновляюсь, это не говорит мне, что я вошел в систему, так как нет сеансов ...

Выход:

<?php

session_start();
session_destroy();

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

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

exit;

?>

Что мне делать?

Ответы [ 4 ]

3 голосов
/ 15 июля 2010

Вы должны иметь session_start() в начале каждого файла, к которому осуществляется доступ и который использует сеансы. Имя вводит в заблуждение, session_start() фактически не запускает новый сеанс, но инициализирует Управление сеансами PHP.

1 голос
/ 15 июля 2010

Это не похоже на то, что вы задали в сеансе или в файле cookie.

Если вы хотите передавать информацию в сеансе, вам нужно присвоить необходимые значения в переменной $ _SESSION.

Например, на главной странице вы можете сделать:

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

И затем на любых последующих страницах вы можете получить доступ к установленной вами переменной.

<?php
session_start();
echo $_SESSION['myVariable'];  //This will print "my text"
?>
1 голос
/ 15 июля 2010

Вероятно, потому, что вы не устанавливаете сеанс ни в одном из приведенных вами примеров, у вас должна быть строка, подобная приведенной ниже, для фактического создания сеанса, а затем для доступа к переменным сеанса на всех последующих нужных страницах.session_start ();

$_SESSION['example'] = 'something';
1 голос
/ 15 июля 2010

Не уверен, что это связано, но произошла странная PHP-фишка, которая требовала, чтобы SESSION_START () был в строке сразу под тегом <?php. Что-то о пропусках и дополнительных вещах над сессией делало меня бесполезным. Я использую Zend в последнее время, что позволяет избежать этой проблемы с его собственной системой обработки сеансов.

Вы можете попробовать выполнить print_r ($ _ SESSION), чтобы посмотреть, есть ли вообще что-либо в массиве сеансов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...