過去 2 日間からこの問題に取り組んでいましたが、まだ解決できません。
セッションが登録されたルートディレクトリに2つのスクリプトがあり、ページに再度アクセスしても永続的なままですが、サブディレクトリスクリプトからページにアクセスしようとすると、セッションが登録されていないことが示唆されます。
以下の詳細説明:
問題は、次のルート ディレクトリ スクリプトから start_session() を実行すると、http ://www.kstreethome.com/test.php が正常に動作することです。
/test.php のコード
<?php
error_reporting(E_ALL);
echo "This is session save path : " . session_save_path() . "</br>";
//echo phpinfo();
if(!isset($_SESSION['User']))
{
echo "Session not set </br>";
session_start();
$_SESSION['User'] = "Hiren";
$_SESSION['AccessType'] = "U";
$_SESSION['UserType'] = "W";
$_SESSION['UserID'] = "123";
$_SESSION['DataUser'] = "Test";
$_SESSION['Password'] = "Test";
echo session_id();
echo $_SESSION['User'];
echo $_SESSION['AccessType'];
echo $_SESSION['UserType'];
echo $_SESSION['UserID'];
echo $_SESSION['DataUser'];
echo $_SESSION['Password'];
}
else
{
echo "Session set </br>";
echo $_SESSION['User'];
echo $_SESSION['AccessType'];
echo $_SESSION['UserType'];
echo $_SESSION['UserID'];
echo $_SESSION['DataUser'];
echo $_SESSION['Password'];
}
?>
しかし
サブディレクトリAjaxスクリプトから start_session() を実行すると: http://www.kstreethome.com/Ajax/test.php動作しませんが、このスクリプトではセッションを保存し、同じ実行でアクセスできますが、リロードすると/ Ajax/test.php セッションが破棄され、最初からやり直す必要があります。
/Ajax/test.php のコード
<?php
error_reporting(E_ALL);
echo "This is session save path : " . session_save_path() . "</br>";
//echo phpinfo();
if(!isset($_SESSION['User']))
{
echo "Session not set </br>";
session_start();
$_SESSION['User'] = "Hiren";
$_SESSION['AccessType'] = "U";
$_SESSION['UserType'] = "W";
$_SESSION['UserID'] = "123";
$_SESSION['DataUser'] = "Test";
$_SESSION['Password'] = "Test";
echo session_id();
echo $_SESSION['User'];
echo $_SESSION['AccessType'];
echo $_SESSION['UserType'];
echo $_SESSION['UserID'];
echo $_SESSION['DataUser'];
echo $_SESSION['Password'];
}
else
{
echo "Session set </br>";
echo $_SESSION['User'];
echo $_SESSION['AccessType'];
echo $_SESSION['UserType'];
echo $_SESSION['UserID'];
echo $_SESSION['DataUser'];
echo $_SESSION['Password'];
}
?>
コードは両方のファイルで同じであり、テスト目的です
別の奇妙なことは、ルート スクリプト /test.php ではセッション パス '' と表示されることです。これは、php.ini のデフォルトを変更していないため、デフォルトの null ですが、スクリプト /Ajax/test.php では、セッション保存パスは / と表示されます。 tmp 変ですよね?
言うまでもなく、私のローカル サーバーでは正常に動作しますが、ホスティング サーバーでは動作しないため、この問題について説明してください。