2017-03-24 3 views
0

세션을 시작하는 간단한 "checklogin"파일에 제출하고 "username"과 "password"가 일치하면 색인 페이지로 리디렉션되는 로그인 양식이 있습니다. 인덱스 페이지에는 세션 ID가 더 이상 일치하지 않으면 로그인 양식 페이지로 다시 연결되는 기능이 있습니다.

인덱스 페이지에서 echo $_SESSION['sid'];을 수행했는데 session_id가 정상적으로 처리 된 것으로 보입니다. 그러나 페이지를 새로 고침하면 $_SESSION['sid']이 설정 해제되고 더 이상 값이 할당되지 않습니다. 로그인 페이지로 다시 이동합니다.

아래 코드는 제 코드입니다. 어떤 도움을 주셔서 감사합니다.

FILE 1 - checklogin.php

<?php 
session_start(); 
$uid = username; 
$pw = password; 
if (($uid == 'username' and $pw == 'password')) 
    { 
     $_SESSION['sid']=session_id(); 
     header("location:index.php"); 
     exit(); 
    } 
?> 

FILE 2 - index.php를

<?php 
session_start(); 
if ($_SESSION['sid'] !== session_id()) { 
header("location:login.php"); 
} 
?> 

추가 정보 : 서버가 PHP 5.4을 실행하고 있습니다. 그러나 XAMPP (PHP 7)를 통해 localhost에서 실행할 때 제대로 작동합니다. 해결 방법이 있습니까?

+0

당신이 당신의 색인 페이지에 파괴 세션을해야합니까? 그것을 제거하십시오. – shazyriver

+0

Nope. 나는 session_destroy()가 없다. 내 사이트 어디서나. @shazyriver –

+0

처음 시작할 때 페이지에 세션이 시작되어 세션 ID를 새로 고칠 때마다 변경됩니다. 다른 변수를 확인하십시오. – shazyriver

답변

0

FILE 1 - checklogin.php

session_start(); 
$uid = username; 
$pw = password; 
if (($uid == 'username' and $pw == 'password')) 
{ 
    $_SESSION['login_status'] = 'logged_in'; 
    header("location:index.php"); 
    exit(); 
} 

FILE 2 - index.php를

session_start(); 
if($_SESSION['login_status'] != 'logged_in') 
{ 
    header("location:login.php"); 
} 
+0

@shazriver 행운이 없습니다. 이 문제는 아마 가치 그 자체와 관련이 없습니다. 나는 이것이 서버 호환성에 정말로 영향을 미치는지 궁금하다. 봐. –

+0

. 나는 또한이 설정을 가지고있다. 그러나 세션은 나를 위해 잘 실행됩니다. – shazyriver

관련 문제