세션
세션이란
??세션은 사용자가 페이지에 접속하는 순간부터 시작되어 사용자가 웹 사이트 연결을 끊으면 끝나며 세션의 라이프 사이클을 형성합니다. 세션 중에 클라이언트에는 현재 사용자를 식별하고 다른 사용자와 구별하기 위해 고유한 SessionID가 할당됩니다.
세션 중에 세션 ID는 클라이언트와 서버의 두 위치에 저장됩니다. 클라이언트의 경우 임시 쿠키를 사용하여 저장하거나(쿠키 이름은 PHPSESSID) URL 문자열을 통해 전달됩니다. 서버는 또한 텍스트 파일을 사용합니다. 양식은 지정된 세션 디렉터리에 저장됩니다.
??Session은 ID를 통해 각 접근 요청을 수락함으로써 현재 사용자를 식별하고, 사용자 특정 정보를 추적 및 유지하며, Session 변수(Session 활동 중에 숫자 또는 텍스트 정보가 Session에 저장될 수 있음), session_name, 등, 이러한 변수 정보는 서버 측에 저장됩니다.
??SessionID는 세션 지속을 위한 세션 정보로 데이터베이스에 저장되어 각 사용자의 로그인 시간, 온라인 상태, 온라인 시간 등을 추적할 수 있습니다.
PHP에서 쿠키와 세션의 차이점:
쿠키와 세션 모두 여러 페이지에서 사용되는 변수를 임시로 저장할 수 있지만 본질적인 차이점이 있습니다.
??쿠키는 클라이언트 브라우저에 저장되고,
??세션은 서버에 저장됩니다.
??그들 사이의 연결은 일반적으로 쿠키에 저장되거나 URL에 배치되는 세션 ID입니다.
??쿠키를 비활성화하는 방법: (IE에서 "도구" - "인터넷 옵션"을 클릭하고 팝업 대화 상자에서 "보안" - "사용자 정의 수준" 항목을 클릭한 후 "각 대화 허용 COOKIE" 설정 설정 비활성화)
간단한 세션 구현
세션을 사용하는 기본 단계는 다음과 같습니다.
??세션 시작
??세션 변수 등록
? ?세션 변수 사용
?? 변수 등록을 취소하고 세션을 삭제합니다
1 세션 시작
session_start(): 세션을 시작하거나 기존 세션을 반환합니다.
참고: 이 함수에는 매개변수가 없으며 반환 값은 true입니다. 쿠키 기반 세션을 사용하는 경우 session_start()를 사용하기 전에 브라우저에 출력이 없어야 합니다. 그렇지 않으면 다음 오류가 발생합니다.
경고: 세션 캐시 제한기를 보낼 수 없습니다. 헤더가 이미 전송되었습니다(출력은/usr/에서 시작됨). local /apache/htdocs/cga/member/1.php:2)…………
2 세션 변수 등록
PHP5는 $_SESSION['xxx']=xxx를 사용하여 등록합니다. SESSION은 전 세계적으로
금액을 변경합니다. GET, POST, COOKIE의 사용 방법은 유사합니다.
??참고: session_register(), session_unregister(), session_is_registered()는 php.ini에서 Register_globle이 활성화되어 있지 않으면 php5에서 더 이상 사용되지 않습니다. 그러나 보안상의 이유로 Register_globle을 끄는 것이 좋습니다. . HTTP_SESSION_VARS 사용은 더 이상 권장되지 않으며 대신 $_SESSION을 사용하는 것이 공식적인 권장 사항입니다.
3 세션 변수 사용
특정 범위 내에서 세션 변수를 사용하려면 먼저 session_start() 함수를 사용하여 세션을 시작해야 합니다. 이러한 방식으로 이 변수는 $_SESSION 슈퍼 전역 배열을 통해 액세스할 수 있습니다.
예: echo $_SESSION['myvar'];
?? 사용하기 전에 해당 변수가 등록된 세션 변수인지 확인하세요.
if(isset($_SESSION['myvar']))
4 page1.php
<?<span>php session_start(); </span><span>//</span><span>使用SESSION前必须调用该函数。</span>$_SESSION[‘name’]=”我是黑旋风李逵!”; <span>//</span><span>注册一个SESSION变</span><span>量 $_SESSION[‘passwd’]</span>=<span>”mynameislikui”; $_SESSION[‘time’]</span>=<span>time(); echo ‘<br</span>/><a href=<span>“page2.php”>通过COOKIE传递SESSION <</span>/a>’; <span>//</span><span>如果客户端支持cookie,可通过该链接传递session到</span><span>下一页。 echo ‘<br</span>/><a href=“page2.php?<span>’. SID . ‘”>通过URL 传递SESSION<</span>/a>’;<span>//</span><span>客户端不支持cookie时,使用该办法传递</span><span>session. </span>?>
session_id
session_id( )는 현재 session_id를 설정하거나 가져오는 데 사용됩니다. php5에서
는 session_id()를 사용하거나 URL에 첨부된 SID
를 통해 현재 세션의 session_id 및 session_name을 얻을 수 있습니다.
??session_id()에 특정 값이 있으면 현재 SESSIONID 값을 대체합니다.
쿠키가 비활성화되지 않은 경우 session_id() 값을 지정하면 session_start()가 시작될 때마다 쿠키 값이 클라이언트로 전송됩니다. 현재 SESSIONID가 지정된 값과 같은지 여부에 관계없이.
??session_id()가 값을 지정하지 않으면 현재 SESSIONID가 반환됩니다. 현재 세션이 시작되지 않으면 빈 문자열이 반환됩니다.
??세션을 시작하기 전에 이 함수를 사용해야 합니다: session_start();
<span>查看当前SessionID </span><?<span>php session_start(); echo “当前的session id 为:”.session_id(); </span>?><span>??设置SessionID </span><?<span>php session_id(“ABC2008”);</span><span>//</span><span>必须在session_start()之前</span><span>session_start(); echo “修改的session id 为:”.session_id(); </span>?>
정보에 영향을 주지 않고 session_id를 바꾸세요
??session_regenerate_id () 변경이 성공하면 true를 반환하고 실패하면 false를 반환합니다.
?? 이 기능을 사용하면 현재 세션이 SESSIONID를 대체할 수 있지만 현재 세션의 다른 정보는 변경되지 않습니다.
<?<span>php session_start(); $old_sessionid</span>=<span> session_id(); session_regenerate_id(); $new_sessionid</span>=<span> session_id(); echo </span><span>"</span><span>原始SessionID: $old_sessionid<br/></span><span>"</span><span>; echo </span><span>"</span><span>新的SessionID: $new_sessionid<br/></span><span>"</span><span>; echo</span><span>"</span><span><pre></span><span>"</span><span>; print_r($_SESSION); echo</span><span>"</span><span></pre></span><span>"</span><span>; </span>?>
session_name
session_name()은 현재 세션의 이름을 반환하거나 현재 세션의 이름을 변경합니다.
??현재 세션의 이름을 변경하려면 session_start()
전에 이 함수를 호출해야 합니다. 참고: session_name은 숫자
로만 구성될 수 없으며 문자를 하나 이상 포함해야 합니다. 그렇지 않으면
새 세션 ID가 매번 생성됩니다.
세션 이름 바꾸기의 예:
<?<span>php $previous_name</span>= session_name(<span>"</span><span>WebsiteID</span><span>"</span><span>); session_start(); echo </span><span>"</span><span>新的session名为:$previous_name<br/></span><span>"</span><span>;</span>?>
세션 간 페이지 전송 문제
페이지 간에 세션을 전달할 때 세 가지 상황을 고려해야 합니다.
??클라이언트가 쿠키를 비활성화했습니다.
??브라우저에 문제가 있어 일시적으로 쿠키에 접근할 수 없습니다.
??session.use_trans_sid= 0 in php.ini 또는
--enable-trans-sid 옵션이 켜져 있지 않습니다. 컴파일 시 on
페이지 간 세션 전송 문제를 해결하는 세 가지 방법
1、设置php.ini中的session.use_trans_sid= 1或者编译时打开打开了--enable-trans-sid选项,让PHP自动跨页传递session id。
??2、手动通过URL传值、隐藏表单传递session id。
??3、用文件、数据库等形式保存session_id,在跨
页过程中手动调用。
1 解决会话传递问题
<span>page1.php ??<</span>?<span>php session_start(); $_SESSION[‘var1’]</span>=<span>“中华人民共和国”; $url</span>=“<a href=‘s2.php’>下一页</<span>a>”; echo $url; </span>?<span>><br></span>
<span>??page2.php ??<</span>?<span>php session_start(); echo “传递的session变量var1的值:”.$_SESSION[‘var1’]; </span>?<span>> ??现在你手动关闭客户端的cookie,再运行就得不到结果了</span>
2 第一种途径
设置php.ini中的session.use_trans_sid= 1
??编译时打开打开了--enable-trans-sid选项”
??注:Linux适用,Windows不适用
以上就介绍了PHP会话跟踪二(42),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。