您好我是Codeigniter的新手。根据我对BASEPATH的理解,它用于激活CI框架。代码
已定义('BASEPATH')或退出('不允许直接访问脚本');
用于页面顶部以防止直接访问控制器。但它在我的代码中不起作用。当我尝试通过控制器直接访问视图时,视图会被加载。我检查了index.php,并在那里定义了BASEPATH。请指教。
答案 0 :(得分:7)
defined('BASEPATH') OR exit('No direct script access allowed');
用于确保请求已通过根目录中的index.php
。这是出于诸如确保加载所有CI基类并确保已设置某些变量等原因。
所以,是的,如果您正在通过控制器,您将能够访问视图文件。
希望这有帮助!
答案 1 :(得分:6)
defined('BASEPATH') OR exit('No direct script access allowed');
defined
:检查给定的命名常量是否存在BASEPATH
:这是来自codeigniter reserved names OR exit
打印字符串:'No direct script access allowed'
exit
- 输出消息并终止当前脚本。其他参考:PHP 5 Constants
答案 2 :(得分:0)
在课程开始前使用此代码 例如
已定义('BASEPATH')或退出('不允许直接访问脚本');
类Dataentry扩展了CI_Controller {}
答案 3 :(得分:0)
用户通过控制器访问框架 (http://example.com/index.php/controllername)。各自的控制器是 通过URL参数激活。 由于PHP假设框架中的类已被声明,因此 行确保框架已正确启动,并且服务器未 运行一个PHP文件。不使用此功能可能会导致潜在的安全漏洞, 如果框架没有启动,则控制器文件将自行运行 失败了
语句的详细信息。
答案 4 :(得分:0)
实际上,codeigniter不允许直接访问其所有文件。所有请求均由index.php处理,该文件存在于代码igniter的根文件夹中。
每当我们请求任何codeigniter url index.php进行处理并定义一个常量时。 defined('BASEPATH') OR exit('No direct script access allowed');
检查是否定义了常量,否则将退出php脚本,并且不会进一步处理。
如果您从控制器调用任何视图文件,则该文件将起作用并且不会退出脚本,因为在命中任何控制器时您的请求已由index.php处理。 如果您尝试访问直接查看文件,那么它将无法正常工作并且php脚本退出
答案 5 :(得分:0)
defined('BASEPATH') OR exit('No direct script access allowed');
执行以下操作:
defined('BASEPATH')
=>检查是否定义了名为BASEPATH
的CodeIgniter常量。如果已定义,它将返回TRUE
,并且此后不再发生任何事情。如果未定义,则返回FALSE
,并使用信息exit('...');
执行前面的代码'No direct script allowed'
。当您说它不适用于您的代码时。您指的是什么代码?可以分享上述密码吗?查看文件通常由控制器加载。
答案 6 :(得分:0)
无论你做什么,你都不能在不进入 index.php 的情况下访问查看页面(除非你关闭 php 服务器或更改“.htaccess”文件)所以任何请求都会首先转到 index.php !这就是为什么它被加载