2016-12-04 24 views
0

私は、クラスを使用しているユーザーの永続セッションを作っていましたが、動作させることができないようです。永続的なPHPセッション

<?php 
class Session { 
    private $sessionId = NULL; 

    public function __construct() { 
     session_start(); 
     if($this->sessionId === NULL) 
      $this->sessionId = session_id(); 
     return $this->sessionId; 
    } 

    public function getSessionValue($field) { 
     return $_SESSION[$field]; 
    } 

    public function setSessionValue($field, $data) { 
     $_SESSION[$field] = $data; 
    } 

    public function removeSessionValue($field) { 
     unset($_SESSION[$field]); 
    } 

    public function destroySession() { 
     $this->sessionId = NULL; 
     session_destroy(); 
    } 

    public function __toString() { 
     return $this->sessionId; 
    } 
} 
?> 

をしかし、彼が支払いを行うことができますので、私は別のdomaninにユーザーをリダイレクトするとき、彼は戻って私のウェブサイトにだとき、彼はそのセッションを失うことが起こる:現在、私はこれを持っています。現在、私はJavaScriptを使用してリダイレクトし、このクラスからsetSessionValue('paymentid', 1)方法でいくつかのデータを保存して、それが戻って来るとき、私は彼がセッション値を持っているかどうかを確認するために、このコードを持っている:

$session = new Session(); 
if($session->getSessionValue('paymentid') !== null) { 
// Do something here 
} 

私に空paymentidを返します。奇妙なことは、時にはうまくいくということですが、それはいつもそうではありません。だからこそ何が間違っているのでしょうか?

+1

php start a session => php「他のドメイン」がサブドメインの場合は、正しいドメイン属性でCookieが保存されていることを確認する必要があります。 domain = siteA.comのCookieはsiteB.comでは利用できません。 – Federkun

+0

https://stackoverflow.com/questions/17242346/php-session-lost-after-redirect?rq=1 –

答えて

0

ユーザーをページ間で移動させるコードを再確認してください。セッション変数でID値を誤ってリセットしている可能性があります。私は自分のページにvar_dump $ _SESSIONを実行して、私のヴァールに何が起こっているのかを知ることが役に立ちます。それがいつか動作する理由については、たとえば、キャンセルされたトランザクションからユーザーを返すコードが、成功したトランザクションと異なる場合があります。 id varをそのまま残しておくコードを見てください。それはあなたが他の場所に適用したいからです。

+0

コードはそれをいつでも書き直す。支払いURLを呼び出す前と後に$ _SESSIONを記録するためのprint_rを入れますが、それはまれにしか起こらず、一部の人にしか起こらないので奇妙です。これはサーバベースのセッションなのでわかりません – Xabi

関連する問題