Php独立代码块

时间:2014-09-18 15:07:13

标签: javascript php css override

我已经开发了 Php网站,本网站的一部分就是所谓的" 信息中心"用户可以拥有多个小部件。现在,我的一位朋友提出了让用户 上传自己的小部件的想法。现在我只是使用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>'); 
    }

BUT

  1. 如果用户意外使用我已经在我的代码中使用的Php变量怎么办?
  2. 如果用户在自定义小部件中覆盖我的Css样式会怎样?
  3. 如果他的小部件使用与我相同的Js变量怎么办?
  4. 所以我想构建某种独立的代码块,它不会影响网站的任何其他部分..任何想法?

2 个答案:

答案 0 :(得分:1)

  1. 使用类并创建对象以创建独立的代码块。
  2. 将css样式包装到css类中。
  3. 使用OOP启动Javascript变量,并在页面完成后将null设置为JS对象。
  4. 您需要为用户提供一个单独的框来复制和粘贴您可以包装到自己的css类中的css。或者,您可以使用javascript来设置/覆盖重要的CSS样式。

答案 1 :(得分:0)

你的包含是危险的。您应该定义一个工作目录并检查realpath('../'。$ record-&gt; wpath)的结果,以防止目录遍历。

const WORKING_DIR = '/var/www/my-page';

$pathForInclude = realpath('../' . $record->wpath);

if ($pathForInclude !== false && strpos($pathForInclude, WORKING_DIR) === 0) {
    include($pathForInclude);
}