検索
ホームページphp教程php手册让token令牌的session永远保持1个

原来的token是每个页面对应一个session来存放__hash__值,
我的每个页面头部都有一个登录框,用户每访问一个页面就会产生一个token,如果用户一直不提交,那么token就不会自动销毁(除非session过期)。
一个解决方案是通过配置文件,关闭令牌,只有在需要的视图中打开配置参数。
但是我觉得我的网站不需要同时多个页面同时提交表单,而且我使用了session db hander扩展,内存表的char字段长度是有限制的,不可能无限存放那么多token。

所以我决定让用户只能保留一个token。
这样做还有一个好处,可以避免用户多个页面同时提交,刷回复什么的
ThinkPHP/lib/Behavior/TokenBuildBehavior.class.php
搜索// 创建表单令牌<br>     private function buildToken() {<br>         $tokenName  = C('TOKEN_NAME');<br>         $tokenType  = C('TOKEN_TYPE');<br>         if(!isset($_SESSION[$tokenName])) {<br>             $_SESSION[$tokenName]  = array();<br>         }<br>         // 标识当前页面唯一性<br>         $tokenKey   =  md5($_SERVER['REQUEST_URI']);<br>         if(isset($_SESSION[$tokenName][$tokenKey])) {// 相同页面不重复生成session<br>             $tokenValue = $_SESSION[$tokenName][$tokenKey];<br>         }else{<br>             $tokenValue = $tokenType(microtime(TRUE));<br>             $_SESSION[$tokenName][$tokenKey]   =  $tokenValue;<br>         }<br>         $token      =  '<input>';<br>         return $token;<br>     }改为:// 创建表单令牌<br>     private function buildToken() {<br>         $tokenName  = C('TOKEN_NAME');<br>         $tokenType  = C('TOKEN_TYPE');<br> //        if(!isset($_SESSION[$tokenName])) {<br> //            $_SESSION[$tokenName]  = array();<br> //        }<br>         $_SESSION[$tokenName]=array();//生成令牌前清空已有令牌。<br>         // 标识当前页面唯一性<br>         $tokenKey   =  md5($_SERVER['REQUEST_URI']);<br>         if(isset($_SESSION[$tokenName][$tokenKey])) {// 相同页面不重复生成session<br>             $tokenValue = $_SESSION[$tokenName][$tokenKey];<br>         }else{<br>             $tokenValue = $tokenType(microtime(TRUE));<br>             $_SESSION[$tokenName][$tokenKey]   =  $tokenValue;<br>         }<br>         $token      =  '<input>';<br>         return $token;<br>     }这样就可以了。

AD:真正免费,域名+虚机+企业邮箱=0元

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター