-1

ユーザーがユーザー名とパスワードを入力するログインページがあります。成功した場合は、セッションを開始する index.php に彼をリダイレクトします。

session_start();

index.php から別のページ ("p1.php") に移動でき、"p1.php" の上に次のチェックがあります。

<?php
if(!isset($_SESSION)) 
{ 
    exit;
} 
?>

これはローカル サーバーでは機能しますが、これをリモート サーバーに展開すると!isset($_SESSION)常に true が返されます。

ここで何が起こっているのでしょうか?

編集:ホスティングプロバイダー側​​で、これをphp.iniに追加するリクエストを見つけました:

session_save_path("your home directory path"/phpsessions);

そして、パスに phpsessions フォルダーを作成します。

私はしましたが、それは役に立ちませんでした。

私もこれをやろうとしました:

index.php で:

session_start();
if(isset($_REQUEST['lecturer_id']))
{
    echo "lecturer_id set";
    $_SESSION['lecturer_id'] = $_REQUEST['lecturer_id']; // store session data
}

および p1.php では: session_start(); if(!isset($_SESSION['lecturer_id'])) { exit; }

そして、ページは常に終了します。つまり、セッション変数は定義されていません

4

4 に答える 4

2

サーバーは、ローカルサーバーが構成されていないPHPセッションをサイレントに作成している可能性があります。

だけでなく、特定の$_SESSION例をチェックしてみてください。$_SESSION['x']$_SESSION

編集:チェックする代わりに、isset($_SESSION)具体的に設定したセッション変数をチェックする必要があります:isset($_SESSION['SESSION_VARIABLE_YOU_SET'])

isset($_SESSION)呼び出されるとtrueを返すため、設定した特定の変数session_start()を確認する必要があります$_SESSION

于 2013-03-05T14:56:49.553 に答える
1

session_start();p1.php ページと、セッション データを使用するすべてのページの一番上にあることを確認する必要があります。

于 2013-03-05T17:21:02.953 に答える
0

おそらく、リモート サーバーはセッションの自動開始用に構成されています。この php インスタンスを構成できる場合は、php.ini ファイル (session_autostart ディレクティブ) で確認できます。

更新: 申し訳ありませんが、あなたの質問を正しく理解できませんでした。実際、セッションの自動開始が「オン」に設定されている場合、セッションは常に存在します。isset($_SESSION) を使用して、ユーザーがログインしているかどうかを判断することはできません。

于 2013-03-05T15:01:02.197 に答える