【发布时间】:2014-02-13 09:32:12
【问题描述】:
这是脚本:
<?php
$line0PHP = '<?php';
$line1PHP = 'defined( '_JEXEC' ) or die( 'Restricted access' );';
$line2PHP = 'jimport( 'joomla.plugin.plugin');';
$line3PHP = 'jimport( 'joomla.html.parameter');';
$line4PHP = 'class plgSystem'.$titleString.'plugin extends JPlugin';
$line5PHP = '{';
$line6PHP = 'function plgSystem'.$titleString.'plugin()';
$line7PHP = '{';
$line8PHP = '}';
$line9PHP = '}';
$line10PHP = '?>';
$phpFileOutput = $line0PHP.' '.$line1PHP.' '.$line2PHP.' '.$line3PHP.' '.$line4PHP.' '.$line5PHP.' '.$line6PHP.' '.$line7PHP.' '.$line8PHP.' '.$line9PHP.' '.$line10PHP;
$varOutputPhp = print_r($phpFileOutput, true);
file_put_contents($root,$varOutputPhp);
?>
$root 和 $titleString 是前面定义的。
【问题讨论】:
-
当心,您的代码中有一些“智能引号”。 PHP 只支持普通的单引号和双引号。
-
在写入文件之前考虑heredoc 字符串和
htmlspecialchars。 -
HTML 实体由浏览器处理,而不是 PHP。您应该将真实字符写入文件。
-
正如 Barmar 所说,那些智能/弯引号会立即引发错误。改为
$title = 'titleValue'; -
titleValue已更新。我刚刚从文字处理器中提取出来。代码中没有这种方式。
标签: php file overwrite htmlspecialchars