php常量及函数-学习笔记

常量

__FILE__当前代码所在文件(而不是url所在文件)完整路径。详情

FILESYSTEM函数:允许访问和操作文件系统

readfile(文件名[,include_path[,context]])读入一个文件并写入到输出缓冲。如果想在include_path中搜索文件,可以使用include_path参数并将其设为true。错哦ntext规定文件句柄的环境,context是可以修改流的行为的一套选项。打开一个文件并读取其内容。
fopen(文件名,mode[,include_path[,context]])打开文件。mode规定要求到该文件/流的访问类型:
r只读方式打开,将文件指针指向文件头。
r+读写方式打开,将文件指针指向文件头。
w写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
w+读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
a写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
a+读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
x创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则fopen()调用失败并返回FALSE,并生成一条E_WARNING级别的错误信息。如果文件不存在则尝试创建之。仅能用于本地文件。
x+创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则fopen()调用失败并返回FALSE,并生成一条E_WARNING级别的错误信息。如果文件不存在则尝试创建之。仅能用于本地文件。
is_writable(file)在写入文件前,需要使用该函数判断文件是否可写。如果文件存在且可写则返回true。受clearstatcache()函数影响。
fwrite(file,string[,length])写入文件(可安全用于二进制文件)。把string的内容写入文件指针file处,当写入了length个字节或者写完了string以后,写入就会停止。返回写入的字符数,出现错误时返回false。
file_put_contents(file,[,data[,moda[,context]]])把一个字符串写入文件中,与依次调用fopen(),fwrite(),fclose()功能一样。data可以是数组(但不能是多维数组)。如果文件存在,则创建一个新文件。mode的可能值:FILE_USE_INCLUDE_PATH、FILE_APPEND、LOCK_EX。默认是从头写入,加FILE_APPEND为追加写入,在追加写入时,为了避免其他人同时操作,往往需要锁定文件,这时需要加多一个LOCK_EX的声明,如:echo file_put_contents('test.txt',"This is Test!",FILE_APPEND|LOCK_EX);//echo输出到显示器里的是写入文件字符串的长度。
fclose(file)file是一个文件指针,函数关闭该指针指向的文件。例:fclose("test.txt");文件指针必须有效,并且是通过fopen()或fsockopen()成功打开的。
fgets(file[,length])从文件指针中读取一行。从file值指向的文件中读取一行并返回长度最多为length-1字节的字符串。碰到换行符(包括在返回值中)、EOF或者已经读取了length-1字节后停止(要看先碰到哪一种情况)。调用该函数后,文件指针会移动到下一行。
fgetc(file)从文件指针中读取一个字符。在调用该函数之后,文件指针会移动到下一个字符。
feof(file)检测是否已到达文件末尾(EOF)。如果文件指针到了EOF或者出错时则返回TRUE,否则返回一个错误(包括socket超时),其它情况则返回FALSE。

如果服务器没有关闭由fsockopen()所打开的连接,feof()会一直等待直到超时而返回TRUE,默认的超时限制是60秒,可以使用stream_set_timeout()来改变这个值。

如果传递的文件指针无效可能会陷入无限循环中,因为EOF不会返回TRUE。

clearstatcache()清除文件状态缓存。某些函数的返回信息会被缓存以便提高更高的性能,但是有时候比如在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被删除或修改的危险时,需要清除文件状态缓存,以便获得正确的结果。要做到这点,就需要使用clearstatcache()。
move_uploaded_file(file,newloc)

file规定要移动的文件,newloc规定文件的新位置。本函数检查并确保由file指定的文件是合法的上传文件(即通过PHP的HTTP POST上传机制所上传的)。如果文件合法,则将其移动为由newloc指定的文件;如果file不是合法的上传文件,不会出现任何操作,move_uploaded_file()将返回false;如果file是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_upload_file()将返回false,此外还会发出一条警告。本函数仅用于通过HTTP POST上传的文件。

通过使用PHP的全局数组$_FILES,可以从客户计算机想远程服务器上传文件。

第一个参数是表单的input name(假设此时的文件上传控件id为file),第二个下标可以是name、type、size、tmp_name、error。如下:

$_FILES["file"]["name"]被上传文件的名称
$_FILES["file"]["type"]被上传文件的类型
$_FILES["file"]["size"]被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"]存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"]由文件上传导致的错误代码
 
