PHP에 노출된 지 3개월도 채 되지 않아 멍청한 놈입니다... 응답을 유지하기 위해 SESSION 테스트용으로 작성한 웹사이트는 브라우저를 닫지 않고 클라이언트의 모든 쿠키를 수동으로 삭제했습니다. 파일을 저장한 다음 웹사이트를 새로 고치고 계정이 아직 로그인되어 있는지 확인하세요. 무슨 일이 일어나고 있나요?
제가 자주 이용하는 일부 사이트에 따르면 쿠키를 삭제하면 로그아웃이 된다고 합니다...다음은 제 문제 코드입니다. 조언 부탁드립니다.
로그인 코드를 처리하는 페이지 A
<code>//登录成功,保持登录状态 function login_true($username){ session_start(); $_SESSION['userinfo']=array('uid'=>476283675,'username'=>$username); } </code>
<code>/*如果$_SESSION['userinfo']或$_SESSION['userinfo']['uid']为空 *则说明未登录,引导用户登录 */ session_start(); if (empty($_SESSION['userinfo'])or empty($_SESSION['userinfo']['uid'])){ echo "<a href='919.html'>点我登录</a>"; die('请先登录'); } echo '晚上好';</code>
답글 내용:
제가 자주 이용하는 일부 사이트에 따르면 쿠키를 삭제하면 로그아웃이 된다고 합니다...
다음은 제 문제 코드입니다. 조언 부탁드립니다.
로그인 코드를 처리하는 페이지 A
로그인 인터페이스를 보여주는 페이지 B
<code>//登录成功,保持登录状态 function login_true($username){ session_start(); $_SESSION['userinfo']=array('uid'=>476283675,'username'=>$username); } </code>
쿠키 파일을 지워도 로그인 상태가 유지되는데 무엇이 문제인가요?
<code>/*如果$_SESSION['userinfo']或$_SESSION['userinfo']['uid']为空 *则说明未登录,引导用户登录 */ session_start(); if (empty($_SESSION['userinfo'])or empty($_SESSION['userinfo']['uid'])){ echo "<a href='919.html'>点我登录</a>"; die('请先登录'); } echo '晚上好';</code>
브라우저와 함께 제공되는 지우기 버튼을 사용하세요.
논리적으로 말하면, 쿠키가 성공적으로 지워지면 쿠키에 저장된 세션 ID는 사라지게 되며 백엔드 세션 메커니즘을 요청하여 얻을 수 없는 세션 ID는 세션 파일에 해당하는 정보를 얻는 데 사용됩니다. 시스템의 어느 부분이 예외를 처리하고 있는지 모르겠습니다. 쿠키가 삭제되지 않았나요? 요청 본문에 다른 형식의 세션 ID가 포함되어 있습니까?
세션은 요청될 때마다 session_id 값을 전달하여 세션을 저장합니다. 전달하는 방법에는 두 가지가 있습니다. 하나는 각 요청과 함께 전달되는 쿠키를 통하거나 URL을 통해 전달됩니다. . PHP 설정이 쿠키를 통해 이루어지면 해당 도메인 이름에서 원래 쿠키를 삭제하면 서버가 자동으로 새 session_id를 생성하므로 귀하의 질문에 따르면 원래 세션이 손실됩니다. 삭제 방법이 잘못되었습니다. 브라우저의 오프너 도구를 사용하세요. 현재 도메인 이름 아래의 모든 쿠키를 표시하고 쿠키를 삭제할 수 있는 브라우저는 Chrome을 권장합니다!