2011-07-10 61 views
2

私はPHPセッションで問題を解決しようと数日間、スタックオーバーフローを含むインターネットを見回しました。 1つは、私はチュートリアルのほとんどが「ここにコードがあり、それを使用してください」と言っていることに気づいた。そうではありません。さらに、私が見つけたすべての問題/答えは、ページを切り替えるか、リフレッシュしたときに失われる情報のようで、これらのどれも私に当てはまりません。PHP:セッションファイルにデータがありません

$ _SESSIONのデータは、どのページに関係なく保存/ロードされています。私の問題は、私がサーバー上のセッションファイルを見ると、そこにデータがないということです。さらに、セッションを破棄したり変数を設定解除したりすると、情報はまだ保存され、次回$ _SESSIONにアクセスすると古い情報が取得されます。

<?php 
// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less 
if (!isset($_SESSION['count'])) { 
    $_SESSION['count'] = 0; 
} else { 
    $_SESSION['count']++; 
} 

echo $_SESSION['count']; 
?> 

これは、ページ上のすべてのコードである(ここで閲覧可能に:)

は、私は非常に簡単なスクリプトを作成して自分のサーバー上のセッションの動作をトラブルシューティングします。このページがリフレッシュされるたびに、空白の新しいセッションファイルがサーバー上の指定されたディレクトリに保存され、カウンタは増加しません。

詳細情報:
ホスティングGoDaddyの共有にホストされている - のLinux OS、私はすぐに、一時的に参照可能であることをphpsessionsディレクトリのアクセス許可を更新します
:PHPがインストールに関する情報については
。 ()

+0

あなたの中には、session_start()の呼び出しに関するメモが残っています。私は自分のサイト(gnerb.com/phpinfo.php)にphpinfo.phpへのリンクを投稿し、session.auto_startが有効であることを示しているので、session_start()の呼び出しは必要ないことを強調したいと思います。 - すべての0秒前編集 – gNerb

+0

さらに、javascript:alert(document.cookie);を使用します。セッションに割り当てられたセッションIDを返します。問題は、セッションクッキーがビューアブラウザに送信されても​​、ページが更新されるたびにサーバーが新しいセッションを開始していることです。 – gNerb

+0

もう1つのコメント:セッションファイルを見ることができるようにphpsessionsディレクトリを一時的に閲覧できるようにしました。問題を再現するには、あるタブでhttp://www.gnerb.com/count.php、別のタブでhttp://www.gnerb.com/phpsessionsをご覧ください。カウントページをリフレッシュし、ディレクトリリストをリフレッシュして繰り返します。各リフレッシュは、最初の訪問時に視聴者に与えられたセッションIDに関連するセッションをロードする代わりに、セッションファイルを作成/保存する。 – gNerb

答えて

0

UPDATE:あなたはセッションを使用session_start()

だけでなく、一度内のすべてのページを使用してセッションを開始する必要が

3

セッションを使用する前にsession_start()に電話する必要があります。

<?php 
session_start(); 

// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less 
if (!isset($_SESSION['count'])) { 
    $_SESSION['count'] = 0; 
} else { 
    $_SESSION['count']++; 
} 

echo $_SESSION['count']; 
?> 
2

は、このようsession_start()

を持っていることを確認してください。 私はしばらくの間、オーバーフローをスタックしていないし、この質問を振り返ることにしました。これは、私が尋ねた唯一の2つのうちの1つでした。問題はPHPのセッション名が変更され、デフォルトに戻す必要があるということでした。

+0

私の判断より、あなたが推奨する変更を行いました。session_start()関数は問題を解決しません。元の投稿に関する私のコメントを参照してください。 – gNerb

関連する問題