PHP5における急冷認証
-
13-09-2020 - |
質問
私のPHPアプリケーションでは、UserName&PWDを使用し、データベース内のユーザーテーブルを確認してユーザーの有効性を確認してください。ログインが成功したら、次のようにサーバーセッションの資格情報を保存します。
$_SESSION['username'] = $username;
$_SESSION['pwd'] = $pwd;
.
と私はセッションをチェックして、ユーザーがすでにログインしていることを確認しました。以下のコードが表示されます。
if (empty($_SESSION['userId']))
header("Location: login.php");
.
問題はブラウザでCookieを無効にした場合、ログインが成功したとしても別のページに入ることができませんでした。PHPセッションは、Cookieを使用してブラウザにいくつかの値を格納します。PHP5でクッキーレスセッションを使用する方法はありますか?
解決
はいですが、sessid
またはsid
をすべてのリンクに追加する必要があります。
ここで詳細に説明されています: http://myles.eftos..id.au / blog / 2005/11 / 26 / Cookie-Less-Sessions-In-PHP /
php.ini
を変更する必要があります.php_value session.use_trans_sid = 1
。
他のヒント
はい、しかしあなたはしたくないです。実際、のみを使用する必要がありますCookieベースのセッションを使用する必要があります。これはPHP 5.3以降のデフォルト設定です。詳細については、 Session Fixation をご覧ください。
あなたがユーザーがクッキーなしであなたのサイトを使うことができるようにする必要性のあるどのような状況を持っていますか?
はい、session.use_trans_sid
を有効にすることでできます。しかし、そうすることにセキュリティ上の懸念があります。
通常ログインするためには、クッキーを受け入れる必要があることが一般的に認められています。
その他の代替案は、セッションの代わりにHTTP認証を使用することですが、これはそれが欠点です。
セッションIDを生成し、この
のようなリンクに追加することができます。<?php
session_start();
$session_id = session_id();
header('Location: http://www.test.com/?sess_id='. $session_id);
?>
.