2012-11-07 2 views
0

내 응용 프로그램에서 주로 php라는 것을 알고 싶습니다.이 방법은 사용자가 로그 오프 할 때까지 사용자를 사이트에 계속 로그인시키는 가장 좋은 방법입니다. 토큰, 세션 라이프, 쿠키 등 일 수 있습니까?사용자를 계속 로그인하는 가장 좋은 방법은 무엇입니까?

if (isset($_SESSION['teacherid'])) { 

     $userid = $_SESSION['teacherid']; 

    } 

if (isset($_SESSION['teacherusername'])) { 

     $username = $_SESSION['teacherusername']; 

    } 

그런 다음 모든 스크립트에 포함 : 사용자가 로그인 할 때

, 그것은 $ _SESSION은 자신의 세부 사항을 저장합니다 : 이것은 내 로그인과 로그 오프 시스템이 어떻게 작동 순간

sessionlife 12 시간 동안 지속 여기서 아래 코드 :

<?php 

ini_set('session.gc_maxlifetime',12*60*60); 
ini_set('session.gc_divisor', '1'); 
ini_set('session.gc_probability', '1'); 
ini_set('session.cookie_lifetime', '0'); 
require_once 'init.php'; 

session_start(); 

?> 

init.php이 아래와 같다 :

<?php 
session_save_path('Session'); 
?> 

지금 12 시간 세션이 파괴되는 바와 같이, 사용자가 페이지를 새로 고침 다음 시간 후에는 로그 오프 페이지로 이동 : 분명히 로그 아웃 페이지에서 사용자가 클릭 한 후이 이동했을 경우에

if ((isset($username)) && (isset($userid))){ 
     session_destroy(); 
     echo "You have been Logged Out | <a href='./home.php'>Home</a>"; 
    } 

    else { 

     echo "You are Not Logged In"; 

    } 

위의 스크립트.

하지만이 방법을 사용하는 것이 좋습니다. 적절한 웹 애플리케이션을 살펴보면 며칠 동안 사용자를 계속 로그인시킬 수 있기 때문에 훨씬 더 편리한 방법이 있겠지만 어떻게해야할까요?

감사

답변

7

세션은 핀치에 할 것입니다, 그들은 (그 날을 인용하지 않지만) 충분히 안전하지만, 서버 사용 및 구성에 따라, 사용자의 세션이 12 시간 전에 삭제 될 수 있습니다 표.

로그인하면 컴퓨터에 쿠키를 저장하고 세션을 시작합니다. 이 쿠키는 고유하게 생성 된 문자열과 계정 ID를 포함합니다.

가, 실행되어 다음 (의사) 페이지를 새로 고치면 : 물론

if (session_exists) continue(); 
else if (!session_exists AND cookie_exists AND validate_cookie()) { 
    login_user_via_cookie(); 
    continue(); 
else show_login_page(); 
+0

쿠키를 사용하여이 기능에 필수적이다 -과 당신의 쿠키 때까지 한 달 이상 살 수 삭제 ... + 1 – shadyyx

+0

및 xss 공격 (해커의 경우)에도 유용합니다. – Waqas

관련 문제