2013-04-27 6 views
0

PHP 세션에서 데이터가 삭제되고 로그인 페이지로 리디렉션되는 데 문제가 있습니다. // 로그인 할 파일을 포함PHP 세션이 손실 됨


  1. 로그인/
  2. 지수 로그인 한 사용자에 대한
  3. 홈페이지 // 페이지를 포함 로그 아웃 :

    는 디렉토리 나는 정상에서이 구조입니다. php // 완전히 작동하는 양식의 로그인 화면

로그인 디렉토리에 : check_login.php

폴더 2에서

include1.php home.php, : page1.php, 폴더 1 및 폴더 1에서 Folder2 폴더

: 주 디렉토리에서

는 (죄송이없는 경우 include2.php

:) 이해하기 쉽게


이 check_login.php에 로그인 할 때 실행 코드입니다

모든 페이지에는 동일한 스타일 (제목, 탐색, 바닥 글)이 포함되어 있으며 페이지 당 하나의 주 콘텐츠 블록이 변경되므로 표시 할 콘텐츠에 따라 folder1 및 folder2에 포함 된 포함을 사용합니다. 기본적으로 home.php는 folder1에있는 홈 페이지에 포함됩니다. 다른 페이지는 include1.php 또는 include2.php와 같은 것을 사용합니다. 두 폴더 중 하나 일 수 있습니다. page1.php의 상단에

:

session_start(); 
if($_SESSION["id"] == '') 
{ 
header("location:../index.php"); 
} 

page1.php에서, 내가 그이 폴더 1에 위치한 포함 된 페이지로 이동하는 경우,이 잘 작동합니다. 다시 집으로 돌아 가면 folder1에도 포함됩니다. 두 번 모두 세션에서 id 변수를 읽을 수 있습니다.

그러나 폴더 2에있는 포함 항목이 포함 된 페이지로 이동하면 내 로그인 페이지로 리디렉션됩니다.

아이디어가 있으십니까?

+0

올바르게 이해하는 경우 folder2로 리디렉션 할 때 "session_start()"가 선언되지 않았을 수 있습니다. – Yaakov

+0

폴더 1에 포함될 수있는 사이에 전환 할 수있는 session_start()가 없습니다. 정상에서 작동합니다. 폴더 2도 마찬가지입니다.그러나 나는 이미 session_start() 퍼팅 시도했다; 두 폴더에있는 모든 포함 항목의 맨 위에 있고 여전히 동일한 문제가 있습니다. – Matteth13

+0

"index.php"에는 무엇이 들어 있습니까? – Yaakov

답변

0

항상 세션 시작을 포함시켜야합니다. 이것에 대한 좋은 접근법은 header.php 또는 bootstrap.php 또는 세션에 의존하는 확장되는 각 파일의 시작 부분에 include_once를 만들 수 있습니다. 그런 다음 코드가 올바르게 작동하고 관리가 쉬워집니다.

+0

나는 이것을 시도했지만 여전히 작동하지 않는다. – Matteth13

+0

아마도 PHP 코드에 문제가 없기 때문에 브라우저 플러시 세션 또는 서버가 세션을 올바르게 저장하지 않아서 시작될 수 있습니다. 소프트웨어 스택은 어떻게 생겼습니까? –

+0

글쎄 서버가 세션을 올바르게 저장해야합니다. 동일한 디렉토리에있는 includes 사이를 이동할 수 있기 때문입니다. 소프트웨어 스택이란 무엇입니까? – Matteth13

0

나는 이것을 풀었고 나의 바보짓을 믿을 수 없다.

내가 다른 페이지로 연결되는 링크를 표시하는 위치 중 하나 인 곳에서 이것은 잘못된 것이며 사실 내 로그인 페이지를 가리키고 있습니다. 모든 것이 이제는 잘되어 가고 있으며, 모든 도움을 주셔서 감사합니다. 전형적인 모범생 오류.

관련 문제