ホームページ > バックエンド開発 > PHPチュートリアル > PHPでセッションを作成する方法

PHPでセッションを作成する方法

墨辰丷
リリース: 2023-03-30 12:00:02
オリジナル
6131 人が閲覧しました

この記事では主にPhpでセッションを作成する方法を紹介します。興味のある方はぜひ参考にしてください。

関連トピックの推奨事項: phpセッション (画像、テキスト、ビデオ、実践的なケースを含む)

セッションセッションを開始し、$admin変数を作成します:

// 启动 session session_start(); 
// 声明一个名为 admin 的变量,并赋空值。 
$_session["admin"] = null; 
?>  
ログイン後にコピー

セッションを使用する場合、またはPHPファイルが必要な場合セッション変数を呼び出すには、セッションを呼び出す前に session_start() 関数を使用して変数を開始する必要があります。他に何も設定する必要はありません。PHP が自動的にセッション ファイルを作成します。

このプログラムを実行すると、システムの一時フォルダーでセッション ファイルが見つかります。通常、ファイル名は sess_4c83638b3b0dbf65583181c2f89168ec の形式で、その後に 32 ビットでエンコードされたランダムな文字列が続きます。エディタで開き、その内容を確認します。

admin|N;
ログイン後にコピー

一般的な内容の構造:

変数名 | 型: 長さ: 値; 各変数をセミコロンで区切ります。長さや種類など一部は省略できます。

データベースにユーザー名と md5 で暗号化されたパスワードが保存されていると仮定します。

// 表单提交后...   
$posts = $_POST; 
// 清除一些空白符号 
foreach ($posts as $key => $value) 
{ 
$posts[$key] = trim($value); 
} 
$password = md5($posts["password"]); 
$username = $posts["username"]; 
$query = "SELECT `username` FROM `user` WHERE `password` = '$password'"; 
// 取得查询结果 
$userInfo = $DB->getRow($query); 
if (!emptyempty($userInfo)) 
{ 
if ($userInfo["username"] == $username) 
{ 
// 当验证通过后,启动 session 
session_start(); 
// 注册登陆成功的 admin 变量,并赋值 true 
$_SESSION["admin"] = true; 
} 
else 
{ 
die("用户名密码错误"); 
} 
} 
else 
{ 
die("用户名密码错误"); 
}
ログイン後にコピー

ログインするかどうかを決定するためにユーザー認証が必要なページでセッションを開始します。非常に簡単です? 変更 $ _session はサーバー側に保存される配列とみなすことができ、登録する各変数は配列のキーとなります。これは配列を使用するのと何ら変わりません。

システムからログアウトしたい場合はどうすればよいですか?

// 防止全局变量造成安全隐患 
$admin = false; 
// 启动会话,这步必不可少 
session_start(); 
// 判断是否登陆 
if (isset($_SESSION["admin"]) && $_SESSION["admin"] == true) 
{ 
echo "您已经成功登陆"; 
} 
else 
{ 
// 验证失败,将 $_session["admin"] 置为 false 
$_SESSION["admin"] = false; 
die("您无权访问"); 
} 
?>
ログイン後にコピー

Session は Cookie のようにライフサイクルを設定できますか? Session では、Cookie は完全に放棄されますか? Session と Cookie を組み合わせて使用​​するのが最も便利だと思います。

セッションはどのようにしてクライアント ユーザーを決定しますか? セッション ID とはセッション ファイルのファイル名であり、一意性とランダム性を保証します。セッションのセキュリティ。通常、セッションのライフサイクルが設定されていない場合、セッション ID はブラウザを閉じた後、自動的にログアウトされ、新しいセッション ID が登録されます。

クライアントがCookieを無効にしない場合、Cookieはセッションの開始時にセッションIDとセッションの有効期間を保存する役割を果たします。 セッションの有効期間を手動で設定しましょう:

<?php 
session_start(); 
// 这种方法是将原来注册的某个变量销毁 
unset($_SESSION["admin"]); 
// 这种方法是销毁整个 session 文件 
session_destroy(); 
?>
ログイン後にコピー

実際、Session にはセッションの有効期間を設定する関数 session_set_cookie_params(); も用意されています。この関数は session_start() 関数が呼び出される前に呼び出す必要があります。 IE 6.0 では、Cookie を設定する session_set_cookie_params() 関数にいくつかの問題があるため、依然として setcookie 関数を手動で呼び出して Cookie を作成します。

クライアントが Cookie を無効にしたらどうなるでしょうか? ブラウザを閉じてページを再度リクエストする限り、ライフサイクル全体がセッションを再登録する必要があります。では、セッション ID を渡すにはどうすればよいでしょうか? URL または非表示フォームを介して渡すと、URL は http://www.openphp .cn /index.php の形式で自動的に送信されます。 ?PHPSESSID=bba5b2a240a77e5b44cfa01d49cf9669。URL のパラメータ PHPSESSID はセッション ID であり、$_GET を使用して値を取得することで、ページ間でセッション ID を転送できます。

session_start(); 
// 保存一天 
$lifeTime = 24 * 3600; 
setcookie(session_name(), session_id(), time() + $lifeTime, "/"); 
?>  
ログイン後にコピー

仮想ホストの場合、すべてのユーザーのセッションがシステムの一時フォルダーに保存されると、メンテナンスが困難になり、セキュリティが低下します。 session_save_path() には、セッション ファイルの保存パスを手動で設定できます。 。もちろん、Web 経由でアクセスできないフォルダーをセッション保存ディレクトリに指定することもできます。そのフォルダーには読み取り/書き込み属性が必要です。

// 保存一天 
<?php 
$lifeTime = 24 * 3600; 
session_set_cookie_params($lifeTime); 
session_start(); 
$_session["admin"] = true; 
?>  
ログイン後にコピー

session_set_cookie_params(); 関数と同様に、session_start() 関数を呼び出す前に session_save_path() 関数も呼び出す必要があります。 配列やオブジェクトをセッションに保存することもできます。配列の操作と一般変数の操作に違いはありません。オブジェクトを保存する場合、PHP はオブジェクトを自動的にシリアル化し (シリアル化とも呼ばれます)、セッションに保存します。次の例はこの点を示しています:

// 保存一天 
<?php 
$lifeTime = 24 * 3600; 
// 取得当前 session 名,默认为 PHPSESSID 
$sessionName = session_name(); 
// 取得 session ID $sessionID = $_GET[$sessionName]; 
// 使用 session_id() 设置获得的 session ID 
session_id($sessionID); 
session_set_cookie_params($lifeTime); 
session_start(); 
$_session["admin"] = true; 
?>
ログイン後にコピー

概要

: 上記がこの記事の全内容です。皆さんの学習に役立つことを願っています。

関連する推奨事項:

PHPでリモート画像のサイズとサイズを取得する方法

phpの二層ループで99の九九を実装

phpはExpress Birdインターフェースを呼び出します

以上がPHPでセッションを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート