ホームページ >バックエンド開発 >PHPチュートリアル >PHPでセッションを作成する方法
この記事では主に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 サイトの他の関連記事を参照してください。