2012-01-21 3 views
1

로그 아웃 링크를 만드는 가장 좋은 방법은 무엇입니까? 모든 세션을 삭제하고 로그인 페이지로 다시 리디렉션하고 싶지만이 작업을 수행하는 가장 좋은 방법은 확실치 않습니다. 지금 나는 admin/logout.php로 연결되는 링크를 가지고 있지만, 사용자에게 내 폴더 구조를 보여주는 것이 좋지 않을 것 같다. 여기 내 코드는 꽤 똑바로 :PHP - 로그 아웃 링크 만들기

session_start(); 
    session_destroy(); 
     echo "<script type=\"text/javascript\">window.location.href='../login.php';</script>"; 

그래서 최고의 javascript 또는 ajax에서 무엇입니까?

+2

왜 'head ("Location : login.php")'할 수있을 때 JS를 통해 리디렉션해야합니까? –

+0

체크 아웃 : http://stackoverflow.com/questions/2241769/php-how-to-destroy-the-session-cookie-correctly – Josh

+0

@MarcB 나는 잠시 전에 질문을했다. 자바 스크립트 리다이렉션이 최선의 선택이라고 나는 그것을 연결하려고했으나 그 다음에 얼마나 나쁜지에 대한 의견이 많았으므로 아마 돌아가서 그 xD를 바꿔야 만했다. –

답변

3

디렉토리 구조가 노출 될 우려가있는 경우 디렉토리를 사용하지 마십시오. 간단하게 모든 페이지를 가지고하는 것은 logout 쿼리 매개 변수를 확인 :

<?php 
if (isset($_GET['logout'])) { 
    session_start(); 
    session_destroy(); 
    header("Location: login.php"); 
    exit(); 
} 

당신은 어떤 페이지에서 로그 아웃 할 수 있습니다 그 방법은, 당신의 '관리자'폴더가 노출되지, 헤더() 리디렉션을 수행하는 기회를위한가 없습니다 의미 없구요 사용자가 사용할 수있는 다른 리디렉션 메서드 (메타 태그, 자바 스크립트 등)를 중단합니다. 아무것도 출력하지 않았기 때문에 사용자가 볼 수있는 페이지에는 아무 것도 표시되지 않습니다.

+0

예, 자바 스크립트 리디렉션이 문제였습니다. 어떤 이유로 내 디렉토리 구조가 노출되었지만 header()로 변경되었을 때 수정되었습니다. 또한 로그 아웃하기 위해 완전히 새로운 파일을 만드는 대신'$ _GET []'아이디어를 좋아합니다. –

0

는 logout.php는 :

<?php 
session_start(); 
session_destroy(); 
?> 
<html> 
<head> 
<meta HTTP-EQUIV="REFRESH" content="0; url=login.php"> 
</head> 
</html> 

이 별도의 .PHP 페이지 할 필요가있다. 그냥 링크를하면 볼 수 없으며 index.php의 내용이 표시되지만 세션 데이터는 저장되지 않습니다. :)

이것은 아마도 가장 좋은 방법 일 것입니다. HTML 리디렉션 기능을 갖춘 간단한 PHP로 작성된 모든 것.

+0

내가 생각한 바로 그 것을 보아라. 나의'admin/logout.php'는 내 질문에 (PHP 태그 내부) HTML없이 링크 된 코드. 그러나 URL은 여전히 ​​/admin/logout.php로갔습니다. 내 문제는 자바 스크립트를 리디렉션했기 때문에 결국'header()'를 사용할 때 이것을하지 않는다고 생각합니다. –