我在这里做一个小实验。我有一个测试文件,我用它来运行一些代码,而不必实际登录我的应用程序。
无论如何,我今天有一个想法,我可以让页面自动编辑,让我更快地完成某些琐碎的任务,因为我什至不需要为它们打开文本编辑器。
它主要是按原样工作,但我遇到了一件奇怪的事情;我希望有人碰巧有经验,或者可以阐明一些情况。
我不会发布整个文件的代码,只是相关的东西。这是基本思想:
索引.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 输出,它显然会关闭文本区域......所以我需要找到一种方法来获取文本区域内的关闭标签。我通过查看页面的来源验证了这一点,所以我认为它是正确的。
所以我想我只需要一种方法来“逃离”他们......
我知道这在安全性方面不是一件好事,但这只是我使用的一个本地页面(除了坐在我电脑前的人之外,任何人都无法使用它)。所以我们不需要讨论它显然可能存在的安全问题......
所有想法表示赞赏!:)