0

次の手順を実行する必要があるページがあります。

ステップ 1 - 経由で URL アドレス、名前、値、番号、および ID を受け取るPOST

ステップ 2 - 10 秒待ちます

ステップ 3 - 郵便で受け取った次の情報を (これも郵便で) 郵便で受け取った URL に送信します: 名前、値、数値、および ID。

ステップ 4 - 投稿を受信した URL にリダイレクトし、画面に投稿を印刷します。

このために私は以下のコードを使用していますが、投稿情報をもたらすはずのリダイレクトされた URL の印刷が空になるため、何かがうまくいかないため、何らかの理由で情報が正しく投稿されていないように見えます。

誰かが私が間違っていることを教えてもらえますか?

コード:

HTML - POST するフォームを作成します。

<form id="ret" name="return_url" method="post" action="<?php print_r($_POST['url']);?>">
 <input type="hidden" name="name" value="<?php print_r($_POST['name']);?>" />
 <input type="hidden" name="value" value="<?php print_r($_POST['value']);?>" />
 <input type="hidden" name="num" value="<?php print_r ($_POST['num']);?>" />
 <input type="hidden" name="ID" value="<?php print_r($_POST['ID']);?>" />
 <input type="hidden" name="status" value="OK" />
</form>

投稿された URL コンテンツを$retornoJavascript (PHP) で使用されるvar に追加します。

<?php
    $retorno = $_POST['url'];
?>

カウンターを開始し、フォームを送信してリダイレクトします (javascript を使用):

<script language="javascript" type="text/javascript">
  window.onload = function() {
    function countdown() {
      if (typeof countdown.counter == 'undefined') {
        countdown.counter = 10; // initial count
      }
      if (countdown.counter > 0) {
        document.getElementById('count').innerHTML = countdown.counter--;
        setTimeout(countdown, 1000);
      }
      else {
        document.getElementById("ret").submit();
        location.href = '<?php echo $retorno?>';
      }
    }
    countdown();
  };
</script>
4

1 に答える 1

0

あなたのコードには多くの間違いがあります。

1. 使うprint_rべきところは使うecho

<form id="ret" name="return_url" method="post" action="<?php print_r($_POST['url']);?>">

上記の行では、属性値として無効になる方法でprint_rの内容を出力します。生成されたページの HTML ソース コードを見てください。$_POST['url']action

これは次のように書き換える必要があります。

<form id="ret" name="return_url" method="post" action="<?php echo $_POST['url']; ?>">

すべての入力値で同じ間違いを犯します。action 値は、フォームが POST されるアドレスでなければならないため、特に重要です。

2. フォームを送信しますが、ページもリダイレクトします

フォームsubmit()とリダイレクトの間に競合がありますlocation.href

単純に行を削除しlocation.hrefます。HTML フォームが適切に構成されている場合、JavaScriptは属性submit()で定義されたページにブラウザーを送信します。action

最後に、JavaScript のコーディングを容易にするために jQuery ライブラリーを検討することをお勧めします。

于 2013-10-17T22:06:36.637 に答える