• ベストアンサー

GETとheader

お世話になっております。 適切な題名が思い浮かばず、「GETとheader」といたしましたが、以下のような流れの中(ソースは流れだけのものです)、 A.php $url = $http://www.○○.com/a.php?id=△△&key=□□//各キーの数は変動 header( "$http://www.○○.com/b.php?url=$url"); B.php $url=$_GET["url"]; header( "$url"); としたいのですが、このままだと、$http://www.○○.com/a.php?id=△△ までしか渡されず、b.phpにおいて、$urlをexplode関数により、分割してみたり、parse_url関数を用いて試してみたりしていますが、上手くb.phpからa.phpへ戻すことが出来ません。 適当な関数だけでも構いませんので、アドバイスなど頂戴できたら幸いです。宜しくお願い申し上げます。

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

質問者が選んだベストアンサー

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

これってheaderのlocationでbにとばしたいってことですか? 単純にエンコードしてみてください。 <?PHP $url = "a.php?id=△△&key=□□"; $url=urlencode($url); header("Location:http:b.php?url=$url"); ?> ちなみにフロー的にはa.phpからb.phpにとばして b.phpからa.phpに飛ばしているので無限ループになってませんか?

sadacha
質問者

お礼

yambejp様 こんにちは。お世話になっております。 エンコードしたものを受取り、デコードした後さらにエンコードしてヘッダー送信する・・という手順で上手くいきました!有難う御座います。 ソースだけみると無限ループのようですが、ある処理をするためb.phpに渡し、処理を行った後また元のa.phpに戻す。という流れを考えての内容です。 ヘッダー関数を用いて元のページに戻すためのスクリプトを考えていたのですが、知識が乏しく、これ以外には思いつかず試行錯誤を繰り返していた、という状況でした。 (他にもっとスマートなやり方があるとは思うのですが・・・) いずれにせよ、描いていた動作を得ることが出来ました。 有難う御座いました。

その他の回答 (1)

  • jone
  • ベストアンサー率42% (6/14)
回答No.1

恐らく以下の様な変数の定義って問題アリじゃないでしょうか? PHP以前の話になっちゃいますケド。。 >$url = $http://www.○○.com/a.php?id=△△&key=□□ 以下にソース書きます。 /* $id、$keyには、変動する値を設定。 例) $id = 1 $key = 2 */ $url = 'http://www.○○.com/a.php?id=' . $id . '&key=' . $key; header('http://www.○○.com/b.php?url=' . $url); 申し訳ないのですが、試しておりませんので、一度お試しください。

参考URL:
http://www.php.net/manual/ja/language.variables.php
sadacha
質問者

お礼

jone様 はじめまして、こんにちは。 夜遅くのご応えを有難う御座います。 >恐らく以下の様な変数の定義って問題アリじゃないでしょうか? 投函時、手入力で行った際、""; にて括るのを忘れてしまったようです。汗 ご親切なご指摘とその対処を有難う御座いました。

