• 締切済み

$GLOBALS変数について教えてださい

$GLOBALS変数について教えてください。 $GLOBALS変数は、スーパーグローバル変数と認識しています。 スコープが違っても、データを保持できるようですが ページが遷移してもデータを保持できるのでしょうか? $_SESSIONと同じようにページ遷移してもデータを保持できますか? テストをしてみたのですが同ページ内ならデータを保有することは 確認できてます。ページ遷移するとデータが初期化されてしまっている 状態です。 ご存知の方いらっしゃったら教えてください。

  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>ページ遷移するとデータが初期化 セッションでデータを保持しない限り、次のページにデータを 渡してないのですから、データは参照できません

nancynancy
質問者

お礼

早速の、ご回答ありがとうございます。 できないことの確信がもてず悩んでおりました。 ありがとうございました。

関連するQ&A

  • 何を言いたいのでしょうか!?

     以下の意味ですが、わたし的(素人)には何を言いたいのか、物に例えると、輪郭程度でしたらわかります。  具体的に何を言いたいのでしょうか!?(PHP教本にありました。)   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ $GLOBALS グローバルスコープに定義された変数名をキーとして連想配列を持ちます。 <?php $globals_test = 1; echo $globals_test,PHP_EOL; (1) echo $GLOBALS[‘globals_test’],PHP_EOL; (2)  (1)と(2)は同じ変数を参照にしており、このスクリプトでは1が出力されます。 PHPでは関数の中などのローカルスコープでも、$GLOBALS変数を用いてあらゆるグローバル 変数への読み書きができます。globalキーワードと同様、スコープを区切らずにあらゆる変数にア クセスできてしまうと、思わぬ個所で値が変更され、それが他の個所で思わぬ影響を及ぼす場合があ ります。$GLOBALSを利用するのはやむを得ない場合や、利用用途がそのプログラムの開発に携 わるすべての人に明確である場合に限るべきです。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  以上よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • globalと$GLOBALSの違いは?

    globalと$GLOBALSの違いは、連想配列かそうでないかしかないのでしょうか。 大量に使う場合、どちらを使っても動作には差はでないでしょうか。 <?php $s = "グローバルスコープ"; //グローバルスコープ function scope_test0(){ echo $s; // 何も表示されない(ローカルスコープ) } scope_test0(); /* globalを使う */ $a = "スコープの違い"; function scope_test1(){ global $a; //ここでglobalを宣言、スコープが違う変数を参照可能に echo $a; //スコープの違い }; scope_test1(); /* $GLOBALSを使う */ $b = 3; $c = 4; function scope_test2(){ $GLOBALS["c"] = $GLOBALS["b"] + $GLOBALS["c"]; } scope_test2(); echo $c; //7 ?>

    • ベストアンサー
    • PHP
  • ASPで画面間のパラメタ受け渡し

    こんばんは。ASP初心者です。 ASPでWEBページの作成を行っています。画面遷移をResponse.Redirect()で行っているのですが、遷移前のページと遷移後のページでパラメタを受け渡したい場合はSession("hoge") = "hogehoge"のようにセッションに入れる以外、何か方法はないでしょうか。リクエスト間でパラメタ渡せればがいいので、セッションを通じて保持しておく必要がないのです。クエリを使用するとアドレス欄に変数の値が見えてしまうのでできれば使いたくありません。

  • php+mysqlでデータを表示更新削除するシステムを製作中ですが

    PHP+MYSQLでデータを取り出し、入力変更を行うシステムを製作しているのですが、 取り出したデータを保持してのページ遷移ができません。 どのように行えばよいのでしょうか? 製作中のシステムの条件は以下の通りです。 ・MYSQLから取り出したデータはクラスに保持する。 ・フレームワークは使用しない。 ・セッションは使用しない。 ・直接ページ遷移するのではなくMVCモデルのように 一度コントローラ部のような所に遷移し変更削除の確認画面に遷移する。 入力画面←→コントローラ部←→確認画面 のような感じです ・確認画面から入力画面に戻った時、入力変更した項目は表示する。 以上です。自分で調べた限りではセッションを使用しないと不可能のような気がしますが・・・。

    • 締切済み
    • PHP
  • セッション変数への値の代入方法について

    レガシーASPでチェックボックスやラジオボタンをクリックしたら サブミット等のページ遷移ではなく同じページ内で即座にその値を セッション変数へ代入させる方法はあるのでしょうか?

  • PHP セッション情報のDBへの受け渡し

    お世話になります。 標題の件について、以下のとおり説明します。 (1)1ページ目:入力フォームで入力した情報をセッションに保持 (主にプルダウンメニューの情報とテキスト) submitボタンで次画面へ ↓ (2)2ページ目:サムネイル写真をクリックした情報を保持+インラインフレームで拡大写真表示 (クリックした情報をプルダウンメニューに表示してセッションへ保持) submitボタンで次画面へ ↓ (3)3ページ目:サムネイル写真をクリックした情報を保持+インラインフレームで拡大写真表示 (クリックした情報をプルダウンメニューに表示してセッションへ保持) submitボタンで次画面へ ↓ (4)4ページ目:上記内容の確認画面 submitボタンで次画面へ ↓ (5)送信 現状、上記の流れでセッション情報を保持しつつメールでの送信が確認出来ています。 ですが、ページ遷移で確認画面から前画面へ戻って、例えば2ページ目の写真を変更して、submitで次画面へ遷移すると、3ページ目の情報がなくなり新たに写真を選択する必要になってしまいます。 なので、ページを前後遷移しても情報が保持された状態にするには、どうすれば良いでしょうか? データベースを使わないと出来ないことでしょうか? データベースに関しても勉強しておりますが、セッション情報をDBへ登録して、その後ページを遷移した場合に、データベースから呼び出すようなイメージなのでしょうが、それにはどうすれば良いのかが不明です。 お手数ですが、ご教授の程、よろしくお願いします。

    • ベストアンサー
    • PHP
  • フォームの入力値のセッション破棄は?

    Aフォームがありまして、入力して確認ボタンを押し、セッションに入力値が格納されたけど、途中でBフォームへ行ってしまった、という場合、いつまでもAフォームの入力値をセッションに格納しておいても使わないですし、セッション変数名が競合して予期しない動作をしても困るので、他のページへ遷移した時点でAフォームの入力値セッションを削除するようにしたいのですが、実装方法としては、URLまたは絶対パスをセッションに入れといて、画面遷移するごとにそのセッションとURLまたは絶対パスを突き合わせ、一致しなければ削除、というやり方で問題ないでしょうか? ロードバランサ使ってても同一ページなら絶対パスは変わらないのでしょうか??詳しくないんですが…。 美しい実装方法をご教示ください…。

    • ベストアンサー
    • PHP
  • order by での変数使用について。

    order by での変数使用について。 PHPのsql文でDBからデータを抽出する際にorder byで特定のデータに対して昇順、降順でデータを抽出したいのですが、ここで変数を使うとorder byが上手く機能しません。 変数でなく、直接カラム名を記入すれば動くのですが・・・。 一つ疑問に思ったことはorder byで変数が使えるかというところです。 where等の条件検索では問題なく使えるので使えないということはないのかなぁと思って 試行錯誤していましたが、どうにもこうにも上手くいきません。 また変数にした理由ですが、今回情報を検索する機能を作成しています。 データの数が多いため、次のページなど何ページかに分けて表示しようと思っています。 そのため特定の値(検索条件)をセッションに保存し、次のページなどに移動しても値を保持して 同じ条件で続きからデータを抽出したいのです。 sql文は $sql = 'SELECT * FROM `apartment` left join `member` on a_member = m_id left join `district` on a_district = d_id left join `room` on a_room = r_id WHERE `a_flg` = "0" AND `a_district` = "'.$_SESSION["district"].'" order by "'.$_SESSION["condition"].'"'; このようになっています。 セッションに値は入っていて、出力するとちゃんとカラム名(検索条件)が表示されます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • JSPでsession変数が勝手に書き換えられる

    お世話になっています。 JSPを使ってプログラミングをしていますが、画面遷移の途中でsession変数の内容が空になってしまう現象に悩まされています。 画面遷移は、 ■入力画面 <jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" /> ↓post ■確認画面(ここで、前の画面で入力された値をsessionに保存) <jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" /> ↓post ■申し込み完了画面(入力された値をDBに保存) <jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" /> ここで、申し込み完了画面になるとapplyという変数の中が全部nullになっています。 念のため暗黙のsession変数からgetId()でセッションIDを画面に出してみると<%=session.getId()%> 申し込み画面:585C94623773F49C0708E050C95E20D2 確認画面:5C35DCF1B68850A762D531CAF2F9700E 完了画面:7D1035FD035C7767C8CEB1D938325D60 と、毎回セッションIDが変わっています。  ちなみに、テスト環境ではこの問題は起こらず、本番環境のみで発生します。  同様の問題を経験したことがあるかたはいらっしゃいませんでしょうか。 構成は ■テスト環境: os:WindowsXP SP2 server:Tomcat 4.1 Java: 1.4.2 ■本番環境: os:FreeBSD 6.1-RELEASE-p6 server:Tomcat 4.1 Java: 1.4.2  よろしくお願いいたします。

    • ベストアンサー
    • Java
  • サーブレット sessionスコープに関して

    こんばんは。 『sessionスコープはPCごと』に関しての質問なのですが、 (http://www.atmarkit.co.jp/fjava/rensai3/tomcat09/tomcat09_02.htmlから抜粋) ログイン後、ユーザ名をsessionに保持し、どの画面に遷移してもユーザ名が表示されるシステムで、 同一PCの2つのブラウザから別ユーザでログインしても、きちんとユーザ名が識別できその後も識別したまま操作できます。 なぜ、このような現象が起こるのでしょうか? 私は、『1PC = 1Session』なら後からログインしたユーザ名でsessionデータが上書きされると思っていました。 req.getSession().setAttribute("userName", form.getUser()); このソースは、sessionIDで識別し取得したsessionスコープにform.getUser()をuserNameという名前でバインドする。という感じですよね? 『1ブラウザ = 1session』なのでしょうか? ※1ブラウザとは子画面も含みます。以下↓ yahooなどでリンクを押して別画面に派生する場合は、別ブラウザが立ち上がってもログイン名が出るので、同一sessionだなと思います。 間違っていますか?

    • ベストアンサー
    • Java