在php中,__FILE__表示当前所在文件的绝对路径包括文件名,dirname(__FILE__)表示当前文件的绝对路径,basename(__FILE__)表示当前文件的文件名称。dirname(__FILE__)."/f/".basename(__FILE__)则表示当前文件所在目录下的f目录下的,文件名称为dirname(__FILE__)的文件,require表示包含该文件到这个文件。
以下是有关php中dirname()与__FILE__相结合的例子,供大家参考。
1,dirname(__FILE___) 函数返回的是脚本所在路径。
比如文件 b.php 包含如下内容:
$basedir = dirname(__FILE__);
?>
如果b.php被其他目录里的a.php文件require 或者 include 去引用的话。
变量$basedir 的内容还是b.php所在的那个文件夹的路径。
而不是变成a.php文件所在的目录。
2,dirname(__FILE__) 一般会返回文件所的当前目录到系统根目录的一个目录结构。
不会返回当前的文件名称。
dirname(__FILE__) 也可能返回一个 . (当前目录)
原因是:
b.php 文件在 http.conf 或者 PHP 配置开发环境的默认WEB目录下。
比如 WEB_ROOT 为: "C:/root/www/",b.php文件路径为: "C:/root/www/b.php"。
3,使用方法提示,
如果重复一次可以把目录往上提升一个层次:
比如:
其实就是把一个目录给dirname()作参数了,因为dirname()返回最后的目录不带\\或者是/。
所以,重复使用时可以认为 dirname()把最下层的目录当成文件名来处理了,照常返回当前目录的上级目录。
这样重复就得到了它的上级上当。
4,包含得到上一级目录的文件
就介绍这些吧,希望对大家有所帮助。
php内置函数get_magic_quotes_gpc(),获取php.ini设置中magic_quotes_gpc选项的值。
magic_quotes_gpc选项:
如果magic_quotes_gpc=On,PHP解析器就会自动为post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误。
在magic_quotes_gpc=On的情况下,如果输入的数据包含:
单引号(’)、双引号(”)、反斜线(\)与 NUL(NULL 字符)等字符都会被加上反斜线。
这些转义是必须的,如果这个选项为off,那么就必须调用addslashes()函数来为字符串增加转义。
正是因为这个选项必须为On,但是又让用户进行配置的矛盾,在PHP6中删除了这个选项,一切的编程都需要在magic_quotes_gpc=Off下进行了。
这样的环境下,如果不对用户的数据进行转义,后果不仅仅是程序错误而已了。
同样的会引起数据库被注入攻击的危险。
为了迎接php6的到来,以后不要依靠这个选项为on了。
当magic_quotes_gpc=On时,函数get_magic_quotes_gpc()就会返回1。
当magic_quotes_gpc=Off时,函数get_magic_quotes_gpc()就会返回0。
所以,get_magic_quotes_gpc()函数,就是用来得到环境变量magic_quotes_gpc的值。
不过,在PHP6中删除了magic_quotes_gpc选项,可能在php6中这个函数就不存在了。
在php中实现加密的函数,不外乎如下:
1,md5()
2,sha1()
3,crc32()
4,crypt()
5,uniqid()
1,md5()函数
定义和用法
md5() 函数计算字符串的 MD5 散列。
md5() 函数使用 RSA 数据安全,包括 MD5 报文摘译算法。
如果成功,则返回所计算的 MD5 散列,如果失败,则返回 false。
语法
md5(string,raw)
参数 描述
string
必需。规定要计算的字符串。
raw
raw
可选。规定十六进制或二进制输出格式:
TRUE - 原始 16 字符二进制格式
FALSE - 默认。32 字符十六进制数
注释:该参数是 PHP 5.0 中添加的。
例子:
<?php $str = "Hello"; echo md5($str); ?>
输出:
8b1a9953c4611296a827abf8c47804d7
2,sha1()函数:
定义和用法
sha1() 函数计算字符串的 SHA-1 散列。
sha1() 函数使用美国 Secure Hash 算法 1。
如果成功,则返回所计算的 SHA-1 散列,如果失败,则返回 false。
语法
sha1(string,raw)
参数 描述
string 必需。规定要计算的字符串。
charlist
可选。规定十六进制或二进制输出格式:
TRUE - 原始 20 字符二进制格式
FALSE - 默认。40 字符十六进制数
注释:该参数是 PHP 5.0 中添加的。
3,crc32()函数:
定义和用法
crc32() 函数计算一个字符串的 crc32 多项式。
该函数可用于验证数据的完整性。
语法
crc32(string)
string必需。规定要计算的字符串。
说明
生成 string 参数的 32 位循环冗余校验码多项式。这通常用于检查传输的数据是否完整。
提示和注释
提示:由于 PHP 的整数是带符号的,许多 crc32 校验码将返回负整数,因此您需要使用 sprintf()() 或 printf() 的 "%u" 格式符来获取表示无符号 crc32 校验码的字符串。
例子,将在使用以及不使用 "%u" 格式符的情况下,输出 crc32() 的结果(注意结果是相同的):
<?php $str = crc32("Hello world!"); echo 'Without %u: '.$str."<br />"; echo 'With %u: '; printf("%u",$str); ?>
输出:
Without %u: 461707669
With %u: 461707669
例2,在本例中,将在使用以及不使用 "%u" 格式符的情况下,输出 crc32() 的结果(注意结果是不相同的):
<?php $str = crc32("Hello world."); echo 'Without %u: '.$str."<br />"; echo 'With %u: '; printf("%u",$str); ?>
输出:
Without %u: -1959132156
With %u: 2335835140
4,uniqid()函数:
定义和用法
uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
语法
uniqid(prefix,more_entropy)
prefix可选。为 ID 规定前缀。如果两个脚本在相同的微妙生成 ID,该参数很有用。
more_entropy可选。规定位于返回值末尾的更多的熵。
说明
如果 prefix 参数为空,则返回的字符串有 13 个字符串长。如果 more_entropy 参数设置为 true,则是 23 个字符串长。
如果 more_entropy 参数设置为 true,则在返回值的末尾添加额外的熵(使用组合线形同余数生成程序),这样可以结果的唯一性更好。
返回值
以字符串的形式返回唯一标识符。
提示和注释
注释:由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数(请在字符串函数参考中查找)。
例子:
<?php echo uniqid(); ?>
输出类似:
4415297e3af8c
5,crypt()函数:
定义和用法
crypt() 函数返回使用 DES、Blowfish 或 MD5 加密的字符串。
在不同的操作系统上,本函数的行为不同,某些操作系统支持一种以上的算法类型。在安装时,PHP 会检查什么算法可用以及使用什么算法。
语法
crypt(str,salt)
str必需。规定要编码的字符串。
salt
可选。用于增加被编码字符数目的字符串,以使编码更加安全。
如果未提供 salt 参数,则每次调用该函数时会随机生成一个。
提示和注释
提示:解密函数是没有的。crypt() 函数使用一种单向算法。
例子,将测试不同的算法:
<?php if (CRYPT_STD_DES == 1) { echo "Standard DES: ".crypt("hello world")."\n<br />"; } else { echo "Standard DES not supported.\n<br />"; } if (CRYPT_EXT_DES == 1) { echo "Extended DES: ".crypt("hello world")."\n<br />"; } else { echo "Extended DES not supported.\n<br />"; } if (CRYPT_MD5 == 1) { echo "MD5: ".crypt("hello world")."\n<br />"; } else { echo "MD5 not supported.\n<br />"; } if (CRYPT_BLOWFISH == 1) { echo "Blowfish: ".crypt("hello world"); } else { echo "Blowfish DES not supported."; } ?>
输出类似(依赖于操作系统):
Standard DES: $1$r35.Y52.$iyiFuvM.zFGsscpU0aZ4e.
Extended DES not supported.
MD5: $1$BN1.0I2.$8oBI/4mufxK6Tq89M12mk/
Blowfish DES not supported.
说明,确切的算法依赖于 salt 参数的格式和长度。
以下是与 crypt() 函数一起使用的一些常量。
在安装时,由 PHP 设置这些常量:
[CRYPT_SALT_LENGTH]
[CRYPT_STD_DES]
[CRYPT_EXT_DES]
[CRYPT_MD5]
[CRYPT_BLOWFISH]