我们网站的采用PHP开发。所有链接都要公用一个入口文件:index.php
如:index.php?do=aaa
    在index.php中判断:如果aaa.php这个文件存在,则执行aaa.php文件。现在问题是:我们网站分免费用户,付费用户。举个例子,比如免费用户不能提问,付费用户可以,提问的功能在askquestion.php中。我的构思是在askquestion.php中判断当前用户是免费的还是付费的,根据结果判断是否继续执行“提问”这个功能。同事的构思是在index.php中判断用户是免费还是付费用户,根据结果判断askquestion.php是否执行。请各位大侠给出建议。另外附上我自己的一些想法:
index.php这个文件相当于一个路由文件,它的功能就是判断xxx.php是否存在,这是一个程序逻辑,不应该由它来判断业务逻辑。虽然可以在它里面判断网站上所有的业务逻辑,但是维护这个文件将相当麻烦。

解决方案 »

  1.   

    支持你同事,哈哈
    你们不仅仅是askquestion一个功能分付费免费吧?还有以后也有可能分出用户更多等级来,应该还是在index.php(或者写在专门的一个文件)里处理更方便
      

  2.   

    对这个问题补充一下,同事的设想是对所有的do=xxx进行权限控制。比如askquestion这个功能需要调用:
    deletequestion.php,writequestion.php,uploadquestion.php三个文件。
    那么他的做法是在数据库中建议一张表:       deletequestion    writequestion    uploadquestionuser1       1                 1                 1user2       0                 1                 1user3       0                 0                 0在index.php中查询这张表来判断权限。
      

  3.   

    开发过程中如果有几百个do=xxx,则需要几百个字段。。
      

  4.   

    如果绝不会发生 askquestion.php 被单独执行的情况,那么当然应该在入口(index.php)中做判断啦
    如果用户较多且访问频繁,则因考虑设立独立的用户管理中心
      

  5.   

    登陆时候分配权限,显示有权限的操作
    同时,askquestion.php根据权限是否执行这样便于后期维护吧
      

  6.   

    应该由单独一个 路由文件来处理index 是处理全部的初此化路由文件 switch.php 则单独处理 do=aaa.php 这些的文件和 权限问题这样会更清晰。。
      

  7.   

    写个 权限判断的 文件  global 进去而已
      

  8.   

        如果是java或者.net 我完全赞成lz的。不过php就有点不同了。lz认为index.php一个路由的页面, 而别人可能认为index.php他即是个路由,而且还是个权限管理器。可以建个处理路由的php 建个处理权限的php。 由index.php引用。 
      

  9.   

    你们两个都是错误的 如果是mvc模式 所有页面继承一个验证类就可以
    一般的话  每个页面都要include  就好比  
    你 某个 执行 delete.php?id=***就可以直接删除你的文件 
    php框架很多了 mvc模式也很普及了 
    你们不会还在用面向过程弄吧 
      

  10.   

    INDEX.PHP是一个控制全局的路由文件,业务逻辑不应混到里面来,你现在这里只是判断这两个条件,可能其它页面又还有别的逻辑,难道全写到INDEX.PHP中不成??既然已经写成一个路由模式,便应该每个部分做自己适合的功能,LZ,如果你是自己采用了MVC,你可以直接在ACTION中去判断,然后再跳转,这属于C这块的,V的话,也没必要在这里面判断
    to renzaijiang
    写PHP并不一定需要用什么框架吧,自己封装适合自己项目的类就可以了,用原生PHP总比继承这个,包含那个,效率更快吧,以前我用框架开发,我现在就是直接面向过程,不过数据库部分封装了一下,也没见得比框架开发就差到哪去了
      

  11.   


    你说话真的和李三脚一样狂, 所有页面继承一个验证类不就是第一种方法了吗? 继承和include有什么区别,反正你也要包含继承类,这是事实。