목차
PHP的会话处理函数session,会话函数session
PHP Session 变量
php教程 php手册 PHP的会话处理函数session,会话函数session

PHP的会话处理函数session,会话函数session

Jun 13, 2016 am 08:38 AM
session

PHP的会话处理函数session,会话函数session

PHP Session 变量

当运行一个应用程序时,你会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。

通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果需要永久储存信息,可以把数据存储在数据库中。

Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。

1. 开始会话

在把信息储存到session之前,首先要开启会话。php提供了session_start()函数来开始或者继续一个会话。定义:

 1 bool session_start( void ) 

调用如下:

<span>1</span> <span><?</span><span>php session_start();</span><span>?></span>
<span>2</span> <span><</span><span>html</span><span>></span>
<span>3</span> <span><</span><span>body</span><span>></</span><span>body</span><span>></span>
<span>4</span> <span></</span><span>html</span><span>></span>
로그인 후 복사

注意:

(1)session_start()函数必须位于标签之前,也就是该函数必须在任何输出前调用,常常在写程序时不注意就多输入了一个空格或者回车,这时就会报错。应特别注意这一点。(我可是被坑过)

(2)无论有没有成功创建会话,session_start()函数都会返回TRUE,因此使用任何异常处理都不起作用

(3)还可以启用配置指令session.auto_start,从而不必执行这个函数,但是这样的话,每个php页面执行时都会开始或者继续一个会话。

2.存储或者读取会话

存储和读取session变量的正确方法是使用php的$_SESSION变量。$_SESSION是php提供的全局参数,专门用来存储和读取session。(注意关联数组的键名和普通变量的命名规则一致)

存储会话时,可以对其直接赋值。

1 $_SESSION[‘season’] = '秋天';

以上设置了一个键名为“season”的会话元素,其值为“秋天”。当读取时,就像调用普通数组元素一样。

下面的两段代码显示怎么存储并读取一个会话元素。

这是session1.php文件:

<span> 1</span> <?<span>php
</span><span> 2</span> <span>/*</span><span>*
</span><span> 3</span> <span> * Created by PhpStorm.
</span><span> 4</span> <span> * User: yuxiu
</span><span> 5</span> <span> * Date: 2016/5/26
</span><span> 6</span> <span> * Time: 14:11
</span><span> 7</span>  <span>*/</span>
<span> 8</span> <span>if</span>(<span>isset</span>(<span>$_POST</span>['submit'<span>])){
</span><span> 9</span>     <span>session_start</span>();                                <span>//</span><span>开始建立一个会话</span>
<span>10</span>     <span>$_SESSION</span>['season'] = <span>$_POST</span>['season'];       <span>//</span><span>存储会话数据</span>
<span>11</span>     <span>header</span>("Location: session2.php");            <span>//</span><span>应特别注意header()里的格式问题</span>
<span>12</span> 
<span>13</span> 
<span>14</span> <span>}
</span><span>15</span> ?>
<span>16</span> <b>存储会话</b>
<span>17</span> <hr/>
<span>18</span> <span>选择需要设置的数据:
</span><span>19</span> <form name="form1" method="post" action="" id="form1" >
<span>20</span>     <select name="season" id="season_select" >
<span>21</span>         <option value="春天">春天</option>
<span>22</span>         <option value="夏天">夏天</option>
<span>23</span>         <option value="秋天">秋天</option>
<span>24</span>         <option value="冬天">冬天</option>
<span>25</span>     </select>
<span>26</span>     <br/>
<span>27</span>     <br/>
<span>28</span>     <br/>
<span>29</span>    <input type="submit" name="submit" value="submit"/>
<span>30</span> </form>
로그인 후 복사

这是session2.php文件:

