Jadual Kandungan
回复内容:
Rumah pembangunan bahagian belakang tutorial php 将Session写入数据库是不是PHP原来的session完全就被自己替代了,相当于自己实现了session?

将Session写入数据库是不是PHP原来的session完全就被自己替代了,相当于自己实现了session?

Jun 06, 2016 pm 08:45 PM
php

我看见很多都将session写入数据库。如果将session写入数据库,是不是相当于自己实现了数据库的session?原来自带的就失效了?

回复内容:

我看见很多都将session写入数据库。如果将session写入数据库,是不是相当于自己实现了数据库的session?原来自带的就失效了?

这个问题我觉得首先要先明确到底什么是session,个人觉得session是一种实现,跟cookie性质不太一样。

举例登录 http://segmentfault.com/

  • 登录成功的时候服务器会生成一个类似diM4og.6c3c602eff435b68a0e2aeca90254482.a 的随机字符串,并将这个字符串与我的id(1030000000093602)关联起来存储在 服务器端 ,这样服务器端就知道 diM4og.6c3c602eff435b68a0e2aeca90254482.a 这个字符串属于哪个用户了。

    当然存储方式就随意选择了,以文件形式存储、数据库、redis、memcached

  • 同时会在用户登录成功后将 diM4og.6c3c602eff435b68a0e2aeca90254482.a 这个字符串以cookie的形式发送给客户端浏览器。 以 sf 为例,这个字符串存储在一个名为 sfsess 的cookie中。

  • 这样,登录后的每次访问,服务器端都会从客户端发来的cookie中读取中这个字符串,在服务器端查询是否有这个字符串的登录记录,有的话根据与之关联的 id 显示用户已登录。

这就是 session 的实现原理,python,java做的网站也一样,都是这个道理


下面说下PHP自带的 $_SESSION ,在我们用这句代码的时候,其实php同样做了上面的事情,只不过它是自动的,不用考虑具体实现。php服务器端存储session字符串是以文件形式存储的,客户端的cookie名是 PHPSESSION ,session过期什么的都由php自动管理了,当然cookie名称和过期时间等都可以通过配置php更改。

这就是php的优点,其实语言需要单独实现的session模块它一句代码搞定了。当然这也是它的缺点,使我们难以理解session的具体概念以及实现原理。

我看见很多都将session写入数据库。如果将session写入数据库,是不是相当于自己实现了数据库的session?原来自带的就失效了?

所以并不存在自带的失不失交的问题,只是以更屌的方式自己实现了session的验证而已,抛开了php的傻瓜代码。

另:sf 应该用的 redis 存储,Typecho用的数据库存储,楼主可以参考一下。

只是更改了session存放的地方,session还存在,只是从数据库里调用。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Tarikh dan Masa CakePHP

Konfigurasi Projek CakePHP Konfigurasi Projek CakePHP Sep 10, 2024 pm 05:25 PM

Konfigurasi Projek CakePHP

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Muat naik Fail CakePHP

Penghalaan CakePHP Penghalaan CakePHP Sep 10, 2024 pm 05:25 PM

Penghalaan CakePHP

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

Bincangkan CakePHP

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP

Panduan Ringkas CakePHP Panduan Ringkas CakePHP Sep 10, 2024 pm 05:27 PM

Panduan Ringkas CakePHP

See all articles