2016-04-19 7 views
0

変数を$SESSION変数で共有したいのですが。 file1.phpで私はPHPのページ間でセッションIDが異なる

<?php session_start(); 
    require_once('connect.php'); 
    global $gb; 
    $_SESSION['myvar'] = "somestring"; 
    // Some other code 
?> 

を持っていると私の二fille2.phpに私は

<?php session_start(); 
    require_once('connect.php'); 
    $myvar = $_SESSION['myvar']; 
?> 

$myvar空になっています。まず、file1.phpを呼び出してからfile2.phpを呼び出します。私はsession_id()をエコーし​​ようとしましたが、それは異なっています。ここで何が間違っていますか?

編集:私は両方とも、私はあなたが何を意味するかわからないんだけど、私はきちんと理解している場合はローカルホストからの私のサーバー側のPHPスクリプトを呼び出し、それが

+0

両方のファイルが同じサーバーにあり、ドメインがまったく同じですか? –

+0

@CharlotteDunoisはいそうです。 – novalain

+0

もう 'file2.php'に' session_start(); 'が必要ではないと思います。 – andre3wap

答えて

2

を重要ならば有効CORSプラグインでChromeを使用していますファイルは、AJAXを使用してjsスクリプトによって呼び出されています。あなたが呼び出しが行われている場所でjsコードを含めることができれば、本当に役に立ちます。とにかく、私はかなり第二のファイルが最初のものの前にダウンロードされていると確信しています。あなたはこれを回避するために行うことができます何かが抽象的にであるそれは次のようになります「session_init.php」と呼ば両方session_start()やファイルの例のための別のファイルにしたり、現在のファイルの先頭で$_SESSION['myvar']変数宣言、:

session_init.php:

<?php 

//init session and session variable 
session_start(); 
/* $_SESSION['myvar'] = 'value'; */ 

あなたの現在のファイル(あなたはAJAX要求を作っているファイル):今すぐ

<?php 

//include this folder on the top of the page where the ajax petition is made 
require_once('session_init.php'); 
$_SESSION['myvar'] = 'Some Value'; 
?> 

<script type="text/javascript"> 

    //js code to make ajax petitio to file 1 

    $.ajax({ 

    //parameters and other stuff 

    success : function(resp){ 

      //js code to make ajax petition to file 2 
      $.ajax({ 

      //parameters and other stuff 
      }); 
     } 
    }) 
</script> 

$_SESSION['myvar']は限り、あなたデとして、両方のファイルにアクセスできる必要があります各ファイルの先頭にsession_start()という名前を付けてください。 AJAXの申請を入れ子にするのは良い習慣ではないことを忘れないでください。また、AJAXリクエストのパラメータとして 'myvar'の値を送信するなど、ファイルを介してデータを送信する別のアプローチをとることもできます。

+0

OPが$ _SESSION ['myvar']を静的に設定したいとは思わないすべてのファイルの先頭に「値」があります。そのようなものは、彼がやっていることの目的を破るものです。セッションの内容の操作と取り出しは、ファイル単位で行う必要があります。セッションの開始は、そのファイルにもかかわらずです。私はこの問題を修正する、あなたの投稿への提案された編集を行いました(うまくいけば受け入れられるでしょう)。 – hsanders

+0

はい、あなたは正しいです。私はfile1に$ _SESSION ['myvar']の値を設定していたことに気がつかなかったので、編集していただきありがとうございます。とにかく、 'session_init.php'にデフォルト値を設定して、いつでも変更することができます。 –

+0

問題は2番目のページで、元の値がデフォルト値で上書きされます。 – hsanders

1

session_start()は、AJAX呼び出しを行うファイルから呼び出されないように聞こえるので、2つのセッションが発生します。セッションIDをどこかに再生成していますか?connect.php

問題が解決しない場合は、関連するすべてのコードを入力して再現してください。

+0

ちょっと! AJAX呼び出しを行うファイルからsession_start()を呼び出す必要があるということはどうですか? JSファイルから呼び出す必要がありますか? – novalain

+0

JSファイルではなくAJAXを実行しているPHPファイルの@novalain。 –

関連する問題