test.phpで生成された入力フォームのバリエーションをindex.html上で統一表示しようとしています。
●環境
chrome:77.0.3865.120(XSS AuthorはON)
firefox:70.0
●test.php
<?php
$content .= "<form action='send.php' method='POST'>";
$content .= "<input type='submit' class='button' name='set' value='設定'>";
$content .= "</form>";
?>
<form method="post" action="index.html">
<input type="hidden" name="POST_DATA" value="' . $content . '">
</form>
<script>document.forms[0].submit();</script>
●index.html
<?php echo $_POST['POST_DATA']; ?>
test.phpをブラウザ上で実行すると、firefoxではindex.htmlは結果[A]で表示されますが、chromeでは結果[B]となり、困っています。
■結果[A] … firefoxでの実行結果
<form action="send.php" method="POST"> ← 正しく展開されている
<input type="submit" class="button" name="set" value="設定">
</form>
■結果[B] … chromeでの実行結果
<form action="data:," method="POST"> ←「form action="」以降が「data:,」となっている
<input type="submit" class="button" name="set" value="設定">
</form>
POSTで飛ばした際にchromeは何をしているのかわかりませんが、アドバイスいただけると幸いです。
何卒よろしくお願いいたします。
URLエンコードすると良いと思います。
test.phpを下記のように修正します。
<?php
$content = "";
$content .= "<form action='send.php' method='POST'>";
$content .= "<input type='submit' class='button' name='set' value='設定'>";
$content .= "</form>";
$content = urlencode($content);
echo "<form method=\"post\" action=\"index.html\">\n";
echo "<input type=\"hidden\" name=\"POST_DATA\" value=\"".$content."\">\n";
echo "</form>\n";
?>
<script>document.forms[0].submit();</script>
index.htmlは下記のようにURLデコードします。
<?php
$postdata = urldecode($_POST['POST_DATA']);
echo $postdata;
?>
如何でしょうか。
サーバ問題が解消され、さきほど質問の終了とベストアンサーとさせていただきました。
2019/10/31 17:54:46ありがとうございました。
こちらこそ、有り難うございました。
2019/11/04 04:25:33