• 締切済み

requestmethodをPOSTにして画面遷移

1.phpから2.phpへ遷移するためのソースを1.phpに書いていますが、IEのアドレスバーの表示が1.phpのまま更新されません。 requestmethodがGETならばheader('Location: 2.php?a=b');exit;ですが、 requestmethodをPOSTにするたに http://www.spencernetwork.org/memo/tips-3.php にあるようなソースを1.phpに書きましたが、2.phpへアクセスして返されたHTTPのレスポンスを受け取るだけで2.phpに遷移してくれません。 画面の遷移までさせるにはどのようにするとよいですか?

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

みんなの回答

  • powli
  • ベストアンサー率0% (0/0)
回答No.1

POSTデータを保持したままリダイレクトを行いたいということですか? ご提示のURLを見るに、おそらくお考えになっている方法では不可能ですので、下記のいずれかの手段を用いて実現すると良いと思います。 1. 前のページで受け取ったデータをhiddenで埋め込んで 2.php をincludeする 2. 受け取ったPOSTデータをセッションに入れてから 2.php にリダイレクトして、2.php側ではセッションの中のデータを読み込む 3. JavaScriptでOnLoad時にPOSTさせる

関連するQ&A

  • セッションを使わずに遷移先画面に変数の値を渡すには?

    <input type="hidden" value="myID">みたいな隠しフォームで 行く先々の画面に値をPOSTで渡してきました。 他方、 header("Location: mypage.php") のように画面を遷移させる場合、遷移先の画面に $_POST["myID"]のように値を渡すことはできませんか? この場合session_start();を使って、$_SESSION["myID"]のように値を 渡す(保持する)のが王道なのでしょうか? セッションと聞くと何かとトラブルになりやすそうなイメージがあり、 できれば使いたくないのです。 具体的に説明しますと、前にこの掲示板で教えていただいた、次の例を使っています。 入力文字チェックをかけたいのでPHP_SELFで同じ画面を呼び出して、 問題なければmypage.phpにリダイレクトさせる枠組みですが、 header("Location: mypage.php");という風に遷移した場合は、 遷移先のmypage.phpでは、$_POST["myID"]はPOSTされてきませんよね (値を受け取れませんよね)?? 妙案あればご教示下さい。 <?php if ($_POST["reg"] == "" ) $errFlg = true; if (!$errFlg) {     if (strlen($_POST["myName"]) > 30) {       $errFlg = true;       $errStr["myName"] = "30字以下";     }   $errMsg = "エラー!!"; } if ($errFlg) { ?> <html>   <body>     <form method="post" action="<?php $_SERVER["PHP_SELF"] ?>">       氏名 <input type="text" name="myName" value="<?= $_POST["myName"] ?>"><?= $errStr["myName"] ?>       <input type="hidden" name="myID" value="<?= $_POST["myID"] ?>">     </form>     <input type="submit" name="reg" value="登録">   </body> </html> <?php } else {     $sql = "update mytable set myID = 'xxxx'";     $rst = mysql_query($sql, $con);     header("Location: mypage.php"); } ?>

    • ベストアンサー
    • PHP
  • POSTへのデータの引渡方法は?

    a.php: <?php $x='ok'; header('Location:b.php?x='.$x); exit; ?> b.php: <?=$_GET['x']?> によって$xのデータをa.phpからb.phpに送ることができますが$xが日本語の長文である場合に備えて $_GET['x']でなくて$_POST['x']にa.phpからb.phpに$xのデータを渡したいのですがどうすればできるでしょうか?

    • ベストアンサー
    • PHP
  • リダイレクトでPOST

    教えてください。 リダイレクトの際、POSTで次のページにデータを渡すことは可能でしょうか? GETだと header("Location: "a.php?no=".$no); と、問題なくできるのですが、 できれば、パラメータを隠したいと思います。 以上ですが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • headerについて

    <?php header("Location:x.php?y=1"); exit; ?> はOKですが <?php $_GET['xx']; header("Location:x.php?y=1"); exit; ?> はだめです エラーメッセージは Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/z.php:2) in /var/www/html/z.php on line 3 $_GET['xx']や$_POST['xx']などをheaderの前に置けないと非常に困ります (上はテスト用PHPです) どうしたらいいでしょうか?

    • ベストアンサー
    • PHP
  • Locationでアンカーに飛ばしたい

    下記のPHPを作り、 name_idがなかったらname.php?a1=user_idに飛ばす、 name_idがあったらuser.php?a2=name_idに飛ばしています。 ここまでは問題ありません。 今回、 name.php?a1=user_id#name user.php?a2=name_id#name と、それぞれのページの#nameのアンカーが付いているところに飛ばしたいと考えています。 しかしながら、単純に下記を header("Location: name.php?a1=$type#name:"); のようにアンカーを追加したたでけでは思う行に飛ばすことができません。 Location で他のページのアンカーに飛ばすにはどうすば良いでしょうか? 宜しくお願い致します。 <?php $type = $_GET['user_id']; $type2 = $_GET['name_id']; if (empty($type2)) { header("HTTP/1.1 301 Moved Permanently"); header("Location: name.php?a1=$type:"); exit(); } else { header("HTTP/1.1 301 Moved Permanently"); header("Location: user.php?a2=$type2:"); exit(); }; ?>

    • ベストアンサー
    • PHP
  • 認証した後の画面遷移

    こんにちわ。現在、管理者名とパスワードを入力し、空白時、半角英数以外の入力がされたとき、管理者名もしくパスワードが違うときにそれぞれのページに飛ばそうと思っているのですが、どうしても空白字のページ(header( "Location: masterfalse01-01.php" );にしか行かず悩んでいます。ちなみに、あらかじめ決めた管理者とパスではきちんと次の画面に飛ぶことはできました。 <html> <head><title>認証</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <center><br>管理者名</br> <form method = "post" action = "shoppingmaster.php" > <input type = "text" name = "MASTERNAME"><br> <center><br>パスワード</br></center> <input type = "password" name = "PASS"> <p><input type = "submit" name = "submit" value = "ログイン"></p> </center> </form> <?php $MasterName = mb_convert_kana($str,"rna"); $Password = mb_convert_kana($str,"rna"); if($_POST["submit"] == "ログイン"){ if($_POST["MASTERNAME"] == "abc" && $_POST["PASS"] == "efg") { header("Location: shoppingform.php"); }else if( $MasterName == "" || $Password == ""){ header( "Location: masterfalse01-01.php" ); }else if(!ereg("^[A-Za-z0-9\-]",$MasterName, $Password )){ header( "Location: masterfalse01-02.php" ); }else { header( "Location: masterfalse01-03.php" ); } } ?> </body> </html> ご回答お願いできますでしょうか?

    • ベストアンサー
    • PHP
  • jQuery POST送信後のページ更新

    いつもお世話になっております。 jQuery+PHPにて、POST送信し、 戻り値の条件分岐でページを遷移させたり、 更新させたいと思っています。 ご教授願えないでしょうか。 index.php内 [ソース] $.POST('./search.php', {'code':12345'}, function(data){ if(data['type'] == '1'){ alert('見つかりません') location.href='./index.php'; } else if(data['type'] == '2'){ location.href='./edit.php; }, 'json' ); 見つかりませんのアラートを表示した後、 location.hrefだと、リロードする事なく。 またlocation.reloadにしても同様です。 $.POST外でlocation.reloadを指定すると リロードしてくれるのですが、$,POST送信してくれません。 もし不可能であれば、location.hrefで別のファイルを経由させて実施しようと思っています。 宜しくお願いします。

    • ベストアンサー
    • AJAX
  • PHPのlocationについて

    PHPで条件分岐により別ページにリダイレクトさせたいと思ってます。 <?php … if ($hoge) { header("Location: hoge.html"); exit; } … で、これで$hogeに値を引き継がせてXPのIEでみると、真っ白なページにリダイレクトしてしまします。 ただ、hoge.htmlに遷移はしているらしく、ソースの表示をすると正しいファイルが読み込まれていますし、更新をすると表示されます。 全然意味がわかりません。ちなみにNNだとちゃんと表示されているみたいです。 ということはブラウザの問題なのでしょうか? 確実にリダイレクトさせる方法はないのでしょうか? #混乱するかも知れませんが、いろいろいじってみていたら、上記PHPのファイルを書き換えるとちゃんと動くこともあるようです…??

    • ベストアンサー
    • CGI
  • Docomoでサイトが移動しました(301)が消えない

    お世話になっています。 携帯向けサイトを制作しているのですが、Docomo機種で「サイトが移動しました(301)」が消えずに困っています。 サイトはPHPで制作している為、拡張子が「.php」になります。 各所でheader移動しているのですが、そこで301表示が出てしまいます。 header移動は以下のように記述しています。 if(preg_match("/DoCoMo/",$_SERVER['HTTP_USER_AGENT'])){ header("HTTP/1.1 301 Moved Permanently"); header("Location: index.php?".SID); } else { header("Location: index.php"); } exit; セッションを利用している為、スラッシュで終わる事が出来ません。 POSTでSIDを渡す場合は問題なく移動出来ています。 文字コードはShift-JIS、確認を行った機種は70シリーズの3種類の携帯です。 header部分は「header('Status: 301 Moved Permanently');」と言う様にも試してみましたが解決しませんでした。 301表示を消す他の方法がありましたら、ご教授願えませんでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • phpでのリダイレクト処理について

    phpで index.php にアクセスがあった時に、 以下の様に top.php へリダイレクトさせたいと思います。 header("Location:top.php"); exit(); この時、top.phpが表示された時のブラウザのアドレスバーは index.php のままです。 アドレスバーのURLを top.php にする方法はないですか?

    • 締切済み
    • PHP

専門家に質問してみよう