web-dev-qa-db-ja.com

Wordpressセッション管理

Wordpressを使用してサイトを立ち上げ、そのセッションに便乗したいのですが、プラグインもドキュメントも見つかりません。ハッキングを開始する前の提案や参照はありませんそれ?

注:私はWPが標準PHPセッション自体を使用し、PHPセッションを追加する方法ではなくたとえば、session_start()を使用します。どうやら、どの状態もWP維持するのは、他の方法で実現されます。そのため、PHPセッションを使用したい場合、追加して維持する必要があります私自身、スレッドのようなテクニックを使用しています。

皆さんありがとう!

22
dkretz

WordPressはsession_start()を呼び出していないようです。ステートレスでありたい場合、register_globalsが定義されていると、自動的に$_SESSION

15
Steve

セッションを使用するためにWP Coreファイルを変更することは非常に悪い考えです。私が見つけた最良の方法は、initアクションフックからsession_start()を呼び出すことです。

function kana_init_session() {
  session_start();
}

add_action('init', 'kana_init_session', 1);

テーマのfunctions.phpファイルに配置できます。

詳細な記事はここにあります: http://www.kanasolution.com/2011/01/session-variable-in-wordpress/

17
Andrey Rudenko

私がする必要があることについて、最良の答えは次のとおりです。

  1. wordpressのCookieがサブドメイン間で保持されるようにするには、ルートCookie plugin をインストールします。
  2. sub1.domain.comにはワードプレスがあります。 sub2.domain.comは別のサイトです。他のサイト(sub2)から、Cookieを読み取り、ユーザーが誰であるか、およびユーザーがログインしているかどうかを確認します。

私のCookieは次のとおりです。

[wordpress_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|d0249fced9c323835c5bf7e84ad3ffea
[wordpress_logged_in_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|56e9c19541ecb596a1fa0995da935700

PHPを使用して、Cookieをループし、key=>valueペアを解析できます。これらのCookieは、[mshaffer]にワードプレスに保存されたCookieがあり、logged_inとして認証されていることを知らせます。 Cookieの有効期限は1255298821です。

sub2では、wordpressのデータベースをクエリして、ユーザー情報を取得できます。

SELECT * FROM `wp_users` WHERE user_login = 'mshaffer' ...このクエリからuser_iduser_emailを取得

SELECT * FROM `wp_usermeta` WHERE user_id = '$user_id' ... wpから他の大量のデータを取得

この情報を使用して、sub2セッション変数/ cookieに追加し、データを使用して必要な処理を実行できます。ログインしているかどうか、およびユーザー名を特定できます。これにより、さまざまなデータを取得できます。 WordPress authentication in mysub2.domain.com)を使用し、それに応じてリダイレクトできるようになりました。

モンテ

{バツ:

5
mshaffer

WordPress Transient API の使用を検討してください

Transient APIを使用して保存された値は、現在のユーザーだけでなく、すべてのユーザーに表示されます。一時的なデータの取得に使用される一意の識別子に応じて、各ユーザーに一意な識別子を割り当てて、本質的に一時的なセッションをセッションのように動作させることができます。

その他の考慮事項:

  • オブジェクトキャッシュなどを使用して設定したユーザーによっては、トランジェントが常にDBに保存されるとは限りません(例:memcached)。セッションにトランジェントを使用すると、データが大きくなり、メモリがすぐにいっぱいになる可能性があります(memcachedの使用中)。

  • また、WPはトランジェントの自動ガベージコレクションを行わないようです: https://wordpress.stackexchange.com/questions/6602/are-transients-garbage-collected

5
farinspace

Wordpressはセッションを使用していないようです。

それを行う最善の方法は、それが提供するアクションフックを使用することです。

3
Anraiki

_wp_loaded_でsession_start()を使用して関数をフックすると、この場合は機能するようです。

1
vmassuchetto

ここで解決策を確認しましたか?これはここでうまくいくかもしれません

http://thedigilife.com/wordpress-how-to-set-session-custom-variable-while-login/

1
Chirag Kalani

このコードを最初の行のwp-config.phpに入れます:

if (!session_id()) {
    session_start();
}

このコードをテーマのheader.phpの最初の行に配置します。

session_start();

次に、すべてのセッション変数を維持します。

0
meddyman

独自のセッション値を使用する場合は、Wordpressはサポートしていますです。

wp-config.phpの上部に次の行を追加する必要があります

if (!session_id()) {
    session_start();
}

次に、header.phpの上部に次の行を追加します

session_start();
0
Alvin