php中禁止非法调用和硬路径引入文件的方法

在php中有一些公共的文件为了方便,我们会做一个公共文件,让不用的文件共同调用。为了禁止公共文件被非常单独调用,
可以在文件上做一个常量,禁止非常调用:
在公共文件上定义一个常量如下

 define('custom_string',true);

在要调用的文件里也加上一个判断来调用公共文件:

     if (!defined('custom_string')) {
exit('非法调用');
}

一般地,要调用文件可以用include,include_once,require, require_once去调用了,但是从速度角度考虑,可以用硬路径去引入文件。
在php中用魔法常量__FILE__可以获取文件的路径    ,用dirname(__FILE__);可以得到根目录地址,
如引入header.php文件,可以用下面的方法引入:

require dirname(__FILE__).'/filename.php';

但是有时候经常调用这个dirnam可能会不方便,可以把空上路径转化为一个常量,方便去调用。

php里的substr()函数可以截取出文件的根目录。可以这么把这个路径定义成一个常量:

define('SITE_PATH',substr(dirname(__FILE__),0,-n));

用负数可以让文件截取的时候从后面开始截取,n为公共文件存放的路径字符数量。比如公共文件存放相对路径为abc/includes/filename.php,则n的abc/includes的字符长度数:12。定义为常量之后可以直接用常量去引入路径:

require SITE_PATH.'filename.php';

php中禁止非法调用和硬路径引入文件的方法的更多相关文章

  1. SQL Server 无法在服务器上访问指定的路径或文件解决方法

    SQL Server 无法在服务器上访问指定的路径或文件解决方法 在SQL Server附加数据库或备份数据库时出现:无法在服务器上访问指定的路径或文件. 请确保您具有必需的安全权限且该路径或文件存在 ...

  2. 在C#程序中,创建、写入、读取XML文件的方法

    一.在C#程序中,创建.写入.读取XML文件的方法 1.创建和读取XML文件的方法,Values为需要写入的值 private void WriteXML(string Values) { //保存的 ...

  3. C#中winform使用相对路径读取文件的方法

    http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73b6cd0d3027fa3cf1fd579080101 ...

  4. iOS APP中第三方APP调用自己的APP,打开文件

    根据需求需要在项目中要打开word.pdf.excel等文件,在info.plist文件中添加 <key>CFBundleDocumentTypes</key> <arr ...

  5. C#中经常使用的几种读取XML文件的方法

    XML文件是一种经常使用的文件格式,比如WinForm里面的app.config以及Web程序中的web.config文件,还有很多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖 ...

  6. java中从含反斜杠路径截取文件名的方法

    例如:获取到的文件路径为C:\Documents and Settings\Leeo\My Documents\logo.gif现在想要取得图片的名称logo.gif,我们知道反斜杠“\”是转义字符, ...

  7. 微信H5中禁止分享好友及分享到朋友圈的方法

    我们可以直接把以下代码加入到页面中,即可限制住各类分享. <script> function onBridgeReady() { WeixinJSBridge.call('hideOpti ...

  8. winform使用相对路径读取文件的方法

    获取exe文件的路径进行截取,分两次进行,然后拼接文件名,形成全路径 代码如下: string haarXmlPath = @"haarcascade_frontalface_alt_tre ...

  9. Ubuntu12.04中在桌面建立指向网页的链接文件的方法

    #cd /usr/share/applications #cp firefox.desktop ~/Desktop #cd ~/Desktop #chmod +x firefox.desktop 右键 ...

随机推荐

  1. 缓存 Array.length 是老生常谈的小优化

    问题 缓存 Array.length 是老生常谈的小优化. // 不缓存 for (var i = 0; i < arr.length; i++) { ... } // 缓存 var len = ...

  2. .net 加密错误:填充无效,无法移除

    今天用System.Security.Cryptography加密.使用了AesManaged,报错:填充无效,无法移除.分析是解密失败,密文损坏,或者KEY,IV不正确. using (AesMan ...

  3. 使用VS2003 发送Email

    使用VS2003发送Email与之后VS2005版本及以上VS版本不一样,记录一下, 需要引用using System.Web.Mail; public void SendEmail() { try ...

  4. Hadoop学习资料收集

    1.漫画HDFS工作原理  http://blog.csdn.net/netcoder/article/details/7442779 2.马哥教育 http://mageedu.blog.51cto ...

  5. bash基础知识

    站在用户登录的角度来说,SHELL的类型:登录式shell: 正常通常某终端登录 su - USERNAME su -l USERNAME 非登录式shell: su USERNAME 图形终端下打开 ...

  6. linux 系统中的特殊文件

    特殊文件是UNIX系统中最具特色的文件特性之一.特殊文件也称设备文件.提供用户访问外部设备,而不必知道各种设备的具体操作.UNIX利用特殊文件作为用户与设备文件的接口,使用户能像访问普通文件那样访问特 ...

  7. Service(Local Service)简介

    一.Service的作用 主要用于在后台处理一些耗时的逻辑操作,或者去执行某些长期运行的操作. 二.Service的创建 1.主要方法 IBinder onBind(Intent intent):必须 ...

  8. os模块实现遍历文件

    使用OS模块中的walk实现文件遍历. walk(top, topdown=True, onerror=None, followlinks=False) 从官方提供的doc中看到有四个参数 1> ...

  9. Linux man 后面的数字含义及作用

    Linux的man很强大,该手册分成很多section,使用man时可以指定不同的section来浏览,各个section意义如下: 1 Executable programs or shell co ...

  10. Delphi 进阶基础技能说明

    以下讨论均基于Delphi XE8,主要是利用DELPHI新版的功能,如:Unicode,泛型,匿名函数等[XE2 后应该都支持]. 用新特性的好处是少写代码,提高效率.本博客不再讨论Delphi旧版 ...