2013-08-30 3 views
1
?php session_start(); 
if(isset($_SESSION["user_name"])) 
if($_GET["destroy"]=="yes") 
{ 
session_destroy(); 
unset($_SESSION["user_name"]); 

} 

if(!isset($_SESSION["user_name"]) && 
$_GET["user"]!="") 
$_SESSION["user_name"] = $_GET["user"]; 

?> 

궁금한데, 왜 우리는 unset과 session_destroy()가 필요한가요? 나는 그들 중 하나를 제거하여 테스트 한 결과는 여전히 동일했다. 사용자는 여전히 로그 아웃합니다. 누군가 제게 설명해주세요, 너무 고마워요.LOGOUT.php를 수행 할 때 왜 설정을 해제하고 세션을 삭제해야합니까?

+0

누가 처음부터 둘 다 필요하겠습니까? 참고 문헌을 제공하십시오. 그렇지 않으면 실제로 염려하는 내용이 명확하지 않습니다. – hakre

+0

session_unset() 및 unset ($ _ SESSION [ 'user'])이 동일합니까? –

+0

여기 http://php.net/manual/en/function.session-destroy.php의 링크에서 말합니다. 세션을 모두 종료하려면 사용자를 로그 아웃하는 것처럼 세션 ID도 설정 해제해야합니다. 이 경우 –

답변

0

session_unset (의 ...

$_SESSION = array(); 

을 - 세션이 여전히 존재 전용 데이터는 truncated.but session_unset()은 오래된 PHP 함수입니다. 세션을 빈 배열로 설정할 수 있습니다.

$_SESSION = array(); 

session_destroy()는 전체 세션을 삭제합니다. 항상 둘 다 할 필요는 없습니다.하지만 보안을 강화하기 위해 둘 다 수행하는 것이 좋습니다.

+0

session_unset()은 구식 PHP 함수입니다. 그것은 더 이상 사용하지 않는 session_register()와 함께 원래 사용되었습니다 (또는 사용자가 잘못 사용하는 경우) – hakre

+0

@shrikanth, 둘 중 하나가 사용자를 로그 아웃 할 것이기 때문에 답변을 얻지 만 추가 보안을 위해, 우리가 왜 둘 다 사용하는지. –

+0

여기에 보안에 대한 잘못된 이해가 있습니다. 'session_unset()'은 PHP 4에서 세션 변수로 등록 된 전역 변수를 위해 고안되었습니다. 매뉴얼 페이지에서는'$ _SESSION'을 사용할 때 더 이상 사용할 필요가 없습니다. 또한'session_destroy()'이후에'$ _SESSION' *에 데이터를 가지고 있다는 보안 관련성은 없지만, anser는 이유가 없으므로 실제로 이것이 * adviseable * 인 이유는 없습니다. 더 이상 의미가없는 일부 문장 만 입력합니다. – hakre

0

unset()은 세션이 아닌 변수를 삭제합니다.

session_destory()은 세션을 파괴합니다.

session_destroy()는 현재 세션과 관련된 모든 데이터를 삭제합니다. 세션 과 관련된 전역 변수를 설정 해제하지 않거나 세션 쿠키를 설정 해제하지 않습니다.

그러나, 나는 당신이 할 것을 제안 : 세션에서 불과 변수를 삭제) 대신 unset();

+0

왜 제안 하시겠습니까? – hakre

+0

더 좋습니다. 세션 배열의 모든 값을 삭제합니다. 하나씩 삭제하는 대신 – Daniel

+0

글쎄, OP는 오류없이 설정 해제되어 사용되었습니다. 처음부터 그것을 사용할 이유가 없었기 때문에, 당신이 제안한 것을 할 이유가 없습니다. – hakre