• 締切済み

cURL関数を使用したphpからのpost送信と画面遷移

cURL関数を使用したphpからのpost送信と画面遷移 とある事情で、どうしてもphpからpost送信をしなければならず、 且つ指定したURL先に画面遷移してほしいと考えております。 現状はpost送信自体は成功しているのですが、指定したURL先への画面遷移方法がわかりません。 無理にこの関数を使用した方法で実装をしたいわけではありませんが、 フォームのサブミットを押してpost送信をする処理と、同等の事をphpからpost送信、画面遷移が出来る方法があるのでしょうか? ご教授よろしくお願い致します。

  • higee
  • お礼率76% (23/30)
  • PHP
  • 回答数2
  • ありがとう数5

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> post送信自体は成功しているのですが、指定したURL先への画面遷移方法がわかりません。 これは、例えばログイン時のIDやパスワードをPOST送信すると サーバーからリダイレクトのレスポンスが返ってくるが そのリダイレクト先のページが取得できないということでしょうか? この場合、処理自体は難しくは有りませんがサイト毎に必要な処理が異なるので それぞれに合わせて組む必要が有ります。有名サイトほど面倒です 必要な処理の例を示します。 1.POST後のレスポンスヘッダーを解析し   Redirectの指示が有ればそのURLのページを取得しなおす。   レスポンスコードが 301~303の場合が該当します。   多くの場合は、-L オプションでも対応できます   他に、metaタグでリダイレクト先が指定されている場合は、本文まで読み込んで   そこのページを取得しなおします。   少々面倒などが、javascriptでリダイレクト先が組み込まれている場合です   その場合は、スクリプトを解析して 取得するページを取り出します。 2.多くの場合 POST後、Cookieeが送付されてきますので   Redirect先にCookieeの送信も忘れずに処理します。Cookieeにサイト側の   セッションコードが組み込まれている場合が多いので、これを忘れると   サーバー側が正しいリダイレクト先を判断できないため所望のページに   移動できません。 3.POSTする際、UserAgentをデフォルトのままではなく、Mozilla/4.0 や   compatible; MSIE 6.0などの文字を組み込んでやる。(BOT対策やブラウザ毎に   表示を切り替えているサイトもあるため)   そうしないと正しくリダイレクト先を教えてくれない場合が有ります。 4.さらに凝ったサイト(某有名なSNSなど)では、javascriptを解析して   POSTする情報を付加する必要があります。Javascriptでhidden属性のコード   をForm内に書き込んでサーバーに送信させてセッションを維持しているものも   有ります。この場合は、POST時にjavascriptで書き加えられたhidden属性の   値も一緒にPOSTしてやる必要があります。 5.POSTデータをjavascriptで別のコードにエンコードしてから送信させている   サイトも有りますので、その場合はそのエンコードルールに従う必要があります サイトによってどこまでPHP側で処理しなければならないかは変わりますので、 以上のことを参考にしてご自分で作りこむしか有りません。

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

理論的に無理ですね それができたらページの成りすましがいくらでもできちゃいます

