2012-03-04 4 views
0

Я новичок в PHP и пытаюсь создать приложение для facebook. В файле index.php, я делаю следующее:Управление сессиями в приложениях Facebook

if(!isset($_SESSION)){ 
     session_start(); 
} 

facebook SDK, кажется, чтобы начать сеанс сам по себе, так что мой код, не дозвонились на всех! Между тем, index.php имеет форму, которая отправляется в новый файл с именем processForms.php. В index.php, я установил следующее:

$_SESSION['uid'] = $me['id']; 

Но в processForms.php, доступ к $ _SESSION дает мне следующую ошибку:

Notice: Undefined variable: _SESSION 

Не уверен ли я получать всю концепцию сессий здесь неправильно.

ответ

3

Вам не нужен if до session_start. Просто позвоните прямо: session_start();. Если сеанс уже запущен, это не повредит.

Похоже, вы поняли, что понятие «начало сеанса» неверно. Ну, не совсем неправильно ... Посмотрите: «session_start()» делает не «начинает сеанс», в том смысле, о котором вы можете думать, т. Е. Вы называете его после и «сеанс был« запущен » ». Нет. Вы должны называть «session_start» всегда, в начале каждый PHP-скрипт, который будет обрабатывать сеансы.

Например, в login.php:

session_start(); 
if ($user_and_pass_are_correct) 
{ 
    $_SESSION['username'] = $username; 
} 

В somepage.php:

session_start(); 
echo 'User name is ' . $_SESSION['username']; 

Вам нужен "session_start" звонок там. Это не означает «начало сеанса». Это означает «инициализировать материал сеанса, поэтому я могу использовать сеансы».

Обычный подход заключается в том, чтобы иметь один session_start в сценарии «начальной загрузки» и включать его в начало всех других скриптов.

"bootstrap.php"

<?php 
    session_start(); // first line of script 
    initialize_other_stuff(); 

"a_page.php"

<?php 
    include('bootstrap.php'); // first line of script 

"another_page.php"

<?php 
    include('bootstrap.php'); // first line of script, always 
+0

Если я удалить, если , I g et в моем браузере следующее сообщение: Примечание: сеанс уже запущен - игнорирование session_start() – sharath

+1

Хорошо, вы можете сохранить 'if'. Я бы изменил условие на 'if (empty (session_id())) - см. Http://br.php.net/manual/en/function.session-id.php (раздел« Возвращаемые значения ») –

+0

работ ! Спасибо, ребята :) – sharath

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