PHP はセッション制御による認証例を実装します
この記事では、セッション制御による PHP 認証の例を紹介します。ID の認証は、セッションを通じてデータを送信することです。困っている友達が来て探してくれるかもしれません。
セッション制御の考え方は、Web サイト上のセッションに基づいてユーザーを追跡できるようにすることです。詳細なコードはここにまとめられています。必要な友人はそれを参照してください。
概要
http プロトコルはステートレスであり、リクエストごとにサーバーはユーザーを区別できません。 PHP セッション制御はユーザーにキー (暗号化されたセッション文字列) を提供します。これはユーザーの ID の証明でもあり、サーバーはこのキーで開くことができるボックス (データベース、メモリ データベース、またはファイル) を保存します。ユーザーのさまざまな可変情報。
従来の php セッションの使用
<?php //page1.php 启动一个会话并注册一个变量 session_start(); $_SESSION['user_var'] = "hello,codekissyoung!"; //这里的可以将$_SESSION理解为用户的箱子,实际的实现是php在服务器端生成的小文件 ?>
<?php //page2.php session_start(); echo $_SESSION['user_var'];//通过钥匙访问自己的箱子内的变量 $_SESSION['user_var'] = "bey,codekissyoung!"; ?>
<?php //page3.php 销毁钥匙,一般在用户注销时,访问page3.php文件 session_start(); session_destroy(); ?>
質問ですが、キーはどこにありますか?ユーザーにキーを与える操作を見ませんでしたか?
この操作は、php によってバックグラウンドで行われます。page1.php にアクセスすると、プログラムが実行されるため、session_start();、php はその時点の条件 (ユーザー IP、ブラウザー番号、時刻) に基づいてそれを生成します。 PHPSESSID 変数。http 応答がクライアントに返された後、このドメイン名に再度アクセスするたびに、この PHPSESSID がサーバーに送信されます。この PHPSESSID が、ここで話しているユーザー キーです。
もう一つ質問ですが、この PHPSESSID のセキュリティは、盗まれやすいですか、偽造されやすいですか、改ざんされやすいですか?
HTTPS を使用すると改ざんを防ぐことができます。 PHPSESSID は使用せず、偽造を防ぐためにユーザーの秘密キーを生成します。盗難されやすいかどうかについては、実際には研究されていません。たとえば、コンピュータがインターネットに接続されており、ハッカーがコンピュータに侵入したとします。
生成された秘密鍵をブラウザのCookieに保存
Cookieを設定
setCookie('key','value',time()+3600);
Cookieを削除
setCookie('key','',time()-1);
シングルサインオンの実現: セッション共有
シングルサインオン: 複数のサブシステムがユーザー認証システムを共有し、1 つのログインでアクセスが可能すべてのサブシステムに。
次のシナリオを想像してください: サーバー A と B の PHP 環境が同じであると仮定します。ユーザーはサーバー A でキーを取得し、そのキーを使用してサーバー B にアクセスしました。ユーザーはサーバー B を知っていますか?
明らかにそうではありません。サーバーはサーバー A によって生成されたキーを認識しません。
解決策: ユーザーが A または B にアクセスするかどうかに関係なく、生成されたキーを C (同じデータベースまたはキャッシュ システム) に保存します。ユーザーが再度 A または B にアクセスすると、A と B の両方が C に次のように尋ねます。ユーザーのキーは正しいですか?正しければ、ユーザーはAまたはBに保管されているボックスを使用できるようになります。
<?php session_regenerate_id();//重置 session 字符 $session_info=array('uid'=>$uid,'session'=>session_encrypt(session_id().time())); //下一步将,$session_info 存到 C 中 ?>
以下は、セッション制御を通じて認証を実装する php の例です。
認証アプリケーション本体: authmain: セッション変数をログアウトし、セッションを破棄します: logout.php
<?php //开启一个会话 session_start(); if((!isset($userid))||(!isset($password))) { $userid=$_POST['userid']; $password=$_POST['password']; //连接数据库 $db_conn=new mysqli("localhost", "root", "","auth"); if(mysqli_connect_errno()){ echo '连接数据库失败:'.mysqli_connect_error(); exit(); } //执行SQL查询语句 $query="SELECT * FROM authorized_users WHERE name='".$userid."' and password=sha1('".$password."')"; $result=$db_conn->query($query); if($result->num_rows>0){ //注册一个会话变量 $_SESSION['valid_user']=$userid; } //断开数据库连接 $db_conn->close(); } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>身份验证</title> </head> <body> <h1>主页</h1> <?php //判断用户是否已经登录 if(isset($_SESSION['valid_user'])){ echo $_SESSION['valid_user'].',您好,你已经登录'; echo '<a href="logout.php">退出登录</a><br/>'; }else{ if(isset($userid)){ echo '您没有登录成功'; }else{ echo '您还没有登录<br/>'; } ?> <form method="post" action="authmain.php"> <p>用户名:<input type="text" name="userid"></p> <p>密码:<input type="password" name="password"></p> <p><input type="submit" name="submit" value="登录"></p> </form> <?php } ?> <br/> <a href="members_only.php">登录进入</a> </body> </html>
要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。
フォーマットファイルの開き方のまとめ
PHPデータベースでのmemcacheの使い方
以上がPHP はセッション制御による認証例を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
