2017-01-20 23 views
0

リモートでログインするための簡単なPHPログインシステムを作成しましたが、SESSIONはデータを保存しません。下記の疑似コードをご覧ください。 mainserverとremoteserverは実際には実際のWebアドレスであることに注意してください。リモートでログインしてセッションを有効にしてください

ファイル::私はちょうど2つのリンクを投稿するのに十分な評判を持っていないmainserver/login.php

$username = $_POST[ "username" ]; 
$userpassword = $_POST[ "password" ]; 

$result = check_logIn($username, $password); 
if ($result) { 

    $_SESSION[ "is_loggedIn" ] = true; 
    die (true); 

} else die(false); 

ファイル:remoteserverは/ remoteLogin.php

$http_query = http_build_query(array( 

     "username" => "Username goes here", 
     "password" => "Password goes here" 

)); 


$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,"mainserver/login.php"); 
curl_setopt($ch, CURLOPT_COOKIEJAR, md5(rand()) .".txt"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $http_query); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$output = curl_exec ($ch); 
curl_close($ch); 

でもメインサーバがtrueを返すと(ログインが成功した後)、私はhttp://mainserver.com/にアクセスしますが、$_SESSION[ "is_loggedIn" ]はまだそこにはありません。技術的には、私はまだログアウトした人として扱われています。

私は対処すべきものがありますか?

+0

session_start()を使用しましたか? (http://php.net/manual/en/function.session-start.php) –

+0

はい。やった。それは単なる擬似コードです。リモートサイトからデータを受け取っていないときは、すべてが正常に実行され、テストされました。 – user3622260

+0

私はあなたが何を意味しているのかを見て、問題はこれです:あなたがクロームを介してログインしたときと同じように、あなたはfirefoxにログインしていません。スクリプトを実行しているサーバーでも同じことが起こりますが、メインサーバーのセッションはremoteserverにリンクされています。たとえIPや物理マシンを共有していても。 –

答えて

0

あなたの問題はこれです:あなたがchrome経由でログインしたときと同じように、あなたはfirefoxにログインしていません。スクリプトを実行しているサーバーでも同じことが起こります。 "mainserver"のセッションは、あなたやあなたのブラウザではなく、 "remoteserver"のCURL要求にリンクしています。 IPマシンまたは物理マシンを共有している場合でも。あなたはそれはそれはいくつかの有用な答えを持って閉鎖されているにもかかわらずSingle Sign On across multiple domains

で見ることができSSOを実現するために

またはあなたの(新しい)ニーズに合ったより具体的な質問を投稿してみてください。

関連する問題