|
View:
New views
8 Messages
—
Rating Filter:
Alert me
|
|
|
[PHP-users 34701] セッション変数がセッション変数にならないお世話になってます、朧月です。
Linux(Debian4) + Apache2 + PHP5 の環境でプログラムを動かしています。 セッション変数を大量に使ったプログラムを書いているのですが、どうもうまく いきません。大枠の流れは以下のような感じです。 �a.phpとb.phpの二つを用意する �a.phpにてセッション変数を確保 �a.phpからheader(Location: "./b.php")でb.phpに移行 a.php中のコードは下記のような感じです session_start(); for ($i = 0; $i <= 1000; $i++){ $_SESSION[$i] = $i; } header(Location: "./b.php"); というようになっています。a.phpにて下のコードを動かすと、私のイメージ通 りになります。 foreach($_SESSION as $key => $val){ print $key; } とした場合、$keyの値(表示)は、123・・・・・1000のようになるのですが、 b.phpで上のforeachのコードを動かすと、何も表示されないか、$iと表示されます。 a.phpともb.phpとも、実際は他にも色々書いてます。 なんかこう、セッション変数を一度に大量に確保するのは反則のような気がする のですが、反則なんでしょうか? よろしくお願いします。 -- 朧月 mailto:oboro@... _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34702] Re: セッション変数がセッション変数にならない朧月様へ。鈴木と申します。
> header(Location: "./b.php"); セッションIDがブラウザーに渡されていないということはありませんか。 b.phpでvar_dump($_REQUEST)としたときにセッションIDがきていることが確認で きますでしょうか。 header関数の出力とsession_start関数による出力の順番が気になります。 _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34703] Re: セッション変数がセッション変数にならない> お世話になってます、朧月です。
ただのと申します。 a.php で、表示を行った際に、セッションファイルには内容が保存されている ことは確認されましたか?。 a.php で表示をしているだけでは、セッション情報として保存されていると事 にはならないと思います。 で、$_SESSION 変数は、基本的に連想配列なので、数値インデックスでは なくて、添字が文字だと思うんですね。 なので、 for ($i = 0; $i <= 1000; $i++){ $_SESSION[$i] = $i; } を for ($i = 0; $i <= 1000; $i++){ $_SESSION[ 'aaa' . $i ] = $i; } とかするとどうですか?。 あと、 > header(Location: "./b.php"); は、 header("Location: ./b.php"); ですよね。 -- Masayuki Tadano <duke.tadano@...> _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34704] Re: セッション変数がセッション変数にならない菊澤と申します。 ただのさんのご指摘が正しいかと。 マニュアルのセッション処理-例.$_SESSIONでの変数を登録より抜粋 連想配列$_SESSIONのキーは、PHPの通常の変数名と同じ制限があります。 すなわち、数字で始まることはできず、文字ま たはアンダースコアで始まる 必要があります。 $_SESSIONのキーに数値を使うことはできないためかと思われます。。 On Thu, 20 Aug 2009 09:46:13 +0900 朧月 <oboro@...> wrote: > お世話になってます、朧月です。 > > Linux(Debian4) + Apache2 + PHP5 の環境でプログラムを動かしています。 > > セッション変数を大量に使ったプログラムを書いているのですが、どうもうまく > いきません。大枠の流れは以下のような感じです。 > > �a.phpとb.phpの二つを用意する > �a.phpにてセッション変数を確保 > �a.phpからheader(Location: "./b.php")でb.phpに移行 > > a.php中のコードは下記のような感じです > session_start(); > > for ($i = 0; $i <= 1000; $i++){ > $_SESSION[$i] = $i; > } > > header(Location: "./b.php"); > > というようになっています。a.phpにて下のコードを動かすと、私のイメージ通 > りになります。 > > foreach($_SESSION as $key => $val){ > print $key; > } > > とした場合、$keyの値(表示)は、123・・・・・1000のようになるのですが、 > b.phpで上のforeachのコードを動かすと、何も表示されないか、$iと表示されます。 > > a.phpともb.phpとも、実際は他にも色々書いてます。 > > なんかこう、セッション変数を一度に大量に確保するのは反則のような気がする > のですが、反則なんでしょうか? > > よろしくお願いします。 > > > -- > 朧月 > mailto:oboro@... 菊澤 正明 mailto:kikuzawa@... _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34705] Re: セッション変数がセッション変数にならない加藤です
興味あったので、実証するためにいろいろと検証していました。 一足遅れですが、ただのさんのご回答で正解です。 $_SESSION[$i] = $i; ↓ $_SESSION["val".$i] = $i; などとすると正常に動くことを確認いたしました。 > お世話になってます、朧月です。 > > Linux(Debian4) + Apache2 + PHP5 の環境でプログラムを動かしています。 > > セッション変数を大量に使ったプログラムを書いているのですが、どうもうまく > いきません。大枠の流れは以下のような感じです。 > > �a.phpとb.phpの二つを用意する > �a.phpにてセッション変数を確保 > �a.phpからheader(Location: "./b.php")でb.phpに移行 > > a.php中のコードは下記のような感じです > session_start(); > > for ($i = 0; $i <= 1000; $i++){ > $_SESSION[$i] = $i; > } > > header(Location: "./b.php"); > > というようになっています。a.phpにて下のコードを動かすと、私のイメージ通 > りになります。 > > foreach($_SESSION as $key => $val){ > print $key; > } > > とした場合、$keyの値(表示)は、123・・・・・1000のようになるのですが、 > b.phpで上のforeachのコードを動かすと、何も表示されないか、$iと表示されます。 > > a.phpともb.phpとも、実際は他にも色々書いてます。 > > なんかこう、セッション変数を一度に大量に確保するのは反則のような気がする > のですが、反則なんでしょうか? > > よろしくお願いします。 > > > > > ------------------------------------------------------------------------ > > _______________________________________________ > PHP-users mailing list PHP-users@... > http://ml.php.gr.jp/mailman/listinfo/php-users > PHP初心者のためのページ - 質問する前にはこちらをお読みください > http://oldwww.php.gr.jp/php/novice.php3 _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34706] Re: セッション変数がセッション変数にならないお世話になってます、朧月です。
鈴木孝征 (Suzuki Takamasa) wrote (2009/08/20 10:30): > b.phpでvar_dump($_REQUEST)としたときにセッションIDがきていることが確認で > きますでしょうか。 array(1) { ["PHPSESSID"]=> string(32) "12a6643c25a48c1d7d3aa43acd784c4f" } b.phpにて以上の用に出力されるのですが、意味はちょっと分からない感じです。 > header関数の出力とsession_start関数による出力の順番が気になります。 session_start関数は一番最初に書かないと動かなかったような気がします。 a.phpの中身は以下の通りです。 <?php session_start(); for ($i = 0; $i <= 1000; $i++){ $_SESSION[$i] = $i; } header("Location: ./b.php"); ?> よろしくお願いします。 -- 朧月 mailto:oboro@... _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34707] Re: セッション変数がセッション変数にならないお世話になってます、朧月です。
菊澤 正明 wrote (2009/08/20 10:58): > 連想配列$_SESSIONのキーは、PHPの通常の変数名と同じ制限があります。 > すなわち、数字で始まることはできず、文字ま たはアンダースコアで始まる > 必要があります。 > > $_SESSIONのキーに数値を使うことはできないためかと思われます。。 まさにその通りでした。ただのさんのご指摘の通りにコードを書いたら、うまく 行きました。出力は以下の通りです。 aaa0aaa1aaa2aaa3aaa4aaa5aaa6aaa7aaa8aaa9aaa10aaa11aaa12aaa13aaa ありがとうございました。 -- 朧月 mailto:oboro@... _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34708] Re: セッション変数がセッション変数にならないただの@凄く久しぶりに投稿している です。
> お世話になってます、朧月です。 > > 菊澤 正明 wrote (2009/08/20 10:58): > >> 連想配列$_SESSIONのキーは、PHPの通常の変数名と同じ制限があります。 >> すなわち、数字で始まることはできず、文字ま たはアンダースコアで始まる >> 必要があります。 >> >> $_SESSIONのキーに数値を使うことはできないためかと思われます。。 > > まさにその通りでした。ただのさんのご指摘の通りにコードを書いたら、うまく > 行きました。出力は以下の通りです。 > > aaa0aaa1aaa2aaa3aaa4aaa5aaa6aaa7aaa8aaa9aaa10aaa11aaa12aaa13aaa うまく行ってよかったです。 以下は、ご存知ならば無視してください。 今回のように、セッション変数に代入したのに、伝わらないと言う時には、 そのスクリプト内で値を参照して見てもダメです。 セッション情報として保存されるためには、標準的には(Linuxでは)、 /tmp/sess_[セッションID] というファイルが出来、この中にセッション情報がシリアライズされたもの が書き込まれます。なので今回の件では、このファイルが出来ていたも のの、中身が空っぽだったのではないでしょうか。 また、鈴木さんのご指摘&その結果で、 > 鈴木孝征 (Suzuki Takamasa) wrote (2009/08/20 10:30): > >> b.phpでvar_dump($_REQUEST)としたときにセッションIDがきていることが確認で >> きますでしょうか。 > > array(1) { ["PHPSESSID"]=> string(32) "12a6643c25a48c1d7d3aa43acd784c4f" } > > b.phpにて以上の用に出力されるのですが、意味はちょっと分からない感じです。 ここに表示されているのが、セッションIDなわけですので、 先ほどのファイルでは、 /tmp/sess_12a6643c25a48c1d7d3aa43acd784c4f というのが作成されているはずです。もともとのプログラムでは、このファイル のサイズが0バイトになっていたはずです(一応確かめました)。 あとは、リクエストごとにセッションIDが変ってしまって、値が 取得できないという事もあります。 この場合、IEですとセッションクッキーもその都度確認の ダイアログを表示させることができるので、それで調べて 見る方法があります。 一応ご参考までに。 -- Masayuki Tadano <duke.tadano@...> _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
| Free embeddable forum powered by Nabble | Forum Help |