我的网站布局:
的index.php: - 前控制器 - 包括header.php - 包括template.php - 包括footer.php
前端控制器检查URL,并决定要包含哪个模板,或者是否为操作,执行错误检查并转发到视图。 我有一个搜索表单,它发布输入数据(使用GET方法)。前端控制器获取它,调用“action_search.php”,如果有错误则暂停,然后包含“search_template.php”,这显示搜索结果。到目前为止,控制器检查GET参数(它们是存在的,转义等)并重定向到视图,但有人通过浏览器直接调用该视图?脚本将死于“未知的GET参数”,因此必须在视图中再次完成。但它伤害了MVC。然后怎么做?
答案 0 :(得分:1)
使用mod_rewrite通过index.php强制执行所有操作,然后按照您希望的方式通过index.php处理每个请求,并且它可以决定要做什么。
答案 1 :(得分:1)
您的MVC应该以不允许用户直接通过浏览器访问您的视图的方式进行设置。使用.htaccess重写规则将所有请求重定向到前端控制器。
答案 2 :(得分:1)
除了使用mod_rewrite / .htaccess“隐藏”页面之外,您可以只在不是http文档根目录的子目录的目录中直接访问php页面。