4

Laravelは初めてで、Sessionsに問題があります。具体的には、Laravelの外部のPHPファイルからセッションデータを読み取ります。

たとえば、セッション変数を次のように設定したとします。Session::put('isAuthorized', 'yes')-Laravelコンテキストでこれをうまく取得できますSession::get('isAuthorized')が、次のPHPはこのセッションキーを取得しません-

<?php
session_start();
echo $_SESSION['isAuthorized'];
?>

戻り値

Notice: Undefined index: isAuthorized in C:\xampp\htdocs\session.php on line 3

Laravelセッションドライバーをデフォルトcookiefileモードの両方に設定してみましたが、同じ結果になりました。

4

4 に答える 4

8

セッションアダプタを作成することもできるので、$_SESSION変数はそのインスタンスになります。

<?php 
class SessionAdapter implements \ArrayAccess {

  public function offsetExists($offset) {
      return Session::has($offset);
  }

  public function offsetGet($offset) {
      return Session::get($offset);
  }

  public function offsetSet($offset, $value) {
      return Session::put($offset, $value);
  }

  public function offsetUnset($offset) {
      return Session::forget($offset);
  }

}

そして、コードのどこかに:

<?php 
$_SESSION = new SessionAdapter();
// or
$GLOBALS['_SESSION'] = new SessionAdapter();

このようにして、ネイティブPHPセッションとLaravelセッションは「同じ」になります。

于 2014-03-12T12:54:17.037 に答える
4

Laravelは、セッションにストレージドライバー、つまりCookie、ファイル、データベース、メモリ、memcached、redis(およびLaravel 4のAPC)を使用します。

Webはステートレス環境です。これは、アプリケーションへの各リクエストが以前のリクエストとは無関係であると見なされることを意味します。ただし、セッションでは、アプリケーションへの訪問者ごとに任意のデータを保存できます。各訪問者のセッションデータはWebサーバーに保存され、セッションIDを含むCookieは訪問者のマシンに保存されます。このCookieを使用すると、アプリケーションはそのユーザーのセッションを「記憶」し、アプリケーションへの後続のリクエストでセッションデータを取得できます。

http://laravel.com/docs/session/config

デフォルトのストレージドライバーはCookieなので、次のことを試してください。

print_r($_COOKIE);
于 2013-01-20T20:39:53.173 に答える
3

この回答はLaravel3に固有のものであることに注意してください

LaravelはPHPセッションを使用しないため、、などを忘れてsession_start()ください$_SESSION

ファイルセッションドライバーを使用して実行している場合、セッションデータはストレージ/セッション内のファイルに保存されます。CookieからLaravelセッションIDを読み取ることで、ファイルの名前を取得できます。したがって、問題を解決するためのハッキーな方法は、CookieからセッションIDを取得し、storage / sessionsフォルダーでその名前のファイルを探し、そのファイルを読み込むコードを記述してjson_decode()、全体を読み取ることです。もの。

Cookieセッションドライバーを使用している場合、すべてのセッションデータはCookieに保存されますが、暗号化されているため、キーのコピー(application / config / application.phpにある必要があります)が必要になります。 )次に、Laravelが使用している暗号化方法を把握して、復号化できるようにします。次に、すべてのセッション変数を読み取ることができます。

達成したいことを達成するには、つまり、現在の人が許可されているかどうかを確認するには、アプリにAPIを組み込み、ローカルホストのみがアクセスできるように保護する方がよい場合があります。パフォーマンスの観点からは優れたソリューションではありませんが、Laravelセッション管理の内部をハッキングしていないため、よりエレガントになる可能性があります。

于 2013-03-22T09:56:29.067 に答える
1

Laravelでのセッション処理は、実際にネイティブPHPセッションとは異なります。ネイティブPHPセッションを使用するには、次のように値を設定します。

<?php
    session_start();

    $_SESSION['isAuthorized'] = 'yes';

    echo $_SESSION['isAuthorized']; // output yes
?>
于 2013-03-22T07:46:11.133 に答える