
通常の変数であれば、
$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で質問しましょう!
似たような質問が見つかりました
- JavaScript java keyを配列で表記したい 10 2022/12/01 17:53
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- 工学 CR発振回路 C1=C2=C=0.001【uF】 R1=R2=R3=16【kΩ】 R4は出力電圧が正 2 2023/05/10 19:13
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- その他(自然科学) 信頼度がR1、R2の機器を並列に接続した場合、システム全体の信頼度はどれか。答え1-(R1)(1- 2 2023/01/15 21:45
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- 物理学 写真のような回路のとき、参考書によれば「直列では電圧比は抵抗比に等しい」ということから、 「R1:R 5 2023/06/29 21:32
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP8でWarning:Undefined varia...
-
composerをインストールしたい...
-
phpの問い合わせフォームを作っ...
-
配列の値の更新方法について
-
PHPの構文で間違えが分からない
-
SFTPなどは使わないホームペー...
-
$_SESSIONに渡した後はそのまま...
-
($_POST['email']??"", ・・・...
-
phpのエラーについて
-
PHP MySql 画像を取得
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
SplFileObject を利用したとき...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpの問い合わせフォームを作っ...
-
composerをインストールしたい...
-
PHP8でWarning:Undefined varia...
-
marginの値でマイナス値を設定...
-
phpでcookieがうまく保存されない
-
SplFileObject を利用したとき...
-
PHPSpreadsheetを使って関数を...
-
PHPSpreadsheetによる書き出し...
-
PHP8を使うと、大量のWarningが...
-
フォームで戻った際に入力済み...
-
PostgreSQLからCSV形式でエクス...
-
PHPを使って、別サイトの一部を...
-
BASIC認証のフォームをデザイン...
-
入力した部分を表示させたまま...
-
【初心者】XAMPPのapacheの(恐...
-
ログイン機の付きの掲示板サイ...
-
ワードプレスサイト PHP8.0.25...
-
Postgresの特定のカラムからス...
-
PHPで画像の渡しが上手く行きま...
-
PHPの勉強してます。 配列のと...
おすすめ情報