当前位置: 编程技术>php
本页文章导读:
▪用PHP伪造referer突破网盘禁止外连的代码
比如我放纳米盘里的文件http://img.namipan.com/downfile/da333ee178bdad6531d1ec1540cf86277c116b6300887600/02.Paid%20In%20Full.mp3 这个地址不能直接下载也不能在网页播放器里播放,点击下载转到了一个下载页面。.........
▪PHP学习mysql课件 高级篇第1/2页
数据库管理员的职责 服务器的启动与关闭 用户帐户维护 日志文件维护 数据库的备份与拷贝 服务器的优化 数据库管理系统的软件更新 数据目录的安全性 服务.........
▪PHP学习文件处理与文件上传 课件第1/2页
PHP对文件的处理 PHP 在服务器端文件的应用上,相关的范畴不仅仅在于用户与服务器资料库间的各种连接存取操作,也可以通过 PHP 内建的文件处理函数,来进行一般文件处理操作。.........
[1]用PHP伪造referer突破网盘禁止外连的代码
来源: 互联网 发布时间: 2013-11-30
比如我放纳米盘里的文件http://img.namipan.com/downfile/da333ee178bdad6531d1ec1540cf86277c116b6300887600/02.Paid%20In%20Full.mp3
这个地址不能直接下载也不能在网页播放器里播放,点击下载转到了一个下载页面。要想能够直接下载这个文件或播放这个文件,那就要伪造referfer,欺骗服务器,referfer是来自纳米盘的链接。
最开始使用的方法是用PHP内置的函数stream_context_create。
代码如下:
function referfile($url, $refer=”) {
$opt=array('http'=>array('header'=>”Referer: $refer”));
$context=stream_context_create( $opt);
return file_get_contents($url,false, $context);
}
但这段代码有个缺点,file_get_contents实际上是把对方服务器的文件读取到了自己的服务器上然后再发送给浏览器,不但加大自己服务器的压力,而且下载反应速度还很慢,这个并不是很好的解决方法。
后来又看了遍手册,既要减轻自己服务器的压力,又能达到迷惑对方服务器。修改header里的Referfer信息就可以了。
改版后的代码如下:
$url=”img.namipan.com/downfile/da333ee178bdad6531d1ec1540cf86277c116b6300887600/02.Paid%20In%20Full.mp3″;//这里的url要过滤掉http://
$urlarr=explode(”/”,$url);
$domain=$urlarr[0];//分解出域名
$getfile=str_replace($urlarr[0],”,$url);
$content = @fsockopen(”$domain”, 80, $errno, $errstr, 12);//先连接上对方的服务器
if (!$content){//无法链接就提示错误信息
die(”对不起,无法连接上 $domain 。”);
}
fputs($content, “GET $getfile HTTP/1.0\r\n”);
fputs($content, “Host: $domain\r\n”);
fputs($content, “Referer: $domain\r\n”);//伪造referfer
fputs($content, “User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n\r\n”);
while (!feof($content)) {
$tp.=fgets($content, 128);将头部信息读取出来,里面将包含:Location:http://xxx/xxx.mp3,我们要的就是这个地址。
}
$arr=explode(”\n”,$tp);
$arr1=explode(”Location: “,$tp);
$arr2=explode(”\n”,$arr1[1]);//分解出Location:后面的地址
header('Content-Type:application/force-download');
header(”location:”.$arr2[0]);
fclose($content);
OK,目的达到了。
这个原来的地址:http://img.namipan.com/downfile/3a7c64518d46d986283eab73175a8b119305a76480b89200/Equilibrium-Turis_Fratyr-02-Wingthors_Hammer.mp3
转换后:
http://mms.music.krmcn.com/mms.music/namipan/img~~/3a7c64518d46d986283eab73175a8b119305a76480b89200/Equilibrium-Turis_Fratyr-02-Wingthors_Hammer.mp3
这个地址不能直接下载也不能在网页播放器里播放,点击下载转到了一个下载页面。要想能够直接下载这个文件或播放这个文件,那就要伪造referfer,欺骗服务器,referfer是来自纳米盘的链接。
最开始使用的方法是用PHP内置的函数stream_context_create。
代码如下:
function referfile($url, $refer=”) {
$opt=array('http'=>array('header'=>”Referer: $refer”));
$context=stream_context_create( $opt);
return file_get_contents($url,false, $context);
}
但这段代码有个缺点,file_get_contents实际上是把对方服务器的文件读取到了自己的服务器上然后再发送给浏览器,不但加大自己服务器的压力,而且下载反应速度还很慢,这个并不是很好的解决方法。
后来又看了遍手册,既要减轻自己服务器的压力,又能达到迷惑对方服务器。修改header里的Referfer信息就可以了。
改版后的代码如下:
$url=”img.namipan.com/downfile/da333ee178bdad6531d1ec1540cf86277c116b6300887600/02.Paid%20In%20Full.mp3″;//这里的url要过滤掉http://
$urlarr=explode(”/”,$url);
$domain=$urlarr[0];//分解出域名
$getfile=str_replace($urlarr[0],”,$url);
$content = @fsockopen(”$domain”, 80, $errno, $errstr, 12);//先连接上对方的服务器
if (!$content){//无法链接就提示错误信息
die(”对不起,无法连接上 $domain 。”);
}
fputs($content, “GET $getfile HTTP/1.0\r\n”);
fputs($content, “Host: $domain\r\n”);
fputs($content, “Referer: $domain\r\n”);//伪造referfer
fputs($content, “User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n\r\n”);
while (!feof($content)) {
$tp.=fgets($content, 128);将头部信息读取出来,里面将包含:Location:http://xxx/xxx.mp3,我们要的就是这个地址。
}
$arr=explode(”\n”,$tp);
$arr1=explode(”Location: “,$tp);
$arr2=explode(”\n”,$arr1[1]);//分解出Location:后面的地址
header('Content-Type:application/force-download');
header(”location:”.$arr2[0]);
fclose($content);
OK,目的达到了。
这个原来的地址:http://img.namipan.com/downfile/3a7c64518d46d986283eab73175a8b119305a76480b89200/Equilibrium-Turis_Fratyr-02-Wingthors_Hammer.mp3
转换后:
http://mms.music.krmcn.com/mms.music/namipan/img~~/3a7c64518d46d986283eab73175a8b119305a76480b89200/Equilibrium-Turis_Fratyr-02-Wingthors_Hammer.mp3
[2]PHP学习mysql课件 高级篇第1/2页
来源: 互联网 发布时间: 2013-11-30
数据库管理员的职责
服务器的启动与关闭
用户帐户维护
日志文件维护
数据库的备份与拷贝
服务器的优化
数据库管理系统的软件更新
数据目录的安全性
服务器的安全性
灾难恢复
预防性维护
``````````````````````````````````````````````````
数据库的启动与关闭
1、数据库的启动:
方法一:使用service 命令启动MySQL
# service mysqld start
// mysqld是MySQL的守护进程,通过运行它来启动MySQL服务。
方法二:使用mysqld脚本启动MySQL
# /etc/init.d/mysqld start
方法三:使用safe_mysqld实用程序启动MySQL服务,此方法可以使用相关参数
# safe_mysqld&
使用&符号将safe_mysqld放在后台运行。
```````````````````````````````````````````````````````````
校验MySQL是否被启动:
# service mysqld status
//返回如下信息,表示已经启动
mysqld (pid 1663) is running...
//1663是mysqld运行的进程号,可能根据不同系统运行的进程数量而不同
若需要重新启动MySQL可以使用如下命令之一:
# service mysqld restart
# /etc/init.d/mysqld restart
````````````````````````````````````````````````````````
2、数据库的关闭:
可以使用如下命令之一:
# service mysqld stop
# /etc/init.d/mysqld stop
# /mysqladmin shutdown
MySQL管理
修改root管理密码
方法一:
mysql>set password for ‘帐号'@‘主机' = old_password(‘密码');
update mysql.user set password = old_password(‘密码') where host = ‘主机' and user = ‘帐号';
flush privileges;
方法二:
mysqladmin password 'crq'
用户密码
对于MySQL密码可以使用PASSWORD()和ENCRYPT()函数进行加密
mysql>select PASSWORD(“alex”);
“23fc96e064be0017”
注:ENCRYPT()在Windows上不可用
方法三:使用update语句和password()函数将root口令设置为crp。
mysql> update user set password=password('crq')
-> where user='root';
//返回如下信息,表示授权表user修改成功
Query OK, 2 row affected (0.09 sec)
Rows matched:2 changed:2 warnings: 0
注意:由此种方法是直接对授权表user进行修改,而服务器只有在启动时才会加载授权表中的权限设置,因此必须要使用客户端程序mysql环境下的flush privileges命令或使用管理工具mysqladmin的flush-privileges子命令通知服务器重新加载授权表。
mysql> flush privileges; //此时即生效可以使用。
```````````````````````````````````````````````````````````````````
改变数据库存储路径
在Window下,MySQL的所有数据库都保存在“%mysqlroor%\data”目录下。
停止MySQL服务
修改%systemroor%\my.ini文件
[mysqld]
datadir=D:/data
将原目录中的所有文件和文件夹内容,全部移动到新的目录D:/data目录中。
重启MySQL服务
修改MySQL字符集
找到MySQL配置文件my.ini,一般在C:\window\my.ini。
在my.ini文件里面加上“default-character-set=gbk #”或gb2312,utf8
重启MySQL服务
删除匿名用户:
myslq> delete from user where user=' ';
//返回如下信息,表示匿名用户删除成功
Query OK, 2 row affected (0.03 sec)
添加新的用户权限:
使用grant语句用于授予用户权限,
语法:
GRANT priv_type[(column_list)][,priv_type[(column_list)]…]
ON {*.* | * | db_name.* | db_name.tabl_name | db_name}
TO user_name [IDENTIFIED BY ‘password']
[,user_name [IDENTIFIED BY ‘password']…]
[WITH GRANT OPTION]
创建新用户
制定用户名,最长允许为16个英文字符
制定允许该用户可以访问的数据库和表
制定允许该用户对数据库做什么的操作
制定允许该用户从哪些主机/IP进行远程连接
制定允许该用户对其他用户进行授权或取消授权
例如:添加一个可以从本地主机连接到MySQL服务器的超级用户crq,但是连接时必须使用口令crqpass
mysql> grant all on *.* to crq@localhost identfied by 'crqpass' with grant option;
//返回如下信息,表明权限设置成功
Query OK, 0 rows affected (0.02 sec)
例如:使用同样的方法添加一个可以从其他任何地方连接到MySQL服务器的超级用户crq,但是连接时必须使用口令crqpass
mysql> grant all on *.* to crq@'%' identified by ‘crqpass' with grant option;
服务器的启动与关闭
用户帐户维护
日志文件维护
数据库的备份与拷贝
服务器的优化
数据库管理系统的软件更新
数据目录的安全性
服务器的安全性
灾难恢复
预防性维护
``````````````````````````````````````````````````
数据库的启动与关闭
1、数据库的启动:
方法一:使用service 命令启动MySQL
# service mysqld start
// mysqld是MySQL的守护进程,通过运行它来启动MySQL服务。
方法二:使用mysqld脚本启动MySQL
# /etc/init.d/mysqld start
方法三:使用safe_mysqld实用程序启动MySQL服务,此方法可以使用相关参数
# safe_mysqld&
使用&符号将safe_mysqld放在后台运行。
```````````````````````````````````````````````````````````
校验MySQL是否被启动:
# service mysqld status
//返回如下信息,表示已经启动
mysqld (pid 1663) is running...
//1663是mysqld运行的进程号,可能根据不同系统运行的进程数量而不同
若需要重新启动MySQL可以使用如下命令之一:
# service mysqld restart
# /etc/init.d/mysqld restart
````````````````````````````````````````````````````````
2、数据库的关闭:
可以使用如下命令之一:
# service mysqld stop
# /etc/init.d/mysqld stop
# /mysqladmin shutdown
MySQL管理
修改root管理密码
方法一:
mysql>set password for ‘帐号'@‘主机' = old_password(‘密码');
update mysql.user set password = old_password(‘密码') where host = ‘主机' and user = ‘帐号';
flush privileges;
方法二:
mysqladmin password 'crq'
用户密码
对于MySQL密码可以使用PASSWORD()和ENCRYPT()函数进行加密
mysql>select PASSWORD(“alex”);
“23fc96e064be0017”
注:ENCRYPT()在Windows上不可用
方法三:使用update语句和password()函数将root口令设置为crp。
mysql> update user set password=password('crq')
-> where user='root';
//返回如下信息,表示授权表user修改成功
Query OK, 2 row affected (0.09 sec)
Rows matched:2 changed:2 warnings: 0
注意:由此种方法是直接对授权表user进行修改,而服务器只有在启动时才会加载授权表中的权限设置,因此必须要使用客户端程序mysql环境下的flush privileges命令或使用管理工具mysqladmin的flush-privileges子命令通知服务器重新加载授权表。
mysql> flush privileges; //此时即生效可以使用。
```````````````````````````````````````````````````````````````````
改变数据库存储路径
在Window下,MySQL的所有数据库都保存在“%mysqlroor%\data”目录下。
停止MySQL服务
修改%systemroor%\my.ini文件
[mysqld]
datadir=D:/data
将原目录中的所有文件和文件夹内容,全部移动到新的目录D:/data目录中。
重启MySQL服务
修改MySQL字符集
找到MySQL配置文件my.ini,一般在C:\window\my.ini。
在my.ini文件里面加上“default-character-set=gbk #”或gb2312,utf8
重启MySQL服务
删除匿名用户:
myslq> delete from user where user=' ';
//返回如下信息,表示匿名用户删除成功
Query OK, 2 row affected (0.03 sec)
添加新的用户权限:
使用grant语句用于授予用户权限,
语法:
GRANT priv_type[(column_list)][,priv_type[(column_list)]…]
ON {*.* | * | db_name.* | db_name.tabl_name | db_name}
TO user_name [IDENTIFIED BY ‘password']
[,user_name [IDENTIFIED BY ‘password']…]
[WITH GRANT OPTION]
创建新用户
制定用户名,最长允许为16个英文字符
制定允许该用户可以访问的数据库和表
制定允许该用户对数据库做什么的操作
制定允许该用户从哪些主机/IP进行远程连接
制定允许该用户对其他用户进行授权或取消授权
例如:添加一个可以从本地主机连接到MySQL服务器的超级用户crq,但是连接时必须使用口令crqpass
mysql> grant all on *.* to crq@localhost identfied by 'crqpass' with grant option;
//返回如下信息,表明权限设置成功
Query OK, 0 rows affected (0.02 sec)
例如:使用同样的方法添加一个可以从其他任何地方连接到MySQL服务器的超级用户crq,但是连接时必须使用口令crqpass
mysql> grant all on *.* to crq@'%' identified by ‘crqpass' with grant option;
[3]PHP学习文件处理与文件上传 课件第1/2页
来源: 互联网 发布时间: 2013-11-30
PHP对文件的处理
PHP 在服务器端文件的应用上,相关的范畴不仅仅在于用户与服务器资料库间的各种连接存取操作,也可以通过 PHP 内建的文件处理函数,来进行一般文件处理操作。
basename -- 返回路径中的文件名部分
语法格式:$path = "/home/httpd/html/index.php";
$file = basename($path); // $file is set to "index.php"
$file = basename($path,".php"); // $file is set to "index"
pathinfo():分析文件当前路径
语法格式:$path_parts = pathinfo("/www/htdocs/index.html");
echo $path_parts["dirname"] . "\n"; /www/htdocs 文件路径
echo $path_parts["basename"] . "\n"; index.html 文件与扩展名
echo $path_parts["extension"] . "\n"; html 文件格式
文件类型与相关信息
filesize():计算文件的大小(byte)
语法格式:$bytes=filesize(“a.txt”);
echo $bytes round($bytes/1024,2);
fileatime():文件最后一次访问时间(时间戳)
语法格式:echo date(“Y-m-d g:i:sa”,fileatime);
filectime():文件建立时间
语法格式:echo date(“Y-m-d g:i:sa”,filectime);
filemtime():文件最后一次更新时间
语法格式:echo date(“Y-m-d g:i:sa”,filemtime);
fileperms():文件属性以及权限10进制
语法格式:echo substr(base_convert(fileperms(a.txt),10,8),3);
fileowner():文件所有者的uid(仅在Linux系统下有用)
语法格式:echo fileowner(“a.txt”);
文件的操作
'r' 只读方式打开,将文件指针指向文件头。
'r+' 读写方式打开,将文件指针指向文件头。
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
'x+' 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
fopen() -- 打开文件或者 URL
fclose() -- 关闭一个已打开的文件指针
fread() -- 读取文件内容
fwrite()--写入文件
语法格式:if(!$f=@fopen("file03.php","x")){//打开一个文件 x方法写入
die("文件读取失败"); //读取失败
}
fwrite($f,"kkkkkkkkkk"); //向那个文件写 写什么
echo fread($f,10); //读取这个文件的内容
fclose($f); 关闭打开文件
file() -- 把整个文件读入一个数组中
语法格式:$arr=file("file03.php");
print_r($arr); //读取文件返回数组
readfile() --读入一个文件并写入到输出缓冲。
语法格式:$str=readfile("file03.php");
echo $str; 输出
一个文件记数器的写法:
$f=fopen("file03.php","r");
$i=fread($f,1000);
echo "这是您第{$i}次访问";
fclose($f);
$f=fopen("file03.php","w");
$i++;
fwrite($f,$i);
fclose($f);
````````````````````````````````````````
file_get_contents() – 将整个文件读入一个字符串
语法格式:file_get_contents(文件名称或URL)
file_put_contents() –?将一个字符串写入文件,和依次调用 fopen(),fwrite() 以及 fclose() 功能一样
file_put_contents(文件名称,写入数据)
feof() -- 测试文件指针是否到了文件结束的位置
ftell() -- 返回文件指针读/写的位置
语法格式ftell(文件指针)
flock() -- 轻便的咨询文件锁定
语法格式:flock(文件指针,控制参数)
文件指针:是一个已经打开(fopen)的文件指针控制参数:
“LOCK_SH”表示要取得共享锁定(读取程序),(PHP4.0.1以前版本设置1)。
“LOCK_EX”表示要取得独占锁定(写入程序),(PHP4.0.1以前版本中设置为 2)。
“LOCK_UN”表示要释放锁定(无论共享或独占),(PHP4.0.1以前版本中设置为 3)。
“LOCK_NB”表示如果你不希望 flock() 在锁定时堵塞,则给控制参数再加上这个参数
fseek( ) -- 在文件指针中定位
语法结构: fseek(文件指针,移动字元数 [,起始位置常数])
文件指针:不能用于在 fopen() 中以 “http://” 或 “ftp://” 格式打开所返回的文件指针。
移动字元数:为正数时,将文件指针向前移动指定个数:为负数时,将文件指针向后移动指定个数:
起始位置常数:
SEEK_CUR - 设定位置为当前位置。
SEEK_SET - 设定位置等于文件开头。(默认值)
SEEK_END - 设定位置为文件尾。
rewind( ) -- 倒回文件指针的位置,也就是将文件指针移向文件的开头位置。
语法结构: rewind(文件指针)
注意:如果将文件以附加(“a” 或者 “a+”)模式打开,写入文件的任何数据总是会被附加在后面,不管文件指针的位置
chgrp( ) -- 改变文件所属的组
语法结构:chgrp(文件名称,群组名称)
filegroup( ) -- 取得文件的组
语法结构:filegroup(文件名称)
chmod( ) -- 改变文件模式
语法结构:chmod(文件名称,权限常数)755 666
chown( ) -- 改变文件的所有者
语法结构:chown(文件名称,使用者)
fileowner( ) -- 取得文件的所有者
语法结构:fileowner(文件名称)
posix_getpwuid() 来将其解析为用户名。
copy( ) -- 拷贝文件
语法结构:copy(来源文件,目的文件)
返回类型:bool型,如果成功则返回 TRUE,失败则返回 FALSE。
参数说明:将来源文件拷贝到目的文件。
unlink( ) -- 删除文件
语法结构:unlink(目标文件)
返回类型:bool型,如果成功则返回 TRUE,失败则返回 FALSE。
参数说明:删除指定的目标文件
rename( ) -- 重命名一个文件或目录
语法结构:rename(旧文件名,新文件名)
返回类型:bool型,如果成功则返回 TRUE,失败则返回 FALSE。
参数说明:尝试把旧文件名重命名为新文件名。
文件属性处理
file_exists( ) -- 检查文件或目录是否存在
语法结构:file_exists(文件名称)
返回类型:bool型,若存在返回 true,否则返回 false。
filesize( ) -- 取得文件大小
语法结构:filesize(文件名称)
返回类型:返回文件大小字节数,若出错返回 false.
filetype( ) -- 取得文件类型
语法结构:filetype(文件名称)
返回类型:返回文件类型。可能的值有 fifo,char,dir,block,link,file 和 unknown。 出错则返回 false
is_dir( ) -- 判断给定文件名是否是一个目录
语法结构:is_dir(名称)
返回类型:如果文件名存在并且是一个目录则返回 true,否则返回 false。
is_executable( ) -- 判断给定文件名是否可执行
语法结构:is_executable(名称)
返回类型:如果文件存在且可执行则返回 TRUE,否则返回 FALSE。
is_file( ) -- 判断给定文件名是否为一个正常的文件
语法结构:is_file(名称)
返回类型:如果文件存在且为正常的文件则返回 TRUE。
is_link( ) -- 判断给定文件名是否为一个符号连接
语法结构:is_link(名称)
返回类型:如果文件存在并且是一个符号连接则返回 true。
is_readable( ) -- 判断给定文件名是否可读
语法结构:is_readable(文件名称)
返回类型:如果文件存在并且可读则返回 TRUE。
is_writable( ) -- 判断给定的文件名是否可写
语法结构:is_writable(文件名称)
返回类型:如果文件存在并且可写则返回 TRUE。
实现iterator接口的目录读取
Iterator接口的标准方法
current():返回当前列表(list)中的元素值。
next():用于在一个列表中向下移动一个位置。
valid():检测在当前列表中是否还有下一个元素,如果有,返回true,否则返回false。
rewind():可以访问指定特征的元素列表,在开始操作iterator时,会将指针设置在顶部。
PHP 在服务器端文件的应用上,相关的范畴不仅仅在于用户与服务器资料库间的各种连接存取操作,也可以通过 PHP 内建的文件处理函数,来进行一般文件处理操作。
basename -- 返回路径中的文件名部分
语法格式:$path = "/home/httpd/html/index.php";
$file = basename($path); // $file is set to "index.php"
$file = basename($path,".php"); // $file is set to "index"
pathinfo():分析文件当前路径
语法格式:$path_parts = pathinfo("/www/htdocs/index.html");
echo $path_parts["dirname"] . "\n"; /www/htdocs 文件路径
echo $path_parts["basename"] . "\n"; index.html 文件与扩展名
echo $path_parts["extension"] . "\n"; html 文件格式
文件类型与相关信息
filesize():计算文件的大小(byte)
语法格式:$bytes=filesize(“a.txt”);
echo $bytes round($bytes/1024,2);
fileatime():文件最后一次访问时间(时间戳)
语法格式:echo date(“Y-m-d g:i:sa”,fileatime);
filectime():文件建立时间
语法格式:echo date(“Y-m-d g:i:sa”,filectime);
filemtime():文件最后一次更新时间
语法格式:echo date(“Y-m-d g:i:sa”,filemtime);
fileperms():文件属性以及权限10进制
语法格式:echo substr(base_convert(fileperms(a.txt),10,8),3);
fileowner():文件所有者的uid(仅在Linux系统下有用)
语法格式:echo fileowner(“a.txt”);
文件的操作
'r' 只读方式打开,将文件指针指向文件头。
'r+' 读写方式打开,将文件指针指向文件头。
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
'x+' 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
fopen() -- 打开文件或者 URL
fclose() -- 关闭一个已打开的文件指针
fread() -- 读取文件内容
fwrite()--写入文件
语法格式:if(!$f=@fopen("file03.php","x")){//打开一个文件 x方法写入
die("文件读取失败"); //读取失败
}
fwrite($f,"kkkkkkkkkk"); //向那个文件写 写什么
echo fread($f,10); //读取这个文件的内容
fclose($f); 关闭打开文件
file() -- 把整个文件读入一个数组中
语法格式:$arr=file("file03.php");
print_r($arr); //读取文件返回数组
readfile() --读入一个文件并写入到输出缓冲。
语法格式:$str=readfile("file03.php");
echo $str; 输出
一个文件记数器的写法:
$f=fopen("file03.php","r");
$i=fread($f,1000);
echo "这是您第{$i}次访问";
fclose($f);
$f=fopen("file03.php","w");
$i++;
fwrite($f,$i);
fclose($f);
````````````````````````````````````````
file_get_contents() – 将整个文件读入一个字符串
语法格式:file_get_contents(文件名称或URL)
file_put_contents() –?将一个字符串写入文件,和依次调用 fopen(),fwrite() 以及 fclose() 功能一样
file_put_contents(文件名称,写入数据)
feof() -- 测试文件指针是否到了文件结束的位置
ftell() -- 返回文件指针读/写的位置
语法格式ftell(文件指针)
flock() -- 轻便的咨询文件锁定
语法格式:flock(文件指针,控制参数)
文件指针:是一个已经打开(fopen)的文件指针控制参数:
“LOCK_SH”表示要取得共享锁定(读取程序),(PHP4.0.1以前版本设置1)。
“LOCK_EX”表示要取得独占锁定(写入程序),(PHP4.0.1以前版本中设置为 2)。
“LOCK_UN”表示要释放锁定(无论共享或独占),(PHP4.0.1以前版本中设置为 3)。
“LOCK_NB”表示如果你不希望 flock() 在锁定时堵塞,则给控制参数再加上这个参数
fseek( ) -- 在文件指针中定位
语法结构: fseek(文件指针,移动字元数 [,起始位置常数])
文件指针:不能用于在 fopen() 中以 “http://” 或 “ftp://” 格式打开所返回的文件指针。
移动字元数:为正数时,将文件指针向前移动指定个数:为负数时,将文件指针向后移动指定个数:
起始位置常数:
SEEK_CUR - 设定位置为当前位置。
SEEK_SET - 设定位置等于文件开头。(默认值)
SEEK_END - 设定位置为文件尾。
rewind( ) -- 倒回文件指针的位置,也就是将文件指针移向文件的开头位置。
语法结构: rewind(文件指针)
注意:如果将文件以附加(“a” 或者 “a+”)模式打开,写入文件的任何数据总是会被附加在后面,不管文件指针的位置
chgrp( ) -- 改变文件所属的组
语法结构:chgrp(文件名称,群组名称)
filegroup( ) -- 取得文件的组
语法结构:filegroup(文件名称)
chmod( ) -- 改变文件模式
语法结构:chmod(文件名称,权限常数)755 666
chown( ) -- 改变文件的所有者
语法结构:chown(文件名称,使用者)
fileowner( ) -- 取得文件的所有者
语法结构:fileowner(文件名称)
posix_getpwuid() 来将其解析为用户名。
copy( ) -- 拷贝文件
语法结构:copy(来源文件,目的文件)
返回类型:bool型,如果成功则返回 TRUE,失败则返回 FALSE。
参数说明:将来源文件拷贝到目的文件。
unlink( ) -- 删除文件
语法结构:unlink(目标文件)
返回类型:bool型,如果成功则返回 TRUE,失败则返回 FALSE。
参数说明:删除指定的目标文件
rename( ) -- 重命名一个文件或目录
语法结构:rename(旧文件名,新文件名)
返回类型:bool型,如果成功则返回 TRUE,失败则返回 FALSE。
参数说明:尝试把旧文件名重命名为新文件名。
文件属性处理
file_exists( ) -- 检查文件或目录是否存在
语法结构:file_exists(文件名称)
返回类型:bool型,若存在返回 true,否则返回 false。
filesize( ) -- 取得文件大小
语法结构:filesize(文件名称)
返回类型:返回文件大小字节数,若出错返回 false.
filetype( ) -- 取得文件类型
语法结构:filetype(文件名称)
返回类型:返回文件类型。可能的值有 fifo,char,dir,block,link,file 和 unknown。 出错则返回 false
is_dir( ) -- 判断给定文件名是否是一个目录
语法结构:is_dir(名称)
返回类型:如果文件名存在并且是一个目录则返回 true,否则返回 false。
is_executable( ) -- 判断给定文件名是否可执行
语法结构:is_executable(名称)
返回类型:如果文件存在且可执行则返回 TRUE,否则返回 FALSE。
is_file( ) -- 判断给定文件名是否为一个正常的文件
语法结构:is_file(名称)
返回类型:如果文件存在且为正常的文件则返回 TRUE。
is_link( ) -- 判断给定文件名是否为一个符号连接
语法结构:is_link(名称)
返回类型:如果文件存在并且是一个符号连接则返回 true。
is_readable( ) -- 判断给定文件名是否可读
语法结构:is_readable(文件名称)
返回类型:如果文件存在并且可读则返回 TRUE。
is_writable( ) -- 判断给定的文件名是否可写
语法结构:is_writable(文件名称)
返回类型:如果文件存在并且可写则返回 TRUE。
实现iterator接口的目录读取
Iterator接口的标准方法
current():返回当前列表(list)中的元素值。
next():用于在一个列表中向下移动一个位置。
valid():检测在当前列表中是否还有下一个元素,如果有,返回true,否则返回false。
rewind():可以访问指定特征的元素列表,在开始操作iterator时,会将指针设置在顶部。
最新技术文章: