• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:セッション変数と配列)

セッション変数と配列を使用する方法

racchomanの回答

  • racchoman
  • ベストアンサー率71% (20/28)
回答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」に上書きされてしまいますので。

kinoshita8
質問者

お礼

回答ありがとうございます。 うまく説明できなくてすみません。 属性が同一で値の異なる変数"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ずつ増えるというものではありません)

kinoshita8
質問者

補足

回答へのお礼(*1)の補足です。 一旦、全てのPOST変数をSESSIONに入れて、使うものだけ使い、 IDやPASSなどは放っておく(使わない) というのは、セキュリティ上、問題ありますか?

関連するQ&A

  • セッション変数

    $_SESSION['name']=test $_SESSION['pass']=pass というようにセッション変数に、nameとpassを作成しました。 セッション変数とは、配列と考えてもいい物なのでしょうか それとも、一個一個の変数と考えるべきなのでしょうか。 よくセッション変数と言われますが、記述のされ方が配列と同じようにみえるので気になりました。 ・SESSION配列? ############################# | name = 'test'  | pass = 'aaa' | ############################# ・SESSION変数? ###############   ############# |  name = 'test' |   | pass = 'aaa' | ###############   ############# どちらが正解なのでしょうか?

    • 締切済み
    • PHP
  • セッションの宣言

    PHPでセッションの配列を使いたいのですが、 $SESSION['foo'] = array(); のように、宣言して使うと、同じページを読んだ時に セッションが空になってしまうのですが、 通常どのようにして宣言しているのですか?

    • 締切済み
    • PHP
  • セッション変数の受け渡しができない

    a.php: <?php session_start(); $_SESSION['test'] = "ok"; echo "<html><body>\n"; echo "<pre>\n"; var_dump($_SESSION); echo "</pre>\n"; echo "<a href=\"./b.php\">結果ページへ</a>"; echo "</body></html>\n"; ?> b.php: <?php session_start(); echo "<html><body>\n"; echo "<pre>\n"; var_dump($_SESSION); echo "</pre>\n"; echo "</body></html>\n"; ?> a.php の表示: array(1) { ["test"]=> string(2) "ok" } 結果ページへ b.php の表示: array(0) { } 再読込みでも同様です。 php.ini の Session 関係の項目は書籍やウェブサイトを参考にしておかしなものはないと自己判断していますが、指摘されるものを掲載します。

    • 締切済み
    • PHP
  • PHP SESSION変数の削除について

    PHPでブラウザを×で閉じた場合、SESSION変数 の廃棄はどうすればよいのでしょうか? ガーペジコレクション(PHP.INI等の設定)に任せておけばよいのでしょうか? ちなみにログアウトの際は下記のプロシジャを実行しています。 ----------------------------- <?php session_start(); // セッション変数を全て解除する $_SESSION = array(); // セッションを切断するにはセッションクッキーも削除する。 // Note: セッション情報だけでなくセッションを破壊する。 if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); } // 最終的に、セッションを破壊する session_destroy(); ?> -----------------------------

    • 締切済み
    • PHP
  • javascript 配列 変数名「array 」

    初歩的な質問失礼します。 現在jQueryを勉強しているjavascript初心者です。 教本の配列の項目で、変数名に「array」とありました。 ( var array =[ 100, 200, 300]; といった感じです。 ) これは配列を使う際のいわゆる通例?定番?的な変数名みたいなもので、array自体に意味は無いと考えてよいのでしょうか? すっきりしないのでどなたか教えてくださると助かります!

  • セッションが動かない

    セッションがちゃんと動かない。 PHPのセッションがちゃんと動きません。 他のプログラムを同じ環境で動かしたところうまく動きましたので、 コードのほうに問題があると思います。 以下のようなコードを書いています <?php require_once '../function.php'; require_once '../config.php'; if (!($_SESSION['date'])) { session_start(); } connect_db() ?> <div id="comu_confirm"> <?php $now = new DateTime(); $date = $now->format('Y/m/d H:i:s'); $title = $_POST['title']; $contents = $_POST['contents']; if ($_SESSION['date']) { $_SESSION = array(); session_destroy(); }elseif($_POST) { } //test $_SESSION['title'] = $title; $_SESSION['contents'] = $contents; $_SESSION['date'] = $date; まず最初はelseifのほうのプログラムを動かして、session変数に値を入れます。 その後、もう一度このファイルに飛んで、二回目はsession変数が入っているので ifのほうに入って、ifの中の処理をするという形にしたかったのですがif文のほうの処理に行きません。 ちなみに、二回目に見たときはURLの欄にセッションIDは表示されていませんでした。 テストとして <?php require_once '../function.php'; require_once '../config.php'; if (!($_SESSION['date'])) { session_start(); } connect_db() ?> <div id="comu_confirm"> <?php $now = new DateTime(); $date = $now->format('Y/m/d H:i:s'); $title = $_POST['title']; $contents = $_POST['contents']; //test $_SESSION['title'] = $title; $_SESSION['contents'] = $contents; $_SESSION['date'] = $date; if ($_SESSION['date']) { $_SESSION = array(); session_destroy(); }elseif($_POST) { } としてみたところ、if文の処理は動いていました。 なにが悪いのでしょうか? 不足した情報がありましたら開示したいと思いますので教えていただければと思います。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 特定の変数の値をセッションを使わずに引き継ぐ方法

    PHPだと、output_add_rewrite_var()という関数 http://jp2.php.net/manual/ja/function.output-add-rewrite-var.phpで、 特定の変数をセッションを使わずに引き継ぐ方法があるのですが、 Perlで同じ事を実現できるでしょうか?

  • ASPのSession変数を配列にしたいのですが。。。

    ASPのSession変数を配列にして使用したいのですが、どのように表記すればいいのでしょうか? Do Until rs.EOF ID=Session("ID(i)") i=i+1 rs.MoveNext Loop という感じに使用したいのですが。。。

  • PHPの配列をjavascriptへ渡したい

    PHPの配列をjavascriptの配列に渡したいのですがやり方がわかりません。 変数の渡し方ならわかるのですが配列はどう渡せばいいのでしょうか? for文を使って渡せばいいと思うんですがどうやればいいか分かりません。 <?php $filedata=file("data.txt");//javascriptに渡したい配列 ?> <script language="javascript"> var a=new Array();//PHPの配列をこの配列に入れたい </script> 何方か教えてください。

    • ベストアンサー
    • PHP
  • セッション変数について

    48歳独学でプログラムを勉強しているものです。誰も教えてくれる人がいないので、教えてgooさんには大変お世話になっております。 現在PHPを使用して無料レンタルサーバーに会員画面を作ろうとしているのですが、一般的に無料レンタルサーバーでもセッション変数は使えるものなのでしょうか。どうも上手くセッション変数がフォルダに保存されません。無料レンタルサーバーでは不可なのでしょうか。 セッション保存先に「kaiintmp」というフォルダを作成しています。 そして、 session_start(); session_save_path("kaiintmp"); session_register("simei","pass"); $_SESSION[simei]=$simei; $_SESSION[pass]=$pass; のようにしていますが・・・。 自分のパソコンでは、セッション変数が作成されますがレンタルサーバーにUPしても作成されません。 レンタルサーバーにUPしたときのpathがダメなのでしょうか? レンタルサーバーでセッション変数を使用されている方おりましたら宜しくご教授お願いいたします。

    • ベストアンサー
    • PHP