Php独立代码块


Php independent code-block

我开发了一个Php网站,该网站的一部分是所谓的"Dashboard",用户可以在其中拥有多个小部件。现在,我的一个朋友想出了一个主意,让用户能够上传自己的小部件。。现在我只使用Php的include来加载当前用户的小部件,比如:

  while($record=mysql_fetch_object($result)){
        print('<li class="widget">');
        print('<input type="hidden" class="wid" value="' . $record->wid . '">');
        include("../" . $record->wpath);
        print('</li>'); 
    }

但是

  1. 如果用户不小心使用了我已经在代码中使用过的Php变量,该怎么办
  2. 如果用户在他的自定义小部件中覆盖了我的Css样式,该怎么办
  3. 如果他的小部件使用了和我相同的Js变量呢

所以我想建立一些独立的代码块,它不会影响网站的任何其他部分。。有什么想法吗?

  1. 使用类和创建对象来创建独立的代码块
  2. 将css样式包装成一个css类
  3. 在启动Javascript变量时使用OOP,并在页面完成后将null设置为JS对象

您需要给用户一个单独的框来复制和粘贴css,您可以将其包装到自己的css类中。或者,您可以使用javascript设置/覆盖重要的css样式。

您的include是危险的。您应该定义一个工作目录,并根据工作目录检查realpath('./'.$record->wpath)的结果,以防止目录遍历。

const WORKING_DIR = '/var/www/my-page';
$pathForInclude = realpath('../' . $record->wpath);
if ($pathForInclude !== false && strpos($pathForInclude, WORKING_DIR) === 0) {
    include($pathForInclude);
}