CodeIgniter BASEPATH

时间:2014-11-18 08:57:01

标签: php codeigniter

您好我是Codeigniter的新手。根据我对BASEPATH的理解,它用于激活CI框架。代码

已定义('BASEPATH')或退出('不允许直接访问脚本');

用于页面顶部以防止直接访问控制器。但它在我的代码中不起作用。当我尝试通过控制器直接访问视图时,视图会被加载。我检查了index.php,并在那里定义了BASEPATH。请指教。

7 个答案:

答案 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文件。不使用此功能可能会导致潜在的安全漏洞,  如果框架没有启动,则控制器文件将自行运行  失败了

语句的详细信息。

  1. defined('BASEPATH')或exit('不允许直接脚本访问');函数define()检查常量是否存在
  2. BASEPATH是在Codeigniter保留名称中定义的常量,其中包含系统文件夹的路径。
  3. exit()函数仅显示字符串并终止脚本执行。

源-> https://www.quora.com/profile/Gursharan-Singh-Dhanjal

答案 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');执行以下操作:

  1. defined('BASEPATH') =>检查是否定义了名为BASEPATH的CodeIgniter常量。如果已定义,它将返回TRUE,并且此后不再发生任何事情。如果未定义,则返回FALSE,并使用信息exit('...');执行前面的代码'No direct script allowed'

当您说它不适用于您的代码时。您指的是什么代码?可以分享上述密码吗?查看文件通常由控制器加载。

答案 6 :(得分:0)

无论你做什么,你都不能在不进入 index.php 的情况下访问查看页面(除非你关闭 php 服务器或更改“.htaccess”文件)所以任何请求都会首先转到 index.php !这就是为什么它被加载