2016-06-03 2 views
0

로그인 및 가입 페이지가 있습니다. 실제로 로그 아웃 버튼을 클릭 할 때 사용자 세션을 저장하려고합니다. 사용자 이름과 비밀번호를 입력 할 때까지 홈 페이지를 입력 할 수 없습니다. 로그인 페이지에 세션 저장 코드가 있습니다. 사용자 세션 저장

$user_name = $_SESSION['user_name'] = $_POST['user_name']; 

그리고 내가 조건이 홈 페이지에

는 ..

<?php 
session_start(); 
if(!$_SESSION['user_name']==1){ 
    header("location:login.php?error=You must be logged in first!"); 
    exit(); 
} 
?> 

주요 문제는 그 사용자가 로그 아웃을 클릭하고 그가에서 홈 페이지 URL을 입력 ..if 로그인 페이지로 리디렉션 할 때 addressbar..he가 passsword를 입력하지 않고 홈 페이지에 도달 login..What 문제입니다 ..

+0

** 참고 : ** 쿼리 문자열 (?'오류 = xxx')에 의존하지 마십시오 것이 될 100 당신이 눈을 멀게 할 때 안전합니다. 누군가 XSS를 거기에 넣을 수 있습니다 ... –

+0

또한 헤더의 형식이 잘못되었습니다. 위치는 절대 URL이어야합니다. 실제로 모든 관련 클라이언트는 상대 URL을 지원하지만 인코딩은 정확해야합니다. – johannes

답변

1

login.php

시도
<?php 
    session_start(); 

    // Log in on submit 
    if (isset($_POST['user_name']) /* whatever */) { 
     // Do some login validations here 
     // and if successful, set the session then redirect 
     $_SESSION['sess_user'] = $_POST['user_name']; 
     header('Location: /members.php'); 
     exit(); 
    } 
?> 

logout.php

<?php 
    session_start(); 

    // Unset all session values 
    $_SESSION = array(); 

    // get session parameters 
    $params = session_get_cookie_params(); 

    // Delete the actual cookie. 
    setcookie(session_name(), '', time() - 42000, $params['path'], $params['domain'], $params['secure'], $params['httponly']); 

    // Destroy the session 
    session_destroy(); 

    header("Location: /login.php"); 
?> 

members.php

<?php 
    session_start(); 

    // Check if authenticated 
    if (!isset($_SESSION['sess_user'])) { 
     header("location:login.php?error=You must be logged in first!"); 
     exit(); 
    } 
?> 
+0

@ keziah! (실제로는 http : // there가 없습니다) 또는 URL (여기에 공백! 사용 urlencode() 지역 변수 "$ ssession"을 왜 사용했는지 말해 주시겠습니까? $ session-> destroy(); –

+0

죄송합니다. 세션 클래스를 사용하고 있기 때문에'session_destroy()'여야합니다 – keziah

+0

고맙습니다. 케야! –