suchen
HeimBackend-EntwicklungPHP-Tutorial《PHP核心技术与最佳实践》-Cookie-Session深入

  1. Cookie是在远程浏览器端存储数据并以此跟踪和识别用户的机制。在实现上COOKIE是存储在客户端的一小段数据,客户端(比如浏览器)通过HTTP协议和服务器端进行COOKIE交互,COOKIE是HTTP头的一部分(即先发送COOKIE然后才是DATA域),COOIE独立于语言,PHP对COOKIE的操作是通过HTTP协议的'COOKIE'字段来向客户端(比如浏览器)发送命令,具体的管理由客户端(浏览器)全程完成,PHP中的对COOKIE的操作函数的结果就是客户端操作的返回结果。
  2. JAVASCRIPT设置COOKIE会立即生效,而PHP设置的COOKIE不能立即生效而需等到下一个页面才能看到,这是因为设置的这个页面的COOKIE由服务器传递给客户浏览器,在下一个页面浏览器发给服务器的HTTP请求头的COOKIE域里才带有上一个页面设置的COOKIE变量。COOKIE没有显式的删除函数,想删除COOKIE则将COOKIE的expire设置为过期时间,这会自动触发浏览器的删除机制。
  3. 与header()函数一样,setcookie()函数也要在输出数据之前调用,因为HTTP中cookie域在data域的前面。
  4. setcookie有一个HttpOnly参数,如果设置了则JS脚本不能读取到COOKIE,但如果浏览器不支持HttpOnly则JS也能读取到COOKIE,这样做可加强安全但通过其他方法还是能看到的。每个域名下允许的COOKIE数目是有限且不固定的,超过了就删除旧的,COOKIE在请求的上行和下行都会产生流量,所以COOKIE不是越多越好。
  5. COOKIE保存方式有两种,一种是在文件中一种是保存在浏览器内在中,在浏览器内存中的随着浏览器的关闭会消除,而保存在文件中的不会,还有一种COOKIE是Flash创建的,称为Flash Shard Object,又称Flash Cookie,即使清空浏览器隐私数据COOKIE还是顽固的存在在硬盘上,因为它们不受浏览器管理而只爱Flash管理,一些网站采用这种技术识别用户。
  1. Session和Cookie在本质上没区别,都是针对HTTP协议(无状态的协议)的局限性而提出的一种保持客户羰和服务器保持会话连接状态的机制。PHP的SESSION默认通过文件的方式实现,妈存储在服务器端的SESSION文件,每个SESSION一个文件,文件名(sessionID)是随机的,sessionID会作为COOKIE域的一个字段在HTTP请求的上行和下行中来回传递,SESSION文件的一般内容结构如下:变量名 | 类型:长度:值。

  2. SESSION以文件形式分目录存放,分目录是因为当一个目录的文件数超过2000时读写这个目录就会很慢。SESSION的回收是被动的,为了保证能正常回收,可修改PHP配置文件中的session.gc_divisor参数以提高回收率(太大了会增加负载),或者设置一个变量判断是否过期。对于设置分组目录存储的SESSION,PHP不会自动回收,需要自己实现回收机制。

  3. SESSION存入数据库:大访问量的站点,用默认的SESSION存储方式不适合,较优的方法是用DB存取SESSION,解决这个问题的方案就是session_set_save_handler()函数,bool session_set_save_handler(callback open,callback close,callback read,callback write,callback destroy,callback gc),设置用于读写SESSION的回调函数,只需实现这几个接口PHP就能帮助我们进行SESSION管理。

  4. CREATE TABLE 'tableName' ('sid) CHAR(40) NOT NULL COMMENT 'session名','data' VARCHAR(200) NOT NULL COMMENT 'session值','update' INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '更新时间',UNIQUE INDEX 'sid' ('sid')) COLLATE = 'utf8_general_ci' ENGINE = MEMORY ROW_FORMAT = DEFAULT

    MEMORY引擎采用内在表,所有数据存储在内在,操作速度快,对于SESSION这种形式的数据正好适用。

    class SessionSaveHandle {

    public $lifeTime;

    public $tosql;

    public $db;

    private $sessiondata;

    private $lastflush;

    private $sessName = 'PHPSESSID';

    function open ($savePath,$sessionName) {return true;}

    function close () {return true;}

    function read ($sid) {}/ 根据$sid获取data并保存在$this->sessiondata中/

    function write ($sessID,$sessData) {} / 写SESSION,有则更新无则插入,返回布尔值/

    function destroy ($sessID) {}

    function gc ($sessMaxLifeTime) {} / 删除数据库里距上次更新时间比$sessMaxLifeTime大的SESSION/

    }

    ini_set('session.use_trans_sid',0);

    ini_set('session.use_cookie',1);

    ini_set('session.use_path','/');

    ini_set('session.use_save_handler','user');

    session_module_name('user');

    $session = new SessionSaveHandle();

    session_set_save_handler(array($session,"open"),array($session,"close"),array($session,"read"),array($session,"write"),array($session,"destroy"),array($session,"gc"),);

  5. 在大流量的网站中,SESSION存入DB存在效率不高、占据数据库connection资源等问题,可以使用Memcached/Redis等KETY-VALUE数据存储方式实现高并发、大流量的网站。

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium)11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium)Mar 03, 2025 am 10:49 AM

Lange URLs, die oft mit Schlüsselwörtern und Tracking -Parametern überfüllt sind, können Besucher abschrecken. Ein URL -Verkürzungsskript bietet eine Lösung, die präzise Links erstellt, die ideal für soziale Medien und andere Plattformen sind. Diese Skripte sind für einzelne Websites a wertvoll

Einführung in die Instagram -APIEinführung in die Instagram -APIMar 02, 2025 am 09:32 AM

Nach seiner hochkarätigen Akquisition durch Facebook im Jahr 2012 nahm Instagram zwei APIs für den Einsatz von Drittanbietern ein. Dies sind die Instagram -Graph -API und die Instagram Basic Display -API. Ein Entwickler, der eine App erstellt, die Informationen von a benötigt

Arbeiten mit Flash -Sitzungsdaten in LaravelArbeiten mit Flash -Sitzungsdaten in LaravelMar 12, 2025 pm 05:08 PM

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagierenErstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagierenMar 04, 2025 am 09:33 AM

Dies ist der zweite und letzte Teil der Serie zum Aufbau einer Reaktionsanwendung mit einem Laravel-Back-End. Im ersten Teil der Serie haben wir eine erholsame API erstellt, die Laravel für eine grundlegende Produktlistenanwendung unter Verwendung von Laravel erstellt hat. In diesem Tutorial werden wir Dev sein

Vereinfachte HTTP -Reaktion verspottet in Laravel -TestsVereinfachte HTTP -Reaktion verspottet in Laravel -TestsMar 12, 2025 pm 05:09 PM

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIsCurl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIsMar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

12 Beste PHP -Chat -Skripte auf Codecanyon12 Beste PHP -Chat -Skripte auf CodecanyonMar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Ankündigung von 2025 PHP Situation SurveyAnkündigung von 2025 PHP Situation SurveyMar 03, 2025 pm 04:20 PM

Die 2025 PHP Landscape Survey untersucht die aktuellen PHP -Entwicklungstrends. Es untersucht Framework -Nutzung, Bereitstellungsmethoden und Herausforderungen, die darauf abzielen, Entwicklern und Unternehmen Einblicke zu geben. Die Umfrage erwartet das Wachstum der modernen PHP -Versio

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),