関連するQ&A

  • phpを利用してPOSTメソッド送信し、そのまま画面遷移をしたいのですが・・・

    PHPを利用してPOSTメソッドで情報を送信し、その送信先に画面遷移をしたいのですが、よくわかりません。 hiddenで情報を格納してbodyでonloadにformをsubmitする方法を取っていたのですが、それでは画面遷移中にESCキーを押されると送信情報を読み取られるおそれがあるのでその方法はやりたくないのです。 調べてみると、curl関数を利用すると、実現したいことが実現できると書かれているページも見つけたのですが具体的な方法がよくわかりません。 参考になるページや方法など知っている方は教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPを用いてPOSTし、リダイレクトする方法

    お世話になります。 PHPを用いてリダイレクトさせたいのですが、リダイレクト先にはHTTPリクエストのPOSTを用いて情報を送信させる方法を教えてください。 いろいろ調べたのですが、 curl関数やfsockopen関数では、POSTでリクエストして、レスポンスが返ってくるので、望むような方法が実現できません。 なぜ、リダイレクトさせたいかというと、リダイレクト先は違うhostなので、画像やcss、formなどがうまく表示・動作できないようになってしまうためです。 送信方法として、フォームによる送信を行いますと、クライアント側に情報を埋め込んで送信するため、セキュリティ的に問題がありますので、PHPから情報を飛ばしたいと考えております。 よろしくお願いします。

    • 締切済み
    • PHP
  • PHP cURLでPOSTした値が文字化けしてしまいます。

    PHPのcURL関数を使って、POSTしているのですが、POSTの値をUTF-8からSJIS-winに変換して送信したところ、受け側で文字化けしてしまいます。 ※ちなみに、ソースはUTF-8です。 ソース的には、ざっくり以下のような感じです。 $params = 'name=' . $name; $params .= '&kana=' . mb_convert_kana($kana, 'k'); $params = mb_convert_encoding($params, 'SJIS-win', 'UTF-8'); ・・・ $urlConnect = curl_init(); ・・・ curl_setopt($urlConnect, CURLOPT_POSTFIELDS, $params); $res = curl_exec($urlConnect); 受け側を見ると、 mb_detect_encoding($_POST['name']) が、「UTF-8」となっていました。 解決するポイントでも構いませんので、ご指導お願い致します。

    • 締切済み
    • PHP
  • PHPでの画面遷移について

    PHP超がつくほどの初心者ですが、実現方法がわからないため ご教示願います。 同階層に  aaaa/mainXXX.php  aaaa/mainXXX.php  aaaa/test1.php (共通)  aaaa/test2.php (共通)   にて作成しており、メインサイト自体は、複数ありそこから先へ遷移する場合は、 test1.php → test2.phpへと遷移させます。 しかし、mainのどこから遷移してきたかをtest.phpに戻るurlを埋め込みたいのですが どのように記述すれば、解決できるでしょうか。

    • 締切済み
    • PHP
  • phpのcurlでのエラー

    ローカル、IIS8.5+PHP5.6環境で、PHPのcurlを用いてPDFファイルをアップロードするとエラーが出ます。 エラーは以下のようなものです。 === {"files":[{"name":"1425191187-473","size":221,"type":"multipart\/form-data; boundary=------------------------c4894a433c24bba9","error":"Filetype not allowed"}]} === どの点が問題なのかご教示いただけないでしょうか? PHP5.6の設定では、php.iniの「extension=php_curl.dll」の「;」のみを外しました。 また、ローカルPCにダウンロードしたcurl.exeコマンドからはアップロードできることを確認しました。 コマンド:「curl -F "files[]=@C:\Users\***\Desktop\***.pdf;type=application/pdf http://127.0.0.1/***/upload」 アップロードできないPHPソースは以下となります。 === $oname = '@C:\Users\***\Desktop\***.pdf;type=application/pdf'; $files = array( 'files[]' => $oname ); $url = 'http://127.0.0.1/***/upload'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); curl_setopt($ch, CURLOPT_POSTFIELDS, $files); curl_exec($ch); curl_close($ch); ===

    • 締切済み
    • PHP
  • FORMで送信ボタンと戻るボタンを2つつけてそれぞれ遷移先を変えたい

       以下のような画面を作りたいのですが↓ -------------------------------------------------------------------------------- ● a.php (ユーザ情報入力画面) ※フォームに入力する画面    <FORM method="POST" action="b.php">   <INPUT type="text" name="mail">   <INPUT type="submit" name="submit" value="確認">  </FORM> ● b.php (ユーザ情報入力確認画面)※フォームに入力された値を表示する画面  <FORM method="POST" action="c.php">   <!-- ここには、フォームに入力された値を表示する -->   <INPUT type="submit" name="submit" value="登録"> // c.php に遷移する   <INPUT type="submit" name="submit" value="戻る"> // a.php に戻る  </FORM> ● c.php (完了画面) -------------------------------------------------------------------------------- b.php について質問なのですが、 b.phpにおいて、登録ボタンと戻るボタンを2つつけて、 それぞれ遷移先を変えたいのですが、どうすればいいんでしょうか・・・? <FORM method="POST" action="c.php">と書いてしまうと、 戻るボタンを押しても戻らずに、c.phpに遷移してしまいますよね?? こういう場合ってJavaScriptとかで遷移先を指定するんですか・・? もしそうでしたら、JavaScriptがよくわからないので できればサンプルコード示していただけると助かります・・・。   

  • 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
  • PHPで、エラーがない場合のみ画面遷移させたい

    PHPのプログラムを作成しています。 動きとしては、 1.ユーザに値を入力させる 2.ユーザが入力した値をエラーチェックする 3.エラーチェック結果、もしエラーがなければ次の画面へ遷移し、エラーがあればメッセージを画面表示 という動きです。 (教えて!gooのような動きをさせたいのですが・・・) 2まではできていますが、3で困っています。 エラーがあればメッセージを画面表示するのはできましたが、エラーがない場合に次の画面へ移動する、というのはどのように実装すれば可能でしょう。 現在のソースは以下のような流れです。 ---------------------------------------------------------- <?php  $getChar = $_POST["char"] /*--- エラーチェック ---*/  if( isset( $_POST["send"] ) ) {   if( strcmp( $getChar, "" ) == 0 ) { // 空の場合はエラー   $strErr = "エラーメッセージ";   }   echo $strErr;  // ★  } ?> <form method="POST" action="#" name="form">  名前:<input type="text" name="char">  <input type="submit" name="send" value=\"送信\"> </form> ---------------------------------------------------------- 現在は上のような流れで処理を行っています。 今はエラーがある場合はエラーメッセージを表示(★部)し、ない場合はエラーメッセージを表示せず、画面遷移も行いません。 本当はエラーがない場合は次の画面へ遷移をさせたいのですが、どのように指定をさせたら良いのでしょうか。 すみませんが、ご回答よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpのログイン後の画面遷移について

    現在、phpで会員制サイトを作成する勉強をしています。 開発環境はxamppでMySQLデータベースにPDOで接続しています。 よく、会員制サイトで、非会員又は未ログイン状態でも、ある程度までページが閲覧でき、 詳しいページを閲覧するにはログイン又は新規会員登録を促すといった仕組みを見かけます。 そのような場合、ログイン後、画面は元のページ(ログイン前に操作していたページ)に戻る必要があると思うのですが、 この場合のphpプログラムは、 ログイン画面に遷移する前のページで empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]); でページのURLを取得し、 ログイン画面のページへ移動するためのボタンが押されたらinput-type="hidden"でログイン画面のページにURLを受け渡し、 ログインが成功したら取得したURLに遷移させる という流れで正しいでしょうか? また、非会員が会員登録する場合のページ遷移に関して少し疑問に思うことがあります。 大体非会員のユーザーが新規登録する場合、 新規登録フォームより会員登録後はログイン状態でTOPページに戻ることが多いですが、 それが一般的でしょうか? 会員登録後に登録前に閲覧していたページに遷移させられればユーザーにとっては一番親切だとは思いますが、 最近ではほとんどのサイトが『仮登録用に入力されたメールアドレス宛に本登録用のURLを記載して送信する』という会員登録方法を使用していますが、 前にいたページに遷移させるというのは物理的に難しいため、会員登録後はTOPページに戻しているのでしょうか? また、ログインが必要なページでは issetでセッション変数に情報が含まれているかどうかで、ログイン画面を表示するか 会員閲覧ページを表示するか分岐させると思いますが、 このプログラムはしょっちゅう使われると思うので 別ファイル化して呼び出すのが賢明でしょうか? ご回答、よろしくお願いします。

    • 締切済み
    • PHP
  • PHP5でPOSTデータを扱うとき

    POSTデータの扱いで悩んでいます。例えば、 if ($_POST["name"] == "yamada") { ... } とか何でもいいんですけど、$_POSTのキー名を指定する時、$_POSTのデータはクライアントから送信されてくるので、フォームをちゃんと作ってても、必ずしも期待したキー名が飛んでくるとは限らないじゃないですか? で、もし$_POST["name"]が存在しないと当然期待通りの処理ができないわけですが、皆さんどう実装されてますか? 例外使うんでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう