
通常の変数であれば、
$var = array($_POST["var1"], $_POST["var2"], $_POST["var3"]);
ですが、セッション変数を配列にするにはどうしたら良いのでしょう?
(配列から取り出す方法も含め)
$var = array($_POST["var1"], $_POST["var2"], $_POST["var3"]);
$_SESSION["$var"];
や
$_SESSION["$var"] = array($_POST["var1"], $_POST["var2"], $_POST["var3"]);
としてみましたが、ダメなんですね。
よろしくお願いいたします。
*PHPバージョンは5です

No.5ベストアンサー
- 回答日時:
いまいちよく判らないのですが・・・
>$_SESSION["var1"]=$_POST["var1"];
>$_SESSION["var2"]=$_POST["var2"];
>$_SESSION["var3"]=$_POST["var3"];
>……
>という風にしているのですが、その後の処理はほぼ同じなので、
>$_SESSION["var[n]"]=$_POST["var[n]"];
>という風に使いたいのですが、可能でしょうか?
これなら、以下のように書けます。
for ($i=0; $i<XXX; $i++) {
$_SESSION["var$i"] = $_POST["var$i"];
}
>if($f == 1){
>$_SESSION["var1"]++;
>}else if($f == 2){
>$_SESSION["var2"]++;
>}else if…以下続く。
>ではなく(イメージ的には…)
>$_SESSION["var[$f]"]++;
これならば、以下のように書けます。
$_SESSION["var$f"]++;
回答ありがとうございます。
SESSIONを配列に…という考えで頭が埋まってました。
forを使えばいいだけですよね。お恥ずかしい…。
アッサリ解決です。ありがとうございました。

No.4
- 回答日時:
>$_SESSION["var[n]"]=$_POST["var[n]"];
>という風に使いたいのですが、可能でしょうか?
いまいちよく判りませんが、POSTされた変数を全てSESSIONに放り込みたいのであれば、
$_SESSION['hoge'] = $_POST;
のようにすることはできます。
こうすれば、
$_POST['foo'] は、$_SESSION['hoge']['foo'] になります。
>私の認識では、セッション変数とは、更新や異なるページでも
>データを(サーバで)保持し、セッションIDでクライアントを認識、
>判別して、データを利用できる、という考えですが、誤っていますか?
>合っていれば、POSTで受け取ることも、普通にありえると思うのですが、
>違うのでしょうか?
これは両方とも間違っていないと思いますよ。
POSTやGETされたデータをSESSIONに入れること自体には、何ら問題はありません。
ただし、例えばログインしたあとに、$_SESSION['USER']にユーザIDを入れているとしたら、$_SESSION['USER'] を外部から上書きされるようなことは避けなければなりません。
ですから、先ほどの例でいうと、
$_SESSION['hoge'] = $_POST; とすべきであって、
$_SESSION = $_POST; とすべきではありません。
後者のようにすると、POST変数に USER=xxx があると、$_SESSION['USER'] が「xxx」に上書きされてしまいますので。
この回答への補足
回答へのお礼(*1)の補足です。
一旦、全てのPOST変数をSESSIONに入れて、使うものだけ使い、
IDやPASSなどは放っておく(使わない)
というのは、セキュリティ上、問題ありますか?
回答ありがとうございます。
うまく説明できなくてすみません。
属性が同一で値の異なる変数"var?"が複数あり、
変数名をvra1,vra2,vra3…としています。
それら以外にも異なる処理(認証等)に使う変数があるので、
POSTされた変数を全て、というのは望みません。(*1)
また、var?とは別に条件判断をする変数"f"があり、数値が入ります。
スクリプトでは、変数"f"が…
"1"なら"var1"を使って処理、
"2"なら"var2"を使って処理、
というものを作りたいのですが、
現状では、変数"f"の値を条件判定としたif関数で行っています。
これを配列を用いて、数行の文でできないかと思いまして…。
var?の値は、基本的に上書きしていくのですが、変数"f"によって
非処理となった場合、値を保持したいのでSESSIONを使った、という訳です。
if($f == 1){
$_SESSION["var1"]++;
}else if($f == 2){
$_SESSION["var2"]++;
}else if…以下続く。
ではなく(イメージ的には…)
$_SESSION["var[$f]"]++;
だけで済ませたいのです。
ちなみに、カウンタを作成しています。
アクセスカウンタではなく、ボタンを押すと、その項目が増えるもので、
増える値は統一されていません(毎回1ずつ増えるというものではありません)
No.3
- 回答日時:
>セッション変数とは、サイト全体を通じて保持している変数で
>ユーザIDや、カウンタまたは承認済みかどうかという情報を
>保持しています。
http://blog.gold-fish.jp/?itemid=280
セキュリティの為に相手を確認/承認する為にされるものです。
サーバーの保持している変数なので適当な変数の値をいれるものではないと言う事です。
適当な値を取得するのでしたらPOSTを使うべきです。
アドバイスありがとうございます。
作成しているのは、データの保持を行ったり、上書きしたりする
カウンタで、ブラウザ終了後もデータを保持するものなので、
POSTだけでは無理だと思うのですが…。
SESSIONを使わずに行える方法があるなら教えていただけませんか?
No.2
- 回答日時:
セッション変数をなぜPOSTで受け取りたいのかが不明です。
セッション変数についてもう少しお調べになった方がいいと思います。
参考URL:http://php.s3.to/man/function.session-start.html
アドバイスありがとうございます。
なぜ、POSTで受け取るべきではないのか、わからないのですが、
ここに書き込む前にも調べてはみましたが、セッション変数に配列を
入れる方法が見つからなかったので、根本的に考え方がおかしいか、
あまり使われないことなのか、とは思ったのですが…。
私の認識では、セッション変数とは、更新や異なるページでも
データを(サーバで)保持し、セッションIDでクライアントを認識、
判別して、データを利用できる、という考えですが、誤っていますか?
合っていれば、POSTで受け取ることも、普通にありえると思うのですが、
違うのでしょうか?
GETでも構わないデータなのですが、スクリプト書換え時に更新確認が
出てしまうので、POSTにしていました。