dirname(path)返回目录的路径部分(不包含文件名称)
basename(path[,文件扩展名])返回目录的文件名部分,设置文件扩展名参数后,返回将不带扩展名。

Directory函数:允许获取关于目录及其内容的信息。

getcwd()返回当前运行脚本的工作目录。
getcwd()和dirname(__FILE__)的区别
getcwd()获取的是当前运行脚本的目录,不管getcwd()是在被包含的文件里面还是在当前执行脚本文件里面,运行的结果不会发生变化。
dirname(__FILE__)__FILE__获取的是文件名称,如果用在被包含文件中,则返回被包含的文件名,如果直接用在当前运行脚本内,则返回运行脚本的文件名称。
$_SERVER["PHP_SELF"]一种超全局变量。返回当前执行脚本的文件名。
htmlspacialchars(var)把特定字符转换为HTML实体。可防止攻击者通过在表单中注入HTML或JavaScript代码(跨站点脚本攻击)对代码进行利用。

应用:$_SERVER["PHP_SELF"]变量能够被黑客利用。如果你的页面使用了PHP_SELF,用户能够输入下划线然后执行跨站点脚本(XSS)。 

提示:跨站点脚本(Cross-site scripting,XSS)是一种计算机安全漏洞类型,常见于web应用程序。XSS能够使攻击者向其他用户浏览的网页中输入客户端脚本。

例:test.php页面中有表单:

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

如果地址栏中是正常URL:hhtp://www.example.com/test.php,上面代码会转换为:

<form method="post" action="test.php">

一旦输入:http://www.example.com/test.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E,上面代码会转换成:

<form method="post" action="test.php"/><script>alert('hacked');</script>

使用htmlspecialchars()函数避免上述情况,表单代码:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

这时输入http://www.example.com/test.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E,上面代码会转换成:

<form method="post" action="test.php/"><script>alert('hacked')</script>"
无法利用,没有伤害。
trim(var)取出多余的空格、制表符、换行
stripslashes(var)删除反斜杠(\)
$_SERVER["REQUEST_METHOD"] 
empty(var)判断变量是否已经赋予数据且不为空。‘’、null、false、00、0、'0'、未定义、array()、var $var都返回true。
isset(var[,var[,...]])检测变量是否已经声明。未定义变量返回true。unset一个变量后,变量被取消了。
is_null(var)检查值、变量、表达式是否为null。未定义变量传入也会返回true,但是会报错!
defined(var)检测常量是否已经声明。

1、empty、isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null只是直接检查变量值,是否为null。

2、empty、isset输入参数必须是一个变量,而is_null输入参数只要是能够有返回值就可以(常量,变量,表达式等)。在php手册里,对于他们解析是:empty,isset是一个语言结构而非函数,因此它无法被变量函数调用。

preg_match(正则表达式,变量)检索字符串的模式,如果模式存在则返回true,否则返回false。

时间函数

date(格式[,时间戳])Y:年(4位数);y:年(2位数);M:月(英文简称);m:月(2位数);d:日(2位数);D:星期(英文简称);l:星期;H:带有首位零的24小时小时格式;h:带有首位零的12小时小时格式;i:带有首位零的分钟;s:带有首位零的秒(00-59);A:大写的午前和午后(AM或PM);a:小写的午前和午后(am或pm)
date_default_timezone_set(时区)设置时区。例:date_default_timezone_set("Asia/Shanghai");
mktime(时,分,秒,月,日,年)返回日期的Unix时间戳。
strtotime(日期或时间字符串[,时间戳])将任何字符串的日期时间描述解析为Unix时间戳。例:strtotime("10:38pm April 15 2015");strtotime("next Saturday");strtotime("tomorrow");strtotime("+3 Months");strtotime("December 31");
time()返回当前时间的时间戳

杂项函数

die(status)输出一条信息,并退出当前脚本。该函数时exit()函数的别名。参数规定在退出脚本之前写入的信息或状态号,状态号不会被写入输出。status为字符串即在退出前输出字符串,为整数即被用作退出状态。退出状态的值在0至254之间,255由php保留,不会被使用,0用于成功地终止程序。
  
  
  
  


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页