あるPHPページを自動転送ページとし、転送先に特定の値をPOST送信したいと考えています。
同じような質問があり、fsockopenを使ってすると良いようなのですが、どうしても上手くいきません。
現状、POST送信は成功しているのですが、URLが自動転送ページのままで、転送先ページのテキストのみが表示されている状態です。
どうすれば転送先ページに完全に移ってしまえるでしょうか。
ご助力下さい。
<ソース>
$url = "http://hoge.co.jp/test.php"; //転送先URL
$method = "POST";
$headers = "POST http://hoge.co.jp/test.php HTTP/1.1\r\n"; //転送先URL
$postdata = "parm=ok";
$URL = parse_url($url);
if(!isset($URL['port'])){$URL['port'] = 80;}
//リクエストヘッダ
$request = $method." ".$URL['path']." HTTP/1.0\r\n";
$request .= $headers;
$request .= "Host: ".$URL['host']."\r\n";
$request .= "User-Agent: PHP/".phpversion()."\r\n";
$request .= "Content-Type: application/x-www-form-urlencoded\r\n";
$request .= "Content-Length: ".strlen($postdata)."\r\n";
$request .= "\r\n";
$request .= $postdata;
//相手サーバへ接続
@$fp = fsockopen($URL['host'], $URL['port']);
// 接続失敗
if (!$fp) {die("ただいまメンテナンス中です。\n");}
//POSTで送信
fputs($fp, $request);
$response = "";
while (!feof($fp)) {
$response .= fgets($fp, 4096);
}
fclose($fp);
//ヘッダ部分とボディ部分を分離
$DATA = split("\r\n\r\n", $response, 2);
//出力
echo "<!--\n".$request."\n-->\n";
echo "<!--\n".$DATA[0]."\n-->\n";
echo $DATA[1];
No.4ベストアンサー
- 回答日時:
#1 です。
> 最後にheader("Location: {$url}");をいれると、一般向けページが表示されてしまったので、POST送信できていないようですT T
タイムラグという事無いですか?
相手のサーバの反応の関係で遅れているという可能性はありませんか?
postした後コンマ数秒遅らせてみたらどうでしょうか?
http://jp2.php.net/usleep
usleep(500000);
header("Location: {$url}");
別解として、メタタグやJavaScriptでリダイレクトする方法も考えられます(恐らくPHPよりは遅延すると思われます)。JavaScriptで遅延させると言うことも可能ですね。
echo <<<SCRIPT
<a href="{$url}">{$url}</a>へジャンプします。ジャンプしない場合は<a href="{$url}">クリック</a>してください。
<script type="text/javascript"><!--
setTimeout("location.href='{$url}'",500);
//-->
</script>
SCRIPT;
参考まで。
何度もご回答いただきありがとうございます。
また、お礼が遅れましたことをお詫びさせてください。
教えていただいた内容などを含め、いろいろ試してみたのですがまだまだ未熟で実現にはいたりませんでした。
ひとまず今回は教えていただいたJavascriptを活用させていただきました。
また勉強して実現しようと思います。
ありがとうございました。
No.3
- 回答日時:
POSTでリダイレクトしたいということでしょうか?
なら出来ないと判断して別の方法を考えた方がいいかと。
parm=okなら認証というのも脆弱ですし、そこらは変更できないものでしょうか。
POSTでリダイレクト自体は307ステータスを返せば一応はできますが。
回答ありがとうございます。
>parm=okなら認証というのも脆弱ですし、そこらは変更できないものでしょうか。
これはリンクしたい相手先サーバの設定なので変更できないのです;
こちらはリンクさせてもらう立場なので、できなければリンクをあきらめればいいのですが。。。
GETではすごく簡単に渡せるのを知っていたのですが、POSTがこんなに難しいとは思いませんでした。
No.2
- 回答日時:
回答ありがとうございます。
参考ページを読ませていただいたのですがPEARが使いたくて仕方ないですが、私の使っているサーバではPEARが実装されていないようで使えませんでした。
POSTで値を送信しながら別ページに遷移するのを全て自動でなんて追加モジュールでもいれないとムリなのでしょうか・・・
No.1
- 回答日時:
データを転送後、最後に出力をせず、ヘッダーでリダイレクトしたらどうですか?
header("Location: {$url}");
早速の回答ありがとうございます。
助言を呼んで「なるほど!」とセットしてみたのですが、今度は相手先URLには飛ぶのですが値がPOST送信されていないようです。
というのも、転送先ページでは、”ok”がPOSTで送信されていれば会員ページを表示してくれますが、送信されていなければ一般向けページが表示されてしまうのです。
最後にheader("Location: {$url}");をいれると、一般向けページが表示されてしまったので、POST送信できていないようですT T
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS GETをPOSTに変更したところ 送信 不能です。 1 2022/04/10 17:31
- Chrome(クローム) 【Google AndroidのChromeブラウザーでフォームに入力後に送信ボタンを押すと、400 1 2022/06/26 16:52
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php で C言語のdefineマクロの...
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
バッチを用いたフォルダの自動移動
-
phpとaspの違いについて
-
form actionで二つ送信先を指定...
-
phpで画像がどうしても文字化け...
-
透過PNGが透過されない!!
-
PHP8を使うと、大量のWarningが...
-
index.phpって何ですか? 具体...
-
PHPで、エラーがない場合のみ画...
-
これの対応OSを教えて下さい。p...
-
ワードプレスサイト PHP8.0.25...
-
PHPからロリポップ!のメールサ...
-
PHPで複数ファイルのダウン...
-
PHPをhtmlに読み込んだファイル...
-
chmod()で所有者が変わってしまう
-
「クラス関数」「メンバ関数」...
-
ファイルアップロードの上限を...
-
ワードプレス、Contact Form 7...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP MySql ページング
-
PHPのタイムアウトについて
-
BASIC認証のユーザー名をPHPで...
-
特定の値をPOST送信で他のサー...
-
php で C言語のdefineマクロの...
-
DBから取得した内容を横表示
-
[wordpress]外部RSSを「文字...
-
検索結果を2列で表示させたい
-
phpヒアドキュメントスクリプト...
-
■■simpleXMLでホットペッパーの...
-
PEARのHTTP_Requestをインストール
-
ヘッダーが付いた場合の、simpl...
-
phpでハイパーリンクして値を持...
-
名前空間のあるXMLからの取り出し
-
同一ディレクトリの連番ファイ...
-
RSSデータの読み込み方を教えて...
-
「include」と「file_get_conte...
-
PHP Mysql SELECTであいまい検...
-
PHP+MySQLでXMLを作成し、それ...
-
PHPでxmlファイルへのデータの...
おすすめ情報