1

私のウェブサイトにログインすると、セッションが私のウェブサイトのすべてのサブドメインに引き継がれるように設定しようとしています。たとえば、domain.com にアクセスしてログインし、次に sub.domain.com にアクセスすると、すでに sub.domain.com にログインしています。

私の理解では、 ini_set('session.cookie_domain','.domain.com') を使用してから session_start() を使用してから、セッション変数を設定しますが、これは機能しません。

私がやっていることの例:

domain.com のコード:

<?php
 ini_set('session.cookie_domain','.domain.com');
 session_start();
 $_SESSION['variable'] = 1;
?>

sub.domain.com のコード:

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

ただし、 $_SESSION['variable'] は設定されていません。

また、sub.domain.com コードで ini_set() を使用してみましたが、違いはありませんでした。ini_get() を使用して、session.cookie_domain の設定が機能していることを確認しました。

私は何を間違っていますか?ありがとう!

4

3 に答える 3

4

最初に ini_set を確認します

<?php
ini_set('session.cookie_domain','.domain.com');

echo ini_get('session.cookie_domain');

session_start();  
$_SESSION['variable'] = 1; 

?> 

アップデート:

考えてみてください..あなたも試しましたか:

<?php

session_set_cookie_params( 0, "/", ".domain.com", false, false); 
session_start();  
$_SESSION['variable'] = 1; 

?> 

更新 2: 代替処理 (手動の Cookie 処理)

<?php

session_start();  
session_regenerate_id();
$_SESSION['variable'] = "String Test";

setcookie('PHPSESSID',session_id(),time()+86400,'/','.domain.com');
echo session_id();
?> 

そしてサブドメインファイルで

<?php  
if (isset($_COOKIE['PHPSESSID']) && !empty($_COOKIE['PHPSESSID'])) session_id($_COOKIE['PHPSESSID']);

session_start();  
echo $_SESSION['variable'] . "<br />"; 
echo $_COOKIE['PHPSESSID'] . "<br />";
echo session_id();
?> 

セッション情報をハンドオフ/処理するために、すべてのファイルに追加できる3行

if (isset($_COOKIE['PHPSESSID']) && !empty($_COOKIE['PHPSESSID'])) session_id($_COOKIE['PHPSESSID']);
session_start();  
if (!isset($_COOKIE['PHPSESSID'])) setcookie('PHPSESSID',session_id(),time()+86400,'/','.domain.com');

セッションを通じてどのような情報を渡しますか? または、ログインなどを処理するために使用していますか?

于 2011-01-08T01:59:41.453 に答える
1

まあ、他のすべてが失敗した場合は、独自のセッションを実装できます。すべて$_SESSIONは PHP にあり、Cookie の set/get とファイルに基づくデータストアのラッパーです。Cookie を手動で識別子を使用して保存し、データをその識別子に関連付けると (たとえば、DB でも)、本質的に同じ機能を得ることができます (serialize()さまざまなセッション データの束を保存する場合に役立つ場合があります)。

于 2011-01-08T01:40:39.500 に答える