<span> 1</span> <?<span>php
</span><span> 2</span> <span>/*</span><span>*
</span><span> 3</span> <span> * Created by PhpStorm.
</span><span> 4</span> <span> * User: yuxiu
</span><span> 5</span> <span> * Date: 2016/5/26
</span><span> 6</span> <span> * Time: 14:13
</span><span> 7</span>  <span>*/</span>
<span> 8</span> <span>session_start</span>();    <span>//</span><span>建立或者继续一个会话</span>
<span> 9</span> <span>$season</span> = <span>$_SESSION</span>['season'];       <span>//</span><span>读取会话数据</span>
<span>10</span> 
<span>11</span> <span>echo</span> "<b>读取会话</b><br/><br/>"<span>;
</span><span>12</span> <span>switch</span> (<span>$season</span><span>) {
</span><span>13</span>     <span>case</span> '春天'<span>;
</span><span>14</span>         <span>echo</span> '现在是绿意盎然的春天!'<span>;
</span><span>15</span>         <span>break</span><span>;
</span><span>16</span>     <span>case</span> '夏天'<span>;
</span><span>17</span>         <span>echo</span> '现在是热情四溢的夏天!'<span>;
</span><span>18</span>         <span>break</span><span>;
</span><span>19</span>     <span>case</span> '秋天'<span>;
</span><span>20</span>         <span>echo</span> '现在是丰收果实的秋天!'<span>;
</span><span>21</span>         <span>break</span><span>;
</span><span>22</span>     <span>case</span> '冬天'<span>;
</span><span>23</span>         <span>echo</span> '现在是白雪皑皑的冬天!'<span>;
</span><span>24</span>         <span>break</span><span>;
</span><span>25</span>     <span>default</span><span> ;
</span><span>26</span>         <span>echo</span> '对不起,会话中没有数据  或者  不存在该对话 !'<span>;
</span><span>27</span> <span>}
</span><span>28</span> ?>
로그인 후 복사

在session1.php中首先使用session_start()创建一个会话,然后对提交的季节数据使用数组赋值的方式存储,最后使用header()函数直接跳转到开始。在session2.php文件中,也同样需要session_start()函数继续一个会话并利用session数组调用会话信息。

3.销毁会话

当会话不再被使用的时候,就需要人为的销毁它,虽然php有自动销毁会话的功能,但这样会使程序的效率变低。可以使用unset()函数或者session_destroy()函数。

<?<span>php
 </span><span>unset</span>(<span>$_SESSION</span>['season'<span>]);
</span>?>
로그인 후 복사

或者:

<?<span>php
 </span><span>session_destroy</span><span>();     //注意,使用这个函数将重置session数组,即失去所有的已经储存的session数据
</span>?>
로그인 후 복사

 

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SpringBoot 세션에서 세션 시간 초과를 설정하는 방법 SpringBoot 세션에서 세션 시간 초과를 설정하는 방법 May 15, 2023 pm 02:37 PM

springboot 프로젝트 프로덕션 세션아웃 시간 초과에서 문제가 발견되었습니다. 문제 설명: 테스트 환경에서는 세션아웃 구성이 적용되었는지 확인하기 위해 application.yaml을 변경하여 세션아웃을 구성했습니다. , 프로덕션 환경에 도착하면 만료 시간이 8시간으로 직접 설정되었습니다. 그런데 정오에 고객으로부터 프로젝트 만료 시간이 짧게 설정되어 있다는 피드백을 받았습니다. 30분 동안 아무 작업도 수행하지 않으면 세션이 만료되어 반복 로그인이 필요합니다. 개발 환경 처리 문제를 해결합니다. springboot 프로젝트에는 Tomcat이 내장되어 있으므로 프로젝트의 application.yaml에 구성된 세션 아웃이 효과적입니다. 프로덕션 환경: 프로덕션 환경 릴리스는 다음과 같습니다.

세션 실패를 해결하는 방법 세션 실패를 해결하는 방법 Oct 18, 2023 pm 05:19 PM

세션 실패는 일반적으로 세션 수명 만료 또는 서버 종료로 인해 발생합니다. 해결 방법은 다음과 같습니다. 1. 세션 수명을 연장합니다. 3. 쿠키를 사용합니다. 4. 세션 관리 미들웨어를 사용합니다.

PHP 세션 교차 도메인 문제에 대한 솔루션 PHP 세션 교차 도메인 문제에 대한 솔루션 Oct 12, 2023 pm 03:00 PM

