2010-07-23 2 views
9

확인 메신저, heres는session_id, session_regenerate_id 및 session_name은 무엇에 사용됩니까? 세션에 초보자는 우리가 약간의 로그인 사이트가 상상할 수

논리

  1. 로그인
  2. 암호 권리 = $ _SESSION [isaloginuser] = 1
  3. 를 사용하는 경우 만약 $ _SESSION으로 메뉴를 표시 세션을 체크 [isaloginuser] = 1
  4. 는 메뉴
  5. 사용자
  6. 로그 오프 할 보여
  7. 해제 세션
  8. 파괴가
    session_register 
    session_destroy 
    session_unset 
    session_start 
    

    session_id & session_regenerate 또는 session_name 간다 않습니다

    에 무엇을 사용 세션 시스템

? PHP 사이트에서 그것은

SESSION_ID()를 얻거나 현재 세션에 대한 세션 ID를 설정하는 데 사용됩니다 말했다.

나는 아직도 그것을 얻지 못합니다. 왜 우리는 어쨌든 그것을 필요로합니까? in 실제 환경 무엇을합니까?

+1

암호 만이 아니라 사용자 이름도 올바른지 확인하십시오 :) – Sarfraz

+1

은 권한 수준이 변경 될 때 항상'session_regenerate_id'를 사용합니다. – knittl

+0

[이 링크] (http://stackoverflow.com/questions/18262620/what-additional- session-destroy-bring-when-i-am-using-session-regeneration)에는 세션에 대한 두 가지 멋진 답변이 있습니다. – CoR

답변

14

아니요, 사용하지 않아도됩니다. 일반적으로 당신이 필요

  • session_start 세션 처리를 시작하고,
  • session_destroy (이 $_SESSION을 수정하지 않습니다) 저장된 세션 데이터를 파괴하고,
  • session_unset$_SESSION 변수를 재설정 (그러나 $_SESSION = array()도 가능).

session_idsession_name (기본값은 PHPSESSID이다) 얻고 현재 세션 ID 및 세션 ID 이름을 설정한다. session_regenerate_id은 현재 세션의 세션 ID를 재생성/변경하는 데 사용할 수 있습니다. 예를 들어 10 분마다 또는 세션과 연관된 사용자의 인증 상태를 변경 한 후에 세션 ID를 새로 고치려면이 방법이 유용 할 수 있습니다.

+2

괜찮 았지만 현실 세계에서는 무엇을합니까? 당신은 당신의 프로젝트 중 하나에서 그것을 사용하고 있습니까? 무엇 때문에? –

+0

@Adam Ramadhan : 현실 세계에서 무엇이 무엇입니까? – Gumbo

+0

session_id, 이름 지정 및 재생성. –

2

세션 ID는 세션의 식별자입니다. 서버가 클라이언트에 관한 데이터를 저장하는 방법은 쿠키에 있습니다. 이 쿠키는 각 HTTP 요청과 함께 해당 클라이언트가 서버에 전송합니다. PHP는 쿠키를 임의의 문자열 토큰으로 설정합니다. 이 토큰은 클라이언트를 식별하고이를 키 - 값 쌍 세트와 관련시킵니다. 세션 변수의 개념은 쿠키가 쉽게 조작 될 수 있다는 것입니다. 그러나 세션 ID는 임의의 문자열이므로 복제하기가 어려우므로 보안이 추가됩니다.

3

session_register()은 5.3에서 감가 상각됩니다.대신에 그냥

$_SESSION['varname'] = "value"; 

session_id 데이터베이스에 저장하기위한 세션 ID를 얻으려는 경우에만 사용되는 session_id를 사용하십시오. "필요"하지 않습니다. session_name, 그냥 이름을 설정, 이것은 필요하지 않습니다. 재생성은 새로운 ID를 원한다면 응용 프로그램이 로그인 세션을 위해 필요하지 않으면 필요하지 않습니다. 사용하는 것이 매우 의심 스럽습니다.

다른 사람들, 당신이 그들이 무엇을하는지 이해하기를 바랍니다 (즉, 설정 해제/파괴). 그러나 약간 통찰력을주는 희망.

2

쇼핑 바구니를 만들 때 나는 보통 session_id()를 사용하여 지불 게이트웨이가 성공적으로 지불 한 응답을받은 후에 해당 사용자가 추가 한 항목을 추적 할 수 있습니다. 그런 다음 session_regenerate()를 사용하면 내 웹 사이트로 돌아 간다. 이전 바구니가 보이지 않는다. 나에게 새 사용자처럼 상점에 "들어갔다".

+2

'$ _SESSION [ 'cart'] = null'하지 않겠습니까? –

10

은 세션 고정을 방지하기 위해 사용됩니다.

세션 고정이란 다음을 의미합니다. 웹 사이트를 방문하여 세션 ID를 검사합니다. 그런 다음 다른 사용자가 세션 ID를 사용하여 사이트를 방문하고 로그인하도록 조작합니다. 이제는 동일한 세션을 사용 중이므로 해당 사용자로 로그인하고 권한을 얻습니다.

성공적으로 로그인하면 사용자는 session_regenerate_id()을 사용하여 새 세션 ID를 제공합니다. 이제는 세션 ID 만 갖고 이전 세션 ID는 더 이상 유효하지 않습니다.

+0

로그인 할 때 추가해야합니까? 또는 로그 아웃? –

+1

로그인 할 때 중요합니다. 비싼 조작은 아니지만 로그 아웃 할 때 필요하다고 생각하지 않습니다. – Hammerite

+1

@Hammerite 좋은 예입니다. 그러나 사용자가 페이지를 새로 고침 할 때마다'session_regenerate_id()'가 새로운 세션 세트를 생성하므로 세션에 아무런 영향을 미치지 않습니까? – samayo

관련 문제