1

私のPHPアプリケーションでは、UserName&Pwdを使用し、データベースのuserテーブルをチェックして、ユーザーの有効性をチェックしました。ログインが成功した後、以下のようにサーバーセッションに資格情報を保存しました。

$_SESSION['username'] = $username;
$_SESSION['pwd'] = $pwd;

そして、セッションをチェックして、ユーザーがすでにログインしていることを確認しました。以下のコードを確認できます。

if (empty($_SESSION['userId']))
    header("Location: login.php");

問題は、ブラウザでCookieを無効にした場合、ログインに成功しても別のページに移動できないことです。PHPセッションはCookieを使用して、ブラウザにいくつかの値を保存していることがわかりました。PHP5でCookieなしのセッションを使用する方法はありますか?

4

4 に答える 4

1

はい。ただし、すべてのリンクに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

于 2010-07-08T23:00:53.567 に答える
0

はい、しかしあなたはしたくありません。実際、Cookieベースのセッションのみを使用する必要があります。これは、PHP5.3のデフォルト構成です。詳細については、セッション固定についてお読みください。

ユーザーがCookieなしでサイトを使用できるようにすることを強制する状況はどのようなものですか?

于 2010-07-08T23:01:13.207 に答える
0

はい、できます。を有効にすることで可能session.use_trans_sidです。ただし、そうすることにはセキュリティ上の懸念があります。

ログインするには、Cookieを受け入れる必要があることが一般的に認められています。

もう1つの方法は、セッションの代わりにhttp認証を使用することですが、これにも欠点があります。

セッションIDの受け渡しを参照してください。

于 2010-07-08T23:01:16.400 に答える
0

セッションIDを生成し、次のようにリンクに追加できます

<?php
session_start();
$session_id = session_id();
header('Location: http://www.test.com/?sess_id='. $session_id);
?>
于 2010-07-08T23:05:50.440 に答える