PHPSession의 도메인 간 문제 해결 프런트엔드와 백엔드 분리 개발에서 도메인 간 요청이 표준이 되었습니다. 도메인 간 문제를 처리할 때 일반적으로 세션 사용 및 관리가 포함됩니다. 그러나 브라우저 원본 정책 제한으로 인해 기본적으로 도메인 간에 세션을 공유할 수 없습니다. 이 문제를 해결하려면 도메인 간 세션 공유를 달성하기 위한 몇 가지 기술과 방법을 사용해야 합니다. 1. 도메인 간 세션을 공유하기 위한 쿠키의 가장 일반적인 사용

새로 고침 후 PHP 세션이 사라지면 어떻게 해야 합니까? 새로 고침 후 PHP 세션이 사라지면 어떻게 해야 합니까? Jan 18, 2023 pm 01:39 PM

새로 고침 후 PHP 세션이 사라지는 문제에 대한 해결 방법: 1. "session_start();"를 통해 세션을 엽니다. 2. 모든 공개 구성을 PHP 파일에 작성합니다. 3. 변수 이름은 배열 첨자와 같을 수 없습니다. 4. phpinfo에서 세션 데이터의 저장 경로를 확인하고 파일 디렉터리의 sessio가 성공적으로 저장되었는지 확인합니다.

세션 PHP의 기본 만료 시간은 얼마입니까? 세션 PHP의 기본 만료 시간은 얼마입니까? Nov 01, 2022 am 09:14 AM

세션 PHP의 기본 만료 시간은 1440초(24분)입니다. 즉, 클라이언트가 24분 이상 새로 고치지 않으면 사용자가 브라우저를 닫으면 현재 세션이 만료되고 세션이 종료됩니다. 세션이 더 이상 존재하지 않습니다.

Springboot2 세션 시간 초과 설정이 잘못된 문제를 해결하는 방법 Springboot2 세션 시간 초과 설정이 잘못된 문제를 해결하는 방법 May 22, 2023 pm 01:49 PM

문제: 오늘 프로젝트에서 설정 시간 초과 문제가 발생했으며 SpringBoot2의 application.properties에 대한 변경 사항이 적용되지 않았습니다. 해결 방법: server.* 속성은 SpringBoot에서 사용하는 내장 컨테이너를 제어하는 ​​데 사용됩니다. SpringBoot는 ServletWebServerFactory 인스턴스 중 하나를 사용하여 서블릿 컨테이너의 인스턴스를 생성합니다. 이러한 클래스는 server.* 속성을 사용하여 제어되는 서블릿 컨테이너(tomcat, jetty 등)를 구성합니다. 애플리케이션이 Tomcat 인스턴스에 war 파일로 배포되면 server.* 속성이 적용되지 않습니다. 적용되지 않습니다.

JavaScript와 PHP 쿠키의 차이점은 무엇입니까? JavaScript와 PHP 쿠키의 차이점은 무엇입니까? Sep 02, 2023 pm 12:29 PM

JavaScript쿠키 JavaScript 쿠키를 사용하는 것은 선호도, 구매, 커미션 및 기타 정보를 기억하고 추적하는 가장 효과적인 방법입니다. 더 나은 방문자 경험이나 웹사이트 통계를 위해 필요한 정보입니다. PHPCookieCookies는 클라이언트 컴퓨터에 저장되고 추적 목적으로 보관되는 텍스트 파일입니다. PHP는 HTTP 쿠키를 투명하게 지원합니다. JavaScript 쿠키는 어떻게 작동하나요? 귀하의 서버는 쿠키 형태로 방문자의 브라우저에 일부 데이터를 보냅니다. 브라우저는 쿠키를 허용할 수 있습니다. 존재하는 경우 방문자의 하드 드라이브에 일반 텍스트 기록으로 저장됩니다. 이제 방문자가 사이트의 다른 페이지에 도달하면

Redis 공유 세션 애플리케이션에서 SMS 로그인을 구현하는 방법 Redis 공유 세션 애플리케이션에서 SMS 로그인을 구현하는 방법 Jun 03, 2023 pm 03:11 PM

1. 세션 기반 SMS 로그인 구현 1.1 SMS 로그인 흐름도 1.2 SMS 인증코드 전송 구현 프런트엔드 요청 설명: 요청 방법 설명 POST 요청 경로/사용자/코드 요청 매개변수 전화(전화번호) 반환 값 백엔드 인터페이스 없음 구현: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1인 경우 휴대폰 번호를 확인합니다.

See all articles