14

AJAX を使用して新しい php ファイルを読み込み、表示を更新する 1 ページの Web サイトがあります。

メインページでphpセッションを開始しますが、ajaxを使用して内部htmlを更新する場合、ロードされる新しいphpファイルにこれらのセッション変数が必要です。

この投稿は、PHP セッション変数が保持されないに似ています。しかし、私がチェックしたところ、私のphp.iniにはsession.use_cookies = 1

メインページ PHP:

<?php 
session_start();
if(isset($_SESSION['views']))
{$_SESSION['views']=$_SESSION['views']+1;}
else
{$_SESSION['views']=1;}
?>

ユーザー入力の後、ajax を使用して php ファイルを呼び出し、ページのサブセクションを読み込みます。

<?php    
if(isset($_SESSION['views']))
    { echo "Views: " . $_SESSION['views'];} 
    else 
    { echo "Views: NOT SET";}
?>

誰かが私が見逃している重要なステップを教えてもらえますか? ありがとうございました。

更新:メイン ページとサブ ページの両方に session_id() 呼び出しを追加すると、両方のページに同じ Session_ID があることがわかります。ただし、セッション変数をプルすることはできず、値を割り当てると、2 つの同じ名前のセッション変数は互いに独立したままになります。

この質問が作成した質問への回答: php.ini ファイルに静的な session_save パスを設定する必要があることがわかりました。ほとんどの有料 Web ホスティング サービスでは、セッション用のデフォルト コンテナーしかありませんが、負荷分散の影響を受けます。なんという安堵。

4

6 に答える 6

27

session_start()Ajaxが呼び出すページが欠落していると思います。

必要なもの:

<?php
session_start();
if(isset($_SESSION['views']))
    { echo "Views: " . $_SESSION['views'];} 
    else 
    { echo "Views: NOT SET";}
?>
于 2012-08-01T23:06:18.763 に答える
6

session_start()他のPHPファイル(AJAXを介して呼び出しているファイル)でもセッションを開始する必要があります。

于 2012-08-01T23:06:58.303 に答える
1

有料の Web ホスティング サービスを使用する場合、デフォルトのセッション保存パスは次のように自動的に設定されます。

http://php.net/session.save-path
session.save_path = "/tmp/"

そこにルート フォルダーへの静的パスを配置する必要があります。

于 2012-08-02T17:13:59.330 に答える
0

ajax 呼び出しでログインする前に、セッションを初期化する必要があります。

session_start();

ログイン ajax 呼び出しを開始するページの上部で初期化します。

SESSIONID が作成され、ブラウザの Cookie に保存されるようにします。同じドメインに対して ajax 要求を行う場合、ajax 呼び出し中に要求ヘッダーと共に送信されます

連続する ajax 呼び出しでは、ブラウザーの Cookie をクリアするか、ログアウトする (または別の Cookie を設定する) 場合を除き、ブラウザーは最初に作成してブラウザーの Cookie に保存した SESSIONID を使用します。

于 2017-05-27T06:03:00.677 に答える