ここでちょっとした実験をしています。アプリに実際にログインしなくてもコードを実行するために使用するテスト ファイルがあります。
いずれにせよ、私は今日、ページを自己編集できるようにして、テキスト エディターを開く必要さえないので、特定の単純なタスクをより迅速に実行できるようにすることができると考えました。
ほとんどの場合、そのままで機能していますが、奇妙なことがわかりました。誰かがたまたま経験があるか、光を当てることができることを願っています。
ファイル全体のコードを投稿するのではなく、関連するものだけを投稿します。基本的な考え方は次のとおりです。
index.php:
<?php
if(isset($_POST['file'])) {
// rewrite ourself
$test_page = fopen('index.php', 'w');
fwrite($test_page, $_POST['file']);
fclose($test_page);
header('Refresh: 0; ' . $_SERVER['PHP_SELF']);
exit();
die(); // we should never get this far...
}
?>
<?php <!-- All the tester stuff goes here --> ?>
<?php <!-- Nothing fancy just a bunch of function calls --> ?>
<!doctype html>
<html lang="en">
<head>
</head>
<body>
<div>
<!-- a dump of the functions called in the tester area -->
</div>
<div>
<form method='post'>
<textarea name='file'>
<?php
$self = fopen('index.php', 'r');
while(!feof($self)) {
echo fgets($self);
}
fclose($self);
?>
</textarea>
<input type="submit" value="Edit/Refresh">
</form>
</div>
</body>
</html>
最後の 5 つの HTML タグがファイルに書き込まれていないことを除いて、すべてが正常に機能しています。より正確には、最後の 5 つの HTML タグが に書き込まれていtextarea
ません。これまでのところ、タグが PHP によって出力されると、明らかにテキスト領域が閉じられるというのが私の理論です。そのため、テキスト領域内でその終了タグを取得する方法を見つける必要があります。これはページのソースを見て確認したので、正しいと思います。
だから私は彼らを「逃れる」方法が必要だと思う...
セキュリティの面で良くないことはわかっていますが、これは私が使用する単なるローカル ページです (私のコンピューターの前に座っている人以外はアクセスできません)。したがって、明らかに存在する可能性のあるセキュリティの問題について議論する必要はありません...
すべての考えに感謝します!:)