2011-07-14 10 views
1

ではありません。ユーザー入力を検証し、ログイン資格情報を保存した後、session :: startを呼び出してセッションを開始し、次にgeneral :: reloadを呼び出してindex.phpファイルをリロードします。私はsession :: is_start()を使ってインデックスファイルからロードするページを決定します。セッションはステートフルで、PHPユーザーコードは

私はいつも同じページが読み込まれるので、正しく動作しているとは思われません - b1e.htm。

私の懸念は、私の静的クラスセッションは、AJAX/PHP呼び出しとreload index.php呼び出しの間でその値を維持しないことです。

同様の投稿 - here

のindex.php

include 'b2.php'; 

    if(session::is_start()) 
    { 
    include 'b2e.htm'; // user is logged in 
    } 
    else 
    { 
    include 'b1e.htm'; // user is not logged it 
    } 

スニペット - セッション:()を起動して、セッション:: is_start();

class session 
    { 
    protected static $ses_id =""; 
    public static function start() 
    { 
    self::$ses_id = session_start(); 
    } 
    public static function is_start() 
    { 
    return self::$ses_id; 
    } 
    public static function finish() 
    { 
    self::$ses_id = 0; 
    $_SESSION=array(); 
    if (session_id() != "" || isset($_COOKIE[session_name()])) 
     { 
     setcookie(session_name(), '', time()-2592000, '/'); 
     } 
    session_destroy(); 
    } 
    } 

スニペット - 一般::リロード()

class general 
    { 
    public static function reload() 
    { 
    $uri = 'http://'; 
    $uri .= $_SERVER['HTTP_HOST']; 
    header('Location: '.$uri.'/host_name'); 
    } 
+0

'session :: start()'を呼び出さない限り、 'session :: is_start()'は常に空の文字列を返します。それはあなたが欲しいものですか? – hakre

+0

そしてあなたの問題は何ですか?セッションを開始しない限り、セッションは開始されません。詳しく教えてください。 – hakre

+0

PHPはステートレスです。 1回の走行が終了すると、次の走行は前回の走行について何も知らない。セッションを使用してこれを克服することができますが、各実行の開始時にセッションを開始する必要があります。私はrun2上で確認できるrun1のセッションでフラグを設定したいと思います。しかし、セッションが存在するかどうかはチェックしていません。あなたはその違いを理解していますか? – hakre

答えて

0

あなたは、実際には各ページのセッションを開始するためにあなたのsession_start();を呼び出す必要があります。

+0

あなたはまだクラスを使うことができますが、あなたのクラスは_SESSION変数や他の永続ストアに物事を入れる必要があります。 – notJim

1

セッション機能をカプセル化して統合することはできますが、静的キーワードを使用している場合でもPHPユーザーコードはステートレスなので、クラスを使用してセッションを完全に監視することはできません。それは状態を保持するセッションに依存します。

関連する問題