• 締切済み

【PHP】 URLデータの取得と実行に関して。

こんばんは。非常に悩んで困っています。 (参考図)               ┌→上フレーム(A.php)               │               │ aaa.php→bbb.php―┼→中フレーム(B.php)               │               │               └→下フレーム(C.php) もし、A.php ページ内のボタン【B】をクリックしたら、中フレームで B.php ページが表示される仕組みで その時、同時に下フレームの C.php ページで、中フレーム にはどのページが表示されているのかを URLで取得する仕組みにしたいのですが、どうやったよいのでしょうか? 具体的には、その時、B.php ページのURLデータを C.php ページ内のボタン【B】のリンクとなるURLに収納したいのです。 そして、C.php ページ内のボタン【B】を押しても、中フレームで B.php ページが表示される仕組にしたいのです。 自分なりに、セッション関数などを使い色々と試したのですが、どうもうまい事いきません。(汗) ちなみに、セッション関数でデータの受け渡しの仕組みをした場合・・・ A.php のページ内のボタン【B】をクリックしたら、中フレームで B.php ページのURLを B.php ページ内で、セッションの値を $_SESSION['burl'] = $burl; として保存し C.php ページ内のボタン【B】URL指定のところで $_SESSION['burl'] として呼び出しても、値が収納されません。(汗) 【参考】 ・ 上記の参考図の表示がずれていたら脳内変換で宜しくお願いします。 ・ ページはフレームを使用し、上フレーム・中フレーム・下フレームと縦に組んでいます。 ・ bbb.php のページは require 関数で呼び出されるページとなってます。 中途半端な知識で対応できず、苦しんでおります。 ちなみに、私は「PHP」の経験が浅いので、分かりやすく詳しく教えて頂けると非常に助かります。 もし宜しければ何方か、どうか教えて下さい。宜しくお願いします。

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

みんなの回答

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

b.phpで session_start(); $_SESSION['burl'] = $_SERVER['REQUEST_URI'];//sample c.phpで session_start(); $burl = $_SESSION['burl']; とすれば普通に取得できるかと。 勿論 c.php はリロードが必要です。 他にはJavaScriptで、例えばaaa.phpにURLを保持させる方法とか。

yorosiku_orz
質問者

補足

早々のご回答有難うございます。 やはり、セッションの場合でも C.php ページをリロードさせないとダメなんですね。(汗) Javascript は利用したくないのです。(汗) C.php ページ内の xxx の所のURLを、PHPのfunction 関数でURLを入れ込む仕組みはできないでしょうか? クリックしたら xxx() 関数でURLを入れ込む仕組み的なイメージです。(汗) <li><a href="<?=xxx()?>"target="B">ページ確認</a></li> }

関連するQ&A

  • 文字・URLの切替えに関してです。

    Javascript で次のようにしました。 (参考図) 上フレーム(A.php)name="A" 中フレーム(B.php)name="B" 下フレーム(C.php)name="C" ※ 縦に3段組のレイアウト。 ▼ A.php <script language="JavaScript"> function abc(url){ parent.B.xxx.innerText=url; } </script> </head> <body> <a href="B.php" target="B" onClick="abc('B.php');">C.phpページのURLを切替える</a> </body> ▼ C.php <body> <td id="xxx">D.php</td> <ul> <li><a href="D.php" target="B">切り替えページ</a></li> </ul> </body> それで A.phpページのリンクをクリックすると・・・ C.phpページの td id="xxx" の D.php のところは、B.php と切替えることはできたのですが C.phpページの a href のところのURL(D.php)を B.php と切替えるには、どうしたら良いのでしょうか? ちなみに、C.phpページはリロードさせないので、PHPの $_SESSION 関数での対応は無理でした。 中途半端な知識で対応できず、苦しんでおります。 ちなみに、分かりやすく詳しく教えて頂けると非常に助かります。 もし宜しければ何方か、どうか教えて下さい。宜しくお願いします。

  • 同時に更新(リロード)について。

    こんばんは。非常に悩んで困っています。 (参考図)        ┌→上フレーム(A.php)        │        │ aaa.php―┼→中フレーム(B.php)        │        │        └→下フレーム(C.php) A.php ページ内のボタン【B】をクリックしたら、中フレームで B.php ページが表示される仕組みで・・・ その時、同時に下フレームの C.php ページにも更新(リロード)を掛けるような仕組はどうやったら良いのでしょうか? 【参考】 ・ Javascript は利用せず。(利用したくない) ・ 上記の参考図の表示がずれていたら脳内変換で宜しくお願いします。 ・ ページはフレームを使用し、上フレーム・中フレーム・下フレームと縦に組んでいます。 ・ A.php ページ内のボタンは、次の様にリスト形式でリンク文字としてます。   <ul>   <li><a href="B.php" target="B">B</a></li>   </ul> 中途半端な知識で対応できず、苦しんでおります。 ちなみに、私は「PHP」の経験が浅いので、分かりやすく詳しく教えて頂けると非常に助かります。 もし宜しければ何方か、どうか教えて下さい。宜しくお願いします。

    • 締切済み
    • PHP
  • PHPでのURL取得とブックマークについて

    お世話様になります。 現在[hoge.php]ページ内の<iframe>タグに[.html]ページをPHPプログラムでランダムに読み込んでいます。 (例)、 [hoge.php]に[A.html]が読み込まれた [hoge.php]に[B.html]が読み込まれた [hoge.php]に[C.html]が読み込まれた つまり上記の様になりますが、例えば『[hoge.php]に[B.html]が読み込まれた』という状態をPHPを使ってURL取得するにはどの様なプログラムを書けば宜しいでしょうか?また、この状態をブックマークさせる方法は有るでしょうか? 一応、今は現在のページURLを取得する方法として <? print("http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]); ?> という記述のみ使っています。 どうぞ宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • URLの変わらないページをPHPでつくるには

    URLの変わらないページをたまにみかけますが、どういう仕組みになっているのでしょうか? 仮にこういうURLでアクセスしたとして、 http://host.com/saite1/index.php 実行したら http://host.com/saite1/ に変わる 何か機能のボタンを押して画面の表現が変わっても URLは http://host.com/saite1/ 一連の同じ機能範囲の動作は常に同じURLになっているWEBページをたまにみかけます。 これはどのような仕組みになっているのでしょうか? PHPでそれは実現できるのでしょうか? また、「あーそれ、・・・だからやんない方がいいよ」的な意見もよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのデータの受け渡しとフレーム

    PHPを最近始めた者なのですが、 データの受け渡しについてわからないことがあります。 あるページのフォームで入力したデータをフレーム構造のページへ受け渡したとします。(データを入力したページをAとします) これはページAに設置されているフォームのソースです。 <form action="フレームページ.php" method="post"> <input name=(省略)> <input type='submit' value='submit'> </form> フレームページで表示されるページをB、Cとします。 目的はページAで入力したデータをページB、Cに反映させることなのですが、どうしても構造上問題があるのか反映されません。 たぶん受け渡したいデータがフレームページにいってしまい、ページBとCには届いていないと思うのですが、なんとかページB、Cに渡す方法はないでしょうか? フォームのactionをページB.phpと直接打てばデータが反映されることは確認しています。

    • ベストアンサー
    • PHP
  • 違うフレームのURLを取得したい

    いつもお世話になっております。 上下でフレームが分かれていて、上にメニュー、下に内容が表示されます。 下に表示されているURLによって、上のメニューのボタンの色をVBScriptのIF文を使って変えたいと思っています。 そこで、下のフレームに表示されているURLを上のフレームで取得したいのですが、どうしたら実現できるでしょうか。 JavaScriptでparent.下のフレーム名.location.hrefとすれば、URLを取得できることまでは調べたのですが、JavaScriptからASPに値を渡す方法が分かりませんでした。 ASPだけでURLを取得する方法か、JavaScriptで取得した値をASPに渡す方法のどちらかをご存知の方がいらっしゃったら教えてください! よろしくお願いいたします。

  • リダイレクト元のURLの取得方法について

    現在、以下2つのphp5プログラム(+ PEAR::AUTH)で、なんちゃってフォーム認証するCGIを作成しています。 環境 Windows XP、Web SV IIS 5.1 (1) aaa.php  : PEAR:AUTHを使った、ログイン画面(フォーム認証CGI)。  : 機能 : MySQLに格納されたID/PWで認証する。認証OKだったら、bbb.phpが出力するDBレコードデータ参照ページへのリンク集を出力する。    リンク1)http://domain.jp/bbb.php?id=1001    リンク2)http://domain.jp/bbb.php?id=1002    リンクn)http://domain.jp/bbb.php?id=nnnn    ・・・といった感じで、DBに登録されたレコードを表示するCGIへのリンクをずらずら出します。 (2) bbb.php  : DBデータを整形し、多少見やすい形に加工したHTMLページを出力する。    この時、aaa.phpが認証OKの証?として出力したCookieが、    1.あったらHTMLページ出力し、     例1)http://domain.jp/bbb.php?id=1001 = 一意のキーid=1001の値で出力出来る、MySQL上のデータをHTML化したもの     例2)http://domain.jp/bbb.php?id=1002 = 一意のキーid=1002の値で出力出来る、MySQL上のデータをHTML化したもの     例n)http://domain.jp/bbb.php?id=nnnn = 一意のキーid=nnnnの値で出力出来る、MySQL上のデータをHTML化したもの    2.無かったら、     (a) http header 401を出力     (b) aaa.php(フォームログイン画面)にリダイレクトする。  一応、ここ迄はいいのですが、例えば、利用者が、上記例2のURLをブラウザ「お気に入り」で保存しておき、直接そのページをみたい、と言った時、リンク指定先のbbb.phpは、  ・ そのユーザがログインしていない場合(Cookieが無い場合)、aaa.phpのログインフォームへリダイレクトする  ・ aaa.phpは認証後、リンク集ページを出力する、  といった動作になってしまいます(てゆうかそうゆう作りなんで当たり前ですが・・・)。  そこで、aaa.phpの機能で、  ・ 「どのURLから、リンク(リダイレクト)されてきたかを判定するロジック」を入れ、もし、「bbb.php?id=xxxx」だったら、   ・ 認証OK後、直接、そのbbb.phpが出力するHTMLのURL(http://domain.jp/bbb.php?id=xxxx)に、再度リダイレクトする処理を入れれば良い?、   のかなーと短絡的に考えました。  で、問題となるのが、aaa.phpが表示された時、どこからリダイレクトされてきたか(リダイレクト元のURL)を知る方法です。  そこで、PHPの、$_SERVER[HTTP_REFERER]を入れてみた所、  ・ bbb.phpにリダイレクトされる前のURLが、$_SERVER[HTTP_REFERER]に入っている(多分、別のHTMLのbbb.php?id=~へのリンク集?)  ・ $_SERVER[HTTP_REFERER]の中が空(URL直接指定?)  という現象で詰まってしまいました。  ここから抜け出す為、何か良いアイディア(別の方法、関数等)があればお知恵拝借したいと考えています(書いてある事を理解して頂ける文章か今イチ不安ですが・・・)。  何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • IFRAME内PHPのセッション変数取得が出来ない

    既存のHTMLサイトに一部機能追加したいだけ+ブラウザに表示されるURLの関係で、必要部分だけIFRAMEでPHPサーバーのファイルを呼び出して表示させようと考えました。 IFRAMEを記述するHTMLファイル設置サーバーはPHPが使用出来ません。 <iframe src="http://hogehoge/login.php"></iframe> とHTML内にログイン用PHPを表示させ、ボタン押下でログイン判定 →データをセッション変数にセット →header("Location: http://hogehoge/form.php");で画面遷移 →フォーム用PHPに先ほどセットしたセッションデータ表示 とこんな感じの処理がしたいのですが、これがFireFoxだとうまく動くのに、IEだと動いたり動かなかったりします。(動く=開発環境である私のPC、動かない=他全て) ボタン押下で自分自身にPOSTしたデータは正しく受け取って画面遷移まで処理しているのですが、遷移後のページでセッション取得しようとすると取得出来ないようなのです。 IFRAMEを通さず直接URL叩いた場合は、FF・IEどちらも正常に動いています。 session_name('hoge'); session_start(); はPHP先頭に記載してあります。 IFRAMEを使用して外部サーバーのPHPを使用する際に、気をつけねばならない事などがあるのでしょうか… もし解決方法に思い当たる方がいらっしゃいましたら、どうかご回答宜しくお願いいたします。 またもし補足等必要でしたらご指摘下さい。

    • ベストアンサー
    • PHP
  • ページ切り替えの方法についてです。

    最近まで、フレーム(FRAMESET)でレイアウトを組んでいました。(汗) (参考図) 上フレーム(A.php)name="A" 中フレーム(B.php)name="B" 下フレーム(C.php)name="C" ※ 縦に3段組のレイアウト。 ぞれで、フレームは HTML5 では廃止なり、使用は良くないと言う事で参考図のようなレイアウトを CSSで組んだんですが・・・ 例えば、フレーム使用では 中フレームの B.phpを D.phpページに切り替えをする場合は <a href="D.php" target="B" >Dページ</a> このように target で 簡単に中フレームに D.phpページを表示させる事ができますが CSSでこのような仕組み(ページ切り替え)をする場合はどうやったら良いのでしょうか? イメージとしては・・・ (参考図) 上ヘッダー(#head) 中メイン (#main) 下フッター(#foot) ※ 縦に3段組のレイアウト。 上ヘッダー(#head)の場所で <a href="D.php" >Dページ</a> をクリックした時に 全体をリロードさせずに、中メイン(#main)の場所に、D.phpページを表示したいのです。 できるだけ色んなブラウザに対応する方法で教えて頂けると助かります。 中途半端な知識で対応できず、苦しんでおります。 ちなみに、分かりやすく詳しく教えて頂けると非常に助かります。 もし宜しければ何方か、どうか教えて下さい。宜しくお願いします。  

  • phpでリフレッシュな実行を毎回するにはどうすればいいですか?

    以下のようにぐるぐると2つのPHPモジュールを移動したときに、php_pgm2.phpに行くとたまに前回表示した内容が再表示される事があります。 php_pgm2.phpでPF5などで再表示すると新しくなるのですが、毎回フレッシュな状態で実行するにはどうすれば良いですか? ■php_pgm1.php  [表示]   ↓  [ボタン]   ↓  header("Location: php_pgm2.php")   ↓ ■php_pgm2.php  [表示]   ↓  href="php_pgm1.php"   ↓ ■php_pgm1.php  [表示]   ↓  [ボタン]   ↓  header("Location: php_pgm2.php")   ↓ ■php_pgm2.php  [表示]   ↓  href="php_pgm1.php" 例えば毎回セッションに時刻を書き込んだとしたら $_SESSION["aaaaa"] = time(); 最初のphp_pgm1.phpで$_SESSION["aaaaa"]が12時00分00秒 として php_pgm2.phpで$_SESSION["aaaaa"]が12時00分30秒 とすると 2回目のphp_pgm1.phpで表示されるのは12時00分30秒ではなく12時00分00秒となっています。

    • ベストアンサー
    • PHP