2012-03-04 3 views
0

저는 PHP를 처음 사용하고 페이스 북 응용 프로그램을 작성하려고합니다. index.php 파일에서, 나는 다음을 수행하십시오Facebook 응용 프로그램의 세션 관리

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

페이스 북 SDK는 자체 세션을 시작하는 것, 그래서 내 코드가 전혀 호출되지 않습니다! 한편, index.php는 processForms.php라는 새 파일에 제출되는 양식을 가지고 있습니다. 의 index.php에서 내가 설정 한 다음 내가 세션의 전체 개념을 얻고 있는지

Notice: Undefined variable: _SESSION 

확실하지 : $ _SESSION을 액세스하는 나에게 다음과 같은 오류를 제공

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

그러나 processForms.php에서

, 여기 잘못.

답변

3

session_start 전에 if이 필요하지 않습니다. 그냥 똑바로 전화 : 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"전화를해야합니다. 그것은 "세션의 시작"을 의미하지 않습니다. "세션을 초기화하여 세션을 사용할 수 있습니다"라는 의미입니다.

일반적으로 "부트 스트랩 (bootstrap)"종류의 스크립트에 하나의 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

나는 경우를 제거하는 경우 , 나 내 브라우저에 다음과 같은 메시지가 표시됩니다. 알림 : 세션이 이미 시작되었습니다. - session_start()를 무시합니다. – sharath

+1

좋아, 'if'를 유지할 수 있습니다. 조건을 'if (empty (session_id()))'로 변경합니다 - http://br.php.net/manual/en/function.session-id.php ("반환 값"섹션) –

+0

참조 ! 고마워요 너희들 :) – sharath