No.1
- 回答日時:
【代入】
$_SESSION['var'] = array(100, 200, 300);
【参照】
echo $_SESSION['var'][1]; // -> 200
ということでしょうか?
回答ありがとうございます。
array以下に、変数を入れることはできないのでしょうか?
現状では、POSTされたvar1、var2、var3…という変数を
$_SESSION["var1"]=$_POST["var1"];
$_SESSION["var2"]=$_POST["var2"];
$_SESSION["var3"]=$_POST["var3"];
……
という風にしているのですが、その後の処理はほぼ同じなので、
$_SESSION["var[n]"]=$_POST["var[n]"];
という風に使いたいのですが、可能でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
特定のセッション変数の内容だ...
-
VB or VBScriptでPCの製造番号...
-
ps3で久しぶりにCDの音楽情報取...
-
findstrのerrorlevel
-
コンビニで住民票を取得した場...
-
DBのハッシュ化したパスワード...
-
shシェルスクリプト 空白行の...
-
PHPでの画像の形式の変換
-
次のhtml・cssでspan内の文字を...
-
逆順表示したい?
-
PHP declare文について、ticks...
-
Google scholarがひらけなくな...
-
DMMの動画を全件取得したのです...
-
出力されない原因を教えてくだ...
-
<A href ~で複数の値を渡したい
-
VB.NETからVBAマクロ(引数)を呼...
-
PHPで返信メールにチェックボッ...
-
switch()文で値の大小比較
-
issetで変数の存在をチェックし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
ログインしたら他からログイン...
-
Sessionの上限について
-
別ブラウザ間でセッションの値...
-
ブラウザを閉じた後もセッショ...
-
PHP SESSION変数を複数使用でき...
-
ログイン画面をはさんだ後、自...
-
PHPのプロセス滞留について
-
セッションのスコープ(有効範...
-
セッションファイルの有効期限...
-
セッション変数にパスワードを...
-
完全なセッション破棄をしたい
-
SESSIONの削除について
-
PHPのセッション有効期限について
-
共有SSLでのセッションの引継ぎ
-
PHP cookieの値が更新されない...
-
携帯電話対応のカートって??
-
セッションを維持したまま、サ...
-
PHPSESSIDの表示
-
ログイン 作成
おすすめ情報