WHMCS と Drupal を統合しました。ただし、Drupal に移動して SESSION を print_r すると、WHMCS ページに移動した場合とはまったく異なる情報が表示されます。だから、私の質問は、どうすれば一方のセッションからもう一方のセッションにアクセスできますか?
ユーザーがログインしているかどうかを確認するために、アクセスする必要があります。
WHMCS と Drupal を統合しました。ただし、Drupal に移動して SESSION を print_r すると、WHMCS ページに移動した場合とはまったく異なる情報が表示されます。だから、私の質問は、どうすれば一方のセッションからもう一方のセッションにアクセスできますか?
ユーザーがログインしているかどうかを確認するために、アクセスする必要があります。
session.name
取得する値は、 のディレクティブによって異なりますphp.ini
。それらがお互いを読み取れるようにする場合は、同じを設定しsession.name
ます。
というか、セッション データは と同じ名前の Cookie の識別子に基づいて読み込まれsession.name
ます。これはデフォルトで に設定されてPHPSESSID
いますが、自分で変更できます。
ini_set()
またはを使用して、実行時にこれを設定できますsession_name()
。
Drupal は、ブートストラップ中に独自のセッション処理関数を登録しますsession_set_save_handler()
( drupal_bootstrap()
)。また、 に独自のセッション mame を設定しconf_init()
ます。
Drupal のハンドラーが原因で、標準の PHP セッションを使用する前に WHMCS のセッション名を復元することはできません。PHP は Drupal のハンドラを使用して、セッション情報を開き、読み取り、書き込みなどを行います。sess_read()
得られるのは、 PHP によって呼び出されたときに返された間違った Drupal のセッションのデータだけです。
WHMCS のセッションを読み取る 1 つの方法は、それがどのように格納されているかを理解し、PHP のセッション関数を使用せずにアクセスすることです。
別の方法として、Drupal が行ったこと (セッション名の変更とハンドラーの登録) を取り消して、PHP のセッション関数のデフォルトの動作を復元し、WHMCS のセッションを読み取り、Drupal のセッション名とハンドラーを復元することもできます。