完全なシナリオは、w3schools のような Web アプリケーションを作成しています。オプション。しかし、今はセキュリティについては置いておいて、Web アプリケーションのコア部分を作っています。
私の論理は次のとおりです。
- textarea を使用してユーザーから入力を取得し、ajax リクエストで POST メソッドを使用してそのデータを送信します。
- PHPファイル(ajaxがリクエストを送信した)で、投稿されたコンテンツを別のPHPファイルに書き込み、システム関数を使用してそのPHPコードを実行し、生成されたhtmlを.htmファイルに再度書き込みます。
- ajaxリクエストが送信されたファイル(最初のファイル)で、javascriptで.htmファイルの出力のiframeを使用して更新しています。
問題は:
エコー、システム関数を含むコードでは、すべて正常に機能しました。ただし、「+」などの記号を使用すると、投稿されたデータは html URL デコードに変換されます。
<?php
echo "Hello, world";
?>
上記のコードは正常に動作します。
<?php
$a = 10;
$b = 20;
echo $a+$b;
?>
動いていない。上記のコードは、PHP で記述されたファイル (POST データから書き込んでいるファイル) にチェックインすると、次のように記述されます。
<?php
$a = 10;
$b = 20;
echo $a $b;
?>
「+」記号はスペースに変換されています。データは通常の html エンティティにデコードされていると思います。この全体のより良いロジックと、この問題を解決する方法はありますか。みんな助けてください。
ajax リクエストを使用してテキストエリア コードを送信しているファイル:
<title>Html Black Box</title>
<style>
textarea{
font-family: courier; font-size: 15px; height: 100%; width: 100%;}
input {width: 100%; height: 100%; font-size: 40px;}
iframe {width: 100%; height: 100%; }
</style>
<script>
function update(){
document.getElementById('tdop').innerHTML = "<img src=ajx_ima.gif>";
var form = document.getElementById('code_text').value;
var xmlhttp;
if (window.XMLHttpRequest)
xmlhttp=new XMLHttpRequest();
else
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("POST", "process_php.php", true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var res = xmlhttp.responseText;
document.getElementById('tdop').innerHTML = "<iframe src=out_php.htm id=out></iframe>";
}
}
xmlhttp.send("code="+form);
}
</script>
<table border=0>
<tr>
<td>
<textarea id="code_text" style="resize: none;"></textarea>
</td>
<td id="tdop">
<iframe src="blank.htm" id="out" frameBorder="1"></iframe>
</td>
</tr>
<tr><td colspan="2" align="center"><input type="button" value="Update Page" onclick="update()"></td></tr>
</table>
受信データを書き込むファイル
<?php
$stringData = ''.isset($_POST['code']) ? $_POST['code'] : '';
$myFile = "buf_php.php";
$fh = fopen($myFile, 'w+');
file_put_contents($myFile, $stringData);
fclose($fh);
$myFile = "out_php.htm";
system("php buf_php.php > $myFile");
echo $stringData;
?>