関連するQ&A

  • header関数について

    header関数について独自関数を絡ませたいのですがいい方法が 思いつかず悩んでおります。 パソコン用、携帯用サイトがあり携帯サイトのみheaderで飛ばした URLの最後にセッションを付加したいと思っております。 // 分岐により携帯であればセッションを変数作成しています。 $sis_id = '?' . session_name() . '=' . session_id(); // パソコンであれば$sis_idはnullなのでこの状態でもなにも付加されません。 header('Location: hoge.php' . $sis_id); ここまでは問題ないのですが以下のようにURLに他のパラメーターを 持っている場合どうすればいいでしょうか? header('Location: hoge.php?id=5' . $sis_id); これだと$sis_idの頭は?ではなく&が必要になりますよね。 仮に$sis_idの?を外して以下のように書き換えるという手も考えた のですがパソコンの場合hoge.php?id=5&のようなURLになってしまいます。 header('Location: hoge.php?id=5&' . $sis_id); if文で分岐させそれぞれの飛び先をべた書き指定すれば済む話 なのですがソースを簡略化させたく独自関数などで自動化できない ものかと思っております。 詳しい方がおりましたら是非アドバイスなど宜しくお願い致します。

    • ベストアンサー
    • PHP
  • php header

    <?php header("Location: http://www.example.com/"); exit; ?> 上記のheaderですと該当ページに飛んでしまいます。 直接飛んでしまうのではなく直接CGIにURLを送りたいのですが 関数等ありますか?わかりやすく言うとURLだけ送信したい。 clickした事にしたいです。

  • header()関数によるリダイレクトについて

    下記のようなスクリプトにおいて、header()関数で、リダイレクトしているのですが、 ちゃんとリダイレクトできません。ちなみに、header()関数の前には HTML文も無い、PHPのみのスクリプトです。 どうすれば、リダイレクトできるか教えていただきたいのですが。 【profile_regist.php】 <?php if($_POST['ID_HANDLENAME']!==NULL) $handlename = $_POST['ID_HANDLENAME']; else header("Location: ~.html"); 中略 ?>

    • ベストアンサー
    • PHP
  • header.locationで、画面遷移、GET

    送り側(file_upload.php) header("Location: bbs_test.php?photo=$upfilename"); 受け側(bbs_test.php) $photo = $_GET['photo']; var_dump($photo); を実行すると、var_dump()の値がNULLになってしまい、 $upfilenameが、GET渡しできません。 ちなみに、$photo = $_GET['photo']; var_dump($photo); の、この2文は、 function()disprecords{ } という関数の中にあるのですが、 なぜ、var_dump($photo); の値がNULLになってしまうのか、どうすれば、 $upfilnameの値を渡せるのか、ご指導いただきたいです。 よろしくお願いします。

    • 締切済み
    • PHP
  • header関数で画面が切り替わらない

    a.phpにボタンがあり、押されるとb.phpに飛んである処理を行い、c.phpで完了メッセージを出す、というようなものを作成しています。 b.phpで処理後、header("Location: end.php");というのを使っているのですが、 ページが切り替わらずに(URLがb.phpのまま)、ページを表示できませんと出てしまいます。 一体何が原因なのでしょうか? これが出来ないと先に進まないので困っています・・・

    • ベストアンサー
    • PHP
  • headerで飛ばすときにURLエンコードを有効に

    headerでほかのサイトに飛ばすとき、 header("Location: http://localhost/nani/success.php?tour=$_GET[tour]"); こんな感じでクエリを飛ばしているのですが、URLエンコーディングをする方法がわかりません。 ほかの変数($data)に入れるまえにurlencode($_GET[tour])として入れ替えて、 ?tour=$_GET[tour]の部分を?tour=$dataとしたのですができません。 ご存知の方いらっしゃいましたら教えていただけませんでしょうか?

    • ベストアンサー
    • PHP
  • PHP header関数が使えない

    OS:Linux PHP、Postgres のシステム環境です。 現在PHPのheader()関数が動いてくれません。 (リダイレクトできない。) <HTML> <HEAD><TITLE>aaaa</TITLE></HEAD> <BODY> <?php header('Location: http://aaa.com/'); ?> </BODY> </HTML> こんな風にHTMLタグなにか出力した後にheader関数を呼び出すとエラーになり、headerのコールはすべての出力の前に行うこととサイトで調べてみまして分かったのですが。 あるシステムではHTMLタグの中に入れてもheader関数は問題なく動いています。 php.iniの設定なのでしょうか、それともプログラムの記述方法で回避できるのでしょうか? このおかげで膨大な修正が必要になりました。 回避策はございますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • GET変数をディレクトリのように表示する方法

    お世話になります。 phpでのお話ですが、通常GETで変数を持たせる場合は http://www.hoge.com/index.php?a=1&b=2 http://www.hoge.com/?a=1&b=2  というURLになるかと思います。 これをディレクトリの一部のように 下記のように表示している場合がありますが、 http://www.hoge.com/1/2/ これはどのようにすればできるのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • headerをページによって表示、非表示にする

    トップページのみヘッダーのjavasprictを使い、他ページでは非表示にしたいのですが、header.phpをもう一つ作り(javaのタグが入ってないもの)別名で保存し、header.phpと同じデレクトリーに保存しページの<?php get_header(); ?>の部分を<?php get_header1(); ?>に変えたのですがエラーでした。 これはどうすれば別々に見る事ができるでしょうか?? 今のページ設定は以下になってます。 <?php get_header(); ?> <div class="span-24" id="contentwrap"> <div class="span-14"> <img src="http://pimpkidz.com/wp/wp-content/uploads/2011/08/side.jpg" /> <div id="content"> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <div <?php post_class() ?> id="post-<?php the_ID(); ?>"> <div id="indexthumb"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_post_thumbnail(array( 200,200 ), array( 'class' => 'post_thumbnail' )); ?></a></div> <div id="indexcontent"> <h2 class="title"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2> <p class="postdate"><span><?php the_time('Y/n/j(D)') ?> </span></p> <div class="entry"> <?php echo excerpt(40); ?> <div class="readmorecontent"> <a class="readmore" href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">Continue</a> </div> </div> </div> <div style="clear:both;"></div> </div><!--/post-<?php the_ID(); ?>--> <hr><?php endwhile; ?> <?php else : if ( is_category() ) { // If this is a category archive printf("<h2 class='pagetitle'>Sorry, but there aren't any posts in the %s category yet.</h2>", single_cat_title('',false)); } else if ( is_date() ) { // If this is a date archive echo("<h2 class='pagetitle'>Sorry, but there aren't any posts with this date.</h2>"); } else if ( is_author() ) { // If this is a category archive $userdata = get_userdatabylogin(get_query_var('author_name')); printf("<h2 class='pagetitle'>Sorry, but there aren't any posts by %s yet.</h2>", $userdata->display_name); } else { echo("<h2 class='pagetitle'>No posts found.</h2>"); } get_search_form(); endif; ?> </div> </div> <?php get_sidebars('right'); ?> </div> </div> <?php get_footer(); ?> もし他のソースが必要でしたら言ってください。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • GETメソッドで文字列として+を送信したい

    test.php <?php $id=$_GET["id"]; echo $id; ?> として、同ディレクトリ中のindex.html内にある、 <a href="./test.php?id=+あいうえお -かきくけこ +さしすせそ ">リンク</a> をクリックすると、test.phpでは 「あいうえお -かきくけこ さしすせそ」 と表示されてしまいます。 半角の+も文字列としてGETメソッドで一緒に送りたいのですが、この場合、a要素にはどのようなURLを記せばいいのでしょうか。

    • ベストアンサー
    • PHP

専門家に質問してみよう