文件系统--php基础最详细教程

来源:互联网 发布:网络安全教育文章 编辑:程序博客网 时间:2024/06/16 09:48

文件系统处理 原创



文件处理的作用


1.所有的项目离不开文件处理
2.可以用文件长时间保存数据
3.建立缓存,服务器中文件操作


文件处理的说明


所有文件处理都是使用系统函数完成的,是基于Linux/Unix系统为模型。


文件处理


1.文件类型


说明:1.以Linux为模型,在Windows只能获取file,dir或unknow 三种类型。
                     2.在Linux/Unix下,block,char,dir,fifo,file,link,unknow 七种类型。


block:块设备文件,磁盘分区,软驱,光驱(cdrom)等。
char : 字符设备,I/O 以字符为单位 键盘、打印机等。
dir  : 目录也是文件的一种
fifo : 管道
file  : 文件
link : 链接文件 类似于windows中的快捷方式
unknow : 未知类型


判断文件类型的函数:
 filetype() 获取文件类型, filetype("demo.txt");
判断文件类型返回bool型值 8个
is_dir()  是否是目录
is_file() 是否是文件
is_link()  是否是链接文件
is_readable() 是否是可读文件
is_writable --is_writeable 是否是可写文件
is_excutable 是否是可执行文件
is_uploaded_file 是否是通过HTTP POST上传的文件




实例:
(说明:1.以Linux为模型,在Windows只能获取file,dir或unknow 三种类型。
                     2.在Linux/Unix下,block,char,dir,fifo,file,link,unknow 七种类型。, block:块设备文件,磁盘分区,软驱,光驱(cdrom)等。
char : 字符设备,I/O 以字符为单位 键盘、打印机等。
dir  : 目录也是文件的一种
fifo : 管道
file  : 文件
link : 链接文件 类似于windows中的快捷方式
unknow : 未知类型, 判断文件类型的函数:
 filetype() 获取文件类型, filetype("demo.txt");
判断文件类型返回bool型值 8个
is_dir()  是否是目录
is_file() 是否是文件
is_link()  是否是链接文件
is_readable() 是否是可读文件
is_writable --is_writeable 是否是可写文件
is_excutable 是否是可执行文件
is_uploaded_file 是否是通过HTTP POST上传的文件
)


1.判断文件属性类型函数实例:


function getFilePro($fileName){


if(!file_exists($fileName)){
echo '文件或者目录不存在<br>';
return;
}else{
echo $fileName.'是'.filetype($fileName).'<br>';
}


if(is_file($fileName)){
echo '这是一个文件<br>';
echo '文件的大小为'.filesize($fileName).'<br>';
}


if(is_dir($fileName)){
echo '这是一个目录<br>';
}


if(is_readable($fileName)){
echo '这个文件是可读的<br>';
}


if(is_writeable($fileName)){
echo '这个文件是可写的<br>';
}


if(is_executable($fileName)){
echo '这个文件是可执行的<br>';
}


echo '文件的创建时间是:'.filectime($fileName).'<br>';
echo '文件的修改时间是:'.filemtime($fileName).'<br>';
echo '文件的最后访问时间是:'.fileatime($fileName).'<br>';
}


2.格式化文件大小函数
function formatSize($size){
$dw = "Byte";


if($size >= pow(2,40)){
$size = round(($size/pow(2,40)),2);
$dw = "TB";
}elseif($size >= pow(2,30)){
$size = round(($size/pow(2.30)),2);
$dw = "GB";
}elseif($size >= pow(2,20)){
$size = round(($size/pow(2,20)),2);
$dw = "MB";
}elseif($size >= pow(2,10)){
$size = round(($size/pow(2,10)),2);
$dw = "KB";
}else{
$dw = "Byte";
}


return $size.$dw;
}


3.文件缓存实例
 $cachefile = "cache.txt";
 $cache = 5;


 if(file_exists($cachefile) && time() - filemtime($cachefile) < $cache){
  echo file_get_contents($cachefile);
 }else{
  file_put_contents($cachefile,date('Y-m-d H:i:s',time()));
 }


2.文件的属性


文件属性的函数 :
file_exists()  文件是否存在
filesize()  文件大小
is_readable() 文件是否可读
is_writable() 文件是否可写
filectime() 文件创建时间
filemtime() 文件修改时间
fileactime() 文件最后访问时间
stat()  一个数组包含所有文件属性(关联数组与索引数组)


3.和文件路径相关函数


1.相对路径:相对当前目录上级或下级目录
. 当前
.. 上级目录
./php/apache/index.php
php/apache/index.php
../images/tp/logo.gif




2.绝对路径
/ 根路径
/images/index.php 指的是操作系统的根还是网站根目录的根?
答:分情况 
 如果在服务器中执行(通过PHP文件处理函数执行)根指的就是操作系统的根;
 如果程序下载到客户端,在访问服务器的文件时,只有通过Apache访问,那么根
 就是指的文档根目录(HTML代码使用的根)


路径分隔符 
linux/unix "/"
widows "\" 这个在双引号中是转义符号
DIRECTORY_SEPARATOR  : 为了跨平台在windows linux中自动切换分隔符。(太麻烦,已废弃)
注意:不管是什么操作系统PHP的目录分隔符号都支持“/”
          在PHP和Apache配置文件中如果需要指定目录,也可以使用“/”作为目录符号,
          php.ini 文件也用可以用“/”指定路径


获取文件路径和文件名相关函数
basename() 获取文件名称函数
dirname()   获取目录函数
pathinfo()  返回一个数组包含文件名 目录名 文件扩展名的数组。
dirname(dirname("$url")) 获取目录的上一次目录,使用嵌套形式即可






实例:
(2.绝对路径
/ 根路径
/images/index.php 指的是操作系统的根还是网站根目录的根?
答:分情况 
 如果在服务器中执行(通过PHP文件处理函数执行)根指的就是操作系统的根;
 如果程序下载到客户端,在访问服务器的文件时,只有通过Apache访问,那么根
 就是指的文档根目录(HTML代码使用的根), 路径分隔符 
linux/unix "/"
widows "\" 这个在双引号中是转义符号
DIRECTORY_SEPARATOR  : 为了跨平台在windows linux中自动切换分隔符。(太麻烦,已废弃)
注意:不管是什么操作系统PHP的目录分隔符号都支持“/”
          在PHP和Apache配置文件中如果需要指定目录,也可以使用“/”作为目录符号,
          php.ini 文件也用可以用“/”指定路径, 获取文件路径和文件名相关函数
basename() 获取文件名称函数
dirname()   获取目录函数
pathinfo()  返回一个数组包含文件名 目录名 文件扩展名的数组。
dirname(dirname("$url")) 获取目录的上一次目录,使用嵌套形式即可


)


获取文件名称和所在目录
$url1 = "./aaa/bbb/index.php";
$url2 = "../www/yyy/login.html";
$url3 = "c:/appserv/www/demo.php";
$url4 = "http://localhost/yyy/logo.gif";


echo basename("$url1").'<br>';
echo basename("$url2").'<br>';
echo basename("$url3").'<br>';
echo basename("$url4").'<br>';


// index.php
// login.html
// demo.php
// logo.gif


echo dirname("$url1").'<br>';
echo dirname("$url2").'<br>';
echo dirname("$url3").'<br>';
echo dirname("$url4").'<br>';


// ./aaa/bbb
// ../www/yyy
// c:/appserv/www
// http://localhost/yyy


echo "<pre>";
print_r(pathinfo("$url1"));
echo "</pre>";


// Array
// (
//     [dirname] => ./aaa/bbb
//     [basename] => index.php
//     [extension] => php
//     [filename] => index
// )


4.文件操作的相关函数(文件创建、删除、移动、等)


1.创建文件  touch("带路径的文件名/文件名")
2.删除文件 unlink("带路径的文件名/文件名")
3.移动/重命名文件 rename("当前带路径的文件名/文件名","目标带路径的文件名/文件名")
4.复制文件 copy("当前带路径的文件名/文件名","目标带路径的文件名/文件名")


//创建文件
touch("panyangli.txt");
touch("d:/lili.txt");


//删除文件
// unlink("panyangli.txt");
// unlink("d:/lili.txt");


//移动重命名文件
rename("panyangli.txt","panxiaoliang.txt");
rename("d:/lili.txt","d:/wamp/www/85/file/lili.txt");


//复制文件
copy("panxiaoliang.txt","vilin.txt");
copy("./lili.txt","d:/opop.txt");


和权限设置有关的函数
chgrp 改变文件所属的组
chown 改变文件所有者
chmod 改变文件的权限
filegroup 取得文件的组
fileowner 取的文件所有者


bool chgrp ( string $filename , mixed $group )
bool chmod ( string $filename , int $mode )
bool chown ( string $filename , mixed $user )
int filegroup ( string $filename )  //返回所属组ID
int fileowner ( string $filename ) //返回所有者ID


5.文件的打开与关闭
(读文件中的内容,向文件中写内容)


1.读取文件中的内容


全部读取:
file_get_contents(); //php5以上
file(); 读取所有行到数组中,每行是一个单元。
readfile(); 读取全部内容并直接输出,不用使用echo,


不足:全部读取,不能读取部分也不能读取指定区域


可以读取指定区域:
fopen();  打开文件
fread();  读取指定长度字符
fgets(); 读取单行
fgetc(); 读取单个字符


参见: 补充说明: (补充)


resource fopen ( string $filename , string $mode )
r 以只读模式打开 打开不会清空内容
r+ 以可读和可写两种方式打开,不可追加写入
w 以只写的方式打开,如果文件不存在,则创建这个文件,并写入内容,如果文件存
在 将会清空文件内容,在写入。
w+ 以可读和可写两种方式打开资源。写入会清空之前的内容
a 以只写的方式打开,如果文件不存在,则创建文件,并写入内容,如果文件存在,
将会在原来内容的后面写入新的内容。
a+ 以可读和可写两种方式打开资源,打开不会清空内容,追加写入。
b 以二进制模式打开文件(图片,电影)windows中要加b
t  以文本模式打开文件 


2.写入文件


全部覆盖写入:
file_put_contents("文件名称","写入的内容")  //php5以上 返回值 返回写入的字符数量
特点:如果文件不存在,则创建并写入内容,
       如果文件存在,则删除文件中的内容,重新写入。
不足:不能以追加的方式写入,也不能加锁


可以指定写入区域:
fopen() 打开文件
fwrite() 别名 fputs


写入:
$file = fopen("test.txt","a"); //打开文件资源
    fwrite($file,"www.baidu.com"); //写入内容
fclose($file); //关闭资源


本地文件:
./test.txt
c:/appserv/www/index.html
远程文件:
http://www.163.com
ftp://user@pass:www.baidu.com/index.php


补充说明:


参见: 可以读取指定区域:
fopen();  打开文件
fread();  读取指定长度字符
fgets(); 读取单行
fgetc(); 读取单个字符 (补充)


可以读取指定区域:
fopen();  打开文件
fread();  读取指定长度字符 fread($file,10);
fgets(); 读取单行
fgetc(); 读取单个字符


实例:远程文件读取方法:
<?php
header("content-type:text/html;charset=utf-8");
date_default_timezone_set("PRC");


// ini_set('display_errors',1);
// error_reporting(E_ALL&~E_NOTICE);


$file = fopen("http://www.lampbrother.net",'r');
 $str = '';
 $i = 0 ;
//feof() 如果读取文件出问题或者到文件结尾则返回真
 while(!feof($file)){
  //$str .= fread($file,1024);//读取指定长度字符
 
  // $str .= fgets($file); //每次获取一行


  $str .= fgetc($file); //每次获取一个字节
  $i++; //计算行数 //计算字节数
 }
echo $str;
//关闭资源
fclose($file);


实例:
(1.读取文件中的内容, 2.写入文件, 本地文件:
./test.txt
c:/appserv/www/index.html
远程文件:
http://www.163.com
ftp://user@pass:www.baidu.com/index.php, 补充说明:)


//获取网页内容,在匹配图片内容
<?php
header("charset='utf-8'");
date_default_timezone_set("PRC");


ini_set('display_errors',1);
error_reporting(E_ALL&~E_NOTICE);


//获取网页内容,在匹配图片内容
$str = file_get_contents("http://www.lampbrother.net");


//<img src="http://www.lampbrother.net/php/statics/images/lamp/logo.png" alt="LAMP兄弟连">
preg_match_all('/<img\s+src=.*?\/?\>/i',$str,$images);


// echo "<pre>";
// print_r($images);
// echo "</pre>";
$strs = '';
foreach($images[0] as $image){

$strs .= $image.'<br>';



}
// 把图片标签内容写入到文件
file_put_contents("abc.txt",$strs);


<?php


if(!empty($_GET['act'])){

$post = $_POST;
setPeiZhi($post);
  }

function setPeiZhi($post){
//读取配置文件
$str = file_get_contents("config.php");


$zz = array();
$pp = array();


foreach($post as $key => $value){
// const DBHOST = 'localhost';
$zz[] = "/const\s+{$key}\s+\=\s+.*?\;/i";
$pp[] = "const {$key} = '{$value}';";
}


echo "<pre>";
print_r($pp);
//替换配置文件
$strs = preg_replace($zz,$pp,$str);


//写入配置文件
file_put_contents("config.php",$strs);


}
?>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>系统配置信息</title>
</head>
<body>
<!-- const DBHOST = 'localhost';
const DBUSER = 'root';
const DBPWD = '';
const DBNAME = 'bbs85';
const DBCHARSET = 'utf8';
const FILES = '/lamp/'; -->
<?php
if(empty($_GET['act'])){
?>
<form action="file.php?act=post" method="post">
<table align="center" width="500" border="1" cellspacing="0">
<caption><h3>网站配置信息</h3></caption>
<tr><th>主机名称:</th><td><input type="text" name="DBHOST"></td></tr>
<tr><th>用户名:</th><td><input type="text" name="DBUSER"></td></tr>
<tr><th>密码:</th><td><input type="text" name="DBPWD"></td></tr>
<tr><th>数据库名:</th><td><input type="text" name="DBNAME"></td></tr>
<tr><th>字符集类型:</th><td><input type="text" name="DBCHARSET"></td></tr>
<tr><th>绝对路径:</th><td><input type="text" name="FILES"></td></tr>
<tr><td colspan="2"><input type="submit" value="修改"></td></tr>
</table>
</form>
<?php
}
?>
</body>
</html>


<?php
//设置PHP编码字符集
header('content-type:text/html;charset=utf-8');


//开启session_start();
session_start();


//关闭NOTICE信息
ini_set('display_errors',1);
error_reporting(E_ALL&~E_NOTICE);


//设置中国时区
date_default_timezone_set('PRC');






//定义数据库相关常量,const声明可以被PHP5.4.0以后版本支持
const DBHOST = 'www.youku.com';
const DBUSER = 'youku';
const DBPWD = '123456';
const DBNAME = 'bbs99';
const DBCHARSET = 'utf-8';
const FILES = '/lamp/';


//连接数据库 (使用常量做参数不需要加引号)。 
$link = mysql_connect(DBHOST,DBUSER,DBPWD);


//如果只连接了一个数据,那么选择数据的第二个参数可以省略。
mysql_select_db(DBNAME,$link);


//设置数据字符集
mysql_set_charset(DBCHARSET);


function selectOne($table,$where='',$filed='*',$order=''){
$sql="SELECT $filed FROM $table $where $order LIMIT 1";
return mysql_fetch_assoc(mysql_query($sql));
}
function selectAll($table,$where='',$filed='*',$order='',$limit=''){
$sql="SELECT $filed FROM $table $where $order $limit";
$res=mysql_query($sql);
$data=array();
while($row=mysql_fetch_assoc($res)){
$data[]=$row;
}
return $data;
}


function update($table,$data,$where=''){
$sql="UPDATE $table SET $data $where";
return mysql_query($sql);
}


function insert($table,$values,$data){
$sql="INSERT INTO $table ($values)VALUES($data)";
mysql_query($sql);
return mysql_insert_id();

}
function countAll($table,$where='',$order='',$limit=''){
$sql="SELECT COUNT(*) AS total FROM $table  $where $order $limit";
$res=mysql_fetch_assoc(mysql_query($sql));
return $res['total'];
}
function delete($table,$where){
$sql="DELETE FROM $table $where";
return mysql_query($sql);
}




function formatTime($date){
$now = time();
$duan = $now - $date;

if($duan < 60){


echo '前'.$duan.'秒';


    }elseif($duan < 3600){


echo '前'.round($duan/60).'分钟';



}elseif($duan < 86400){
echo '前'.round($duan/3600).'小时';
}elseif($duan <= 172800){


echo '昨天'.date('H:i',$date);


}elseif($duan > 172800){


echo date('m-d',$date);


}
}  


//获得等级函数
function getlevel($level){
switch($level){
case 1:
return '管理员';
break;
case 2:
return '版主';
break;
case 3:
return '教官';
break;
default:
return '学员';
break;
}


}


//获得级别函数
function getJiBie($money){


if($money < 20){
 $shengyu = 20 - $money;
   }else{
     $shengyu = 20 - $money%20;
   }


$dengji = floor($money/20) <= 0 ? 1 : floor($money/20);


$dj = array('sm'=>'','dj'=>'');


$dj['sm'] = '当前'.$dengji.'级,还要'.$shengyu.'分升级'; 
$dj['dj']=$dengji;
return $dj;




}


//获得等级图标函数


function getTuBiao($dengji){
if($dengji < 4){

for($xx = 0;$xx < $dengji;$xx++){
echo  '<img src="./static/images/xx.gif">';
}

}elseif($dengji < 16){
$yl = floor($dengji/4);
$xx = $dengji%4;


for ($i = 0; $i < $yl; $i++) { 
echo '<img src="./static/images/yl.gif">';
}


for($j = 0; $j < $xx; $j++){
echo '<img src="./static/images/xx.gif">';
}




}elseif($dengji < 63){
$ty = floor($dengji/16);
$yl = floor(($dengji%16)/4);
$xx = ($dengji%16)%4;


for($i = 0; $i < $ty; $i++){
echo '<img src="./static/images/ty.gif">';
}


for($j = 0; $j < $yl; $j++){
echo '<img src="./static/images/yl.gif">';
}


for($n = 0;$n < $xx; $n++){
echo '<img src="./static/images/xx.gif">';
}
}else{
echo '<img src="./static/images/ty.gif">
<img src="./static/images/ty.gif">
<img src="./static/images/ty.gif">
<img src="./static/images/ty.gif">';
}


}


//发帖加积分函数 发帖5分 回复2分


function getMoney($uid,$jifen){
UPDATE('bbs_user',"money=money+$jifen","where id='$uid'");
}


//把导出的数据库数据语句精简出来
$lines = file("bbs85.sql");


foreach($lines as $line){
$line = trim($line);


// echo $line.'<br>';
if($line && $line{0}.$line{1} != "--" && $line{0}.$line{1} != "/*"){
$strs .= $line;
}
}




$strs = trim($strs,";");


$str = explode(";",$strs);


echo '<pre>';
print_r($str);
echo '</pre>';


-- phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2014 年 07 月 03 日 07:09
-- 服务器版本: 5.5.24-log
-- PHP 版本: 5.4.3


SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";




/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;


--
-- 数据库: `bbs85`
--


-- --------------------------------------------------------


--
-- 表的结构 `bbs_bclass`
--


CREATE TABLE IF NOT EXISTS `bbs_bclass` (
  `bid` int(11) NOT NULL AUTO_INCREMENT,
  `bname` varchar(50) NOT NULL DEFAULT '',
  `content` varchar(500) NOT NULL DEFAULT '',
  `orderno` int(11) NOT NULL,
  `logo` varchar(80) NOT NULL DEFAULT 'bclass.jpg',
  `bbanzhu` varchar(50) NOT NULL DEFAULT '',
  `fid` int(11) DEFAULT NULL,
  UNIQUE KEY `bid` (`bid`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=31 ;


--
-- 转存表中的数据 `bbs_bclass`
--


INSERT INTO `bbs_bclass` (`bid`, `bname`, `content`, `orderno`, `logo`, `bbanzhu`, `fid`) VALUES
(16, 'PHP技术交流', 'PHP基础编程、疑难解答、学习和开发过程中的经验总结等。', 1, 'php.png', '', 1),
(17, 'JAVA技术交流', '本版块提供Java学习视频中遇到的各种学习问题,有私密问题也可以与威哥交流哦。', 2, 'java.png', '', 1),
(18, '前端技术', '前台技术HTML、JavaScript、DIV、CSS、XML、Ajax等相关技术的学习及讨论。', 3, 'HTML5.png', '', 1),
(19, 'PHP视频教程', 'LAMP兄弟连打造免费视频教程,致力于做中国最好的视频教程。本版块发布PHP、MySQL等方面的视频教程。', 1, 'phpshipin.png', '', 2),
(20, 'PHP培训', 'LAMP兄弟连的PHP人才培训计划,关注PHP培训最新动态,了解课程精彩内容。', 2, 'phppeixun.png', '', 2),
(25, '服务器与Linux技术', 'Linux操作系统及Web服务相关新闻、技术交流、经验总结等。', 10, '2014070153b20d90e06e612077.png', '无', 1),
(28, '兄弟连建议', 'LAMP兄弟连官方发布管理公告和最新信息的地方,假如兄弟有任何意见或建议也可以发布在此。', 1, '2014070153b21296050c731918.png', '无', 9),
(29, '版主会议室', '版主和管理员讨论论坛事务的专属版块', 2, '2014070153b212e9c8b9416690.png', '无', 9),
(30, '123版块', '无', 10, '2014070253b3800616e8427107.jpg', '无', 10);


-- --------------------------------------------------------


--
-- 表的结构 `bbs_content`
--


CREATE TABLE IF NOT EXISTS `bbs_content` (
  `tid` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `uid` int(11) unsigned NOT NULL,
  `bid` int(11) unsigned NOT NULL,
  `title` varchar(200) NOT NULL DEFAULT '',
  `content` text NOT NULL,
  `pic` int(11) NOT NULL DEFAULT '0',
  `file` int(11) NOT NULL DEFAULT '0',
  `edittime` int(11) DEFAULT NULL,
  `keywords` varchar(400) NOT NULL DEFAULT '',
  `description` varchar(500) NOT NULL DEFAULT '',
  `posttime` int(11) DEFAULT NULL,
  `visittimes` int(11) NOT NULL DEFAULT '0',
  `ip` int(11) NOT NULL,
  `isopen` tinyint(1) NOT NULL DEFAULT '0',
  `ishot` tinyint(1) NOT NULL DEFAULT '0',
  `isjinghua` tinyint(1) NOT NULL DEFAULT '0',
  `allowlevel` tinyint(1) NOT NULL DEFAULT '0',
  `reply` tinyint(1) NOT NULL DEFAULT '0',
  `inbox` tinyint(1) NOT NULL DEFAULT '0',
  `isdel` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`tid`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;


--
-- 转存表中的数据 `bbs_content`
--


INSERT INTO `bbs_content` (`tid`, `uid`, `bid`, `title`, `content`, `pic`, `file`, `edittime`, `keywords`, `description`, `posttime`, `visittimes`, `ip`, `isopen`, `ishot`, `isjinghua`, `allowlevel`, `reply`, `inbox`, `isdel`) VALUES
(1, 56, 16, '这是一个测试标题枪支', ' 宁日 ', 0, 0, 1403523939, '', '', 1403523939, 8, 2130706433, 1, 0, 0, 0, 1, 1, 0),
(2, 56, 16, '这是一个标题', ' 好内容\r\n', 0, 0, 1403524011, '', '', 1403524011, 0, 2130706433, 0, 0, 1, 0, 0, 0, 0),
(4, 56, 16, 'PHP食品教程', ' \r\n好吃又好学', 0, 0, 1403524053, '', '', 1403524053, 0, 2130706433, 1, 0, 0, 0, 0, 0, 0),
(5, 56, 20, 'PHP语法知识学习方法', ' 一般人我不告诉他哦。 ', 0, 0, 1403536378, '', '', 1403536378, 1, 2130706433, 0, 1, 1, 0, 0, 0, 0),
(6, 59, 21, '兄弟连的日子好孤单', ' \r\n越是啊。', 0, 0, 1403527600, '', '', 1403527600, 2, 2130706433, 0, 0, 0, 0, 0, 1, 0),
(7, 56, 16, '打飞机好我那吗。 ', ' \r\n忽忽', 0, 0, 1403527732, '', '', 1403527732, 0, 2130706433, 1, 0, 0, 0, 0, 3, 0),
(8, 61, 16, 'html css技术 大牛的心得', '我是标题党 ', 0, 0, 1403527789, '', '', 1403527789, 18, 2130706433, 1, 0, 0, 0, 1, 3, 0),
(9, 56, 16, 'PHP基本语法知识', ' 基础知识很重要\r\n', 0, 0, 1403527826, '', '', 1403527826, 36, 2130706433, 0, 1, 0, 0, 0, 3, 0),
(10, 62, 20, '兄弟连PHP培训靠谱', ' \r\n靠谱的学校靠谱的培训', 0, 0, 1403527876, '', '', 1403527876, 0, 2130706433, 0, 0, 0, 0, 0, 3, 0),
(11, 56, 18, '漂亮页面必备的基础知识', ' PS  审美很重要\r\n', 0, 0, 1403527925, '', '', 1403527925, 3, 2130706433, 0, 0, 0, 0, 0, 1, 0),
(12, 59, 17, 'JAVA是一门强大的语言', ' 想学JAVA 勇气很重要', 0, 0, 1403528044, '', '', 1403528044, 0, 2130706433, 0, 0, 0, 0, 0, 3, 0),
(13, 56, 19, 'PHP视频发布了。 想要要快。', '内容更精彩。 画面更清晰 ', 0, 0, 1403528097, '', '', 1403528097, 1, 2130706433, 0, 0, 0, 0, 0, 3, 0),
(14, 56, 23, '美女精选', '美女精选 ', 0, 0, 1403536780, '', '', 1403536780, 0, 2130706433, 0, 0, 0, 0, 0, 3, 0),
(15, 56, 16, '迁迁和他女朋友的那些事宝贝们', '<p> </p><p></p><p></p><p></p><p></p><p></p><p>忽忽胡急急急哈哈哈</p><p></p><p></p><p></p><p></p><p></p><p></p>', 0, 0, 1403537017, '', '', 1403687040, 205, 2130706433, 0, 1, 1, 0, 1, 0, 0),
(16, 56, 16, '夏广华的第一次18禁', '第一次有很多了。 \r\n', 0, 0, 1403537080, '', '', 1403537080, 0, 2130706433, 0, 0, 0, 0, 0, 3, 0),
(17, 56, 16, '提莫是怎么勾搭安妮的', '一些尽在AAP 端子手 ', 0, 0, 1403537133, '', '', 1403537133, 10, 2130706433, 0, 0, 0, 0, 0, 1, 0),
(18, 56, 16, '焦志新最幸福的一天 18禁', '内容太过刺激,已经被和谐了 ', 0, 0, 1403537181, '', '', 1403537181, 26, 2130706433, 0, 0, 1, 0, 0, 0, 0),
(19, 56, 16, '刘铁和他的极品女友 绝杀迷药', '内容太过暴露,已经看不了了 ', 0, 0, 1403537223, '', '', 1403537223, 20, 2130706433, 0, 0, 0, 0, 0, 1, 0),
(20, 56, 16, 'vilin 的第N任女友大揭密', '显示已经无法显示此内容 ', 0, 0, 1403537388, '', '', 1403537388, 113, 2130706433, 0, 0, 1, 0, 0, 3, 0),
(21, 56, 16, '85期帅哥10大排行榜!', '暂时还没有出炉 ', 0, 0, 1403537442, '', '', 1403537442, 5, 2130706433, 0, 0, 1, 0, 0, 0, 0),
(22, 56, 16, '85期美女排行榜', '这个不能说的秘密 \r\n', 0, 0, 1403537486, '', '', 1403537486, 13, 2130706433, 1, 0, 0, 0, 0, 1, 0),
(23, 61, 16, '兄弟连是一个什么样的学校', '<p>一所靠谱的学校<br/></p>', 0, 0, 1403660512, '', '', 1403660512, 1, 2130706433, 0, 0, 0, 0, 0, 0, 0),
(24, 61, 16, '兄弟连是一个什么样的学校', '\n\n一所靠谱的学校\n', 0, 0, 1403660512, '', '', 1403660512, 0, 2130706433, 0, 0, 0, 0, 0, 0, 0),
(25, 61, 16, '包就业,零费用学习PHP', '<p>兄弟连退出零费用学习!<br/></p>', 0, 0, 1403660837, '', '', 1403660837, 2, 2130706433, 0, 0, 0, 0, 0, 0, 0),
(26, 61, 17, 'JAVA学习心得分享', '<p>好东西要和大家一起分享<br/></p>', 0, 0, 1403661923, '', '', 1403661923, 4, 2130706433, 0, 0, 0, 0, 0, 0, 0),
(28, 61, 16, '哦哦,YMD', '<p>要要,我还要..</p>', 0, 0, 1404136938, '', '', 1404136938, 18, 50397697, 0, 0, 0, 0, 0, 0, 0),
(29, 61, 16, 'o oooXXXooxxx', '<p>o oooXXXooxxxo oooXXXooxxxo oooXXXooxxxo oooXXXooxxxo oooXXXooxxx</p>', 0, 0, 1404136997, '', '', 1404136997, 8, 50397697, 0, 0, 0, 0, 0, 0, 0),
(32, 61, 16, '', '', 0, 0, 1404142661, '', '', 1404142661, 5, 50397697, 1, 0, 0, 0, 0, 0, 0),
(33, 61, 16, '年度PHP最火视频推荐', '好视频大家一起看!', 0, 0, 1404182444, '', '', 1404182444, 13, 2130706433, 0, 0, 0, 0, 1, 1, 0),
(35, 77, 16, 'w123456', '<p>w123456</p>', 0, 0, 1404272528, '', '', 1404272528, 3, 2130706433, 0, 0, 0, 0, 0, 0, 0),
(36, 56, 16, '好帖子', '好帖子', 0, 0, 1404291746, '', '', 1404291746, 1, 2130706433, 0, 0, 0, 0, 1, 0, 0),
(37, 59, 17, 'ddfajfafdf', 'fadsfaf', 0, 0, 1404292147, '', '', 1404292147, 2, 2130706433, 0, 0, 0, 0, 0, 0, 0);


-- --------------------------------------------------------


--
-- 表的结构 `bbs_fclass`
--


CREATE TABLE IF NOT EXISTS `bbs_fclass` (
  `fid` int(11) NOT NULL AUTO_INCREMENT,
  `fname` varchar(50) NOT NULL DEFAULT '',
  `content` varchar(500) NOT NULL DEFAULT '无',
  `orderno` int(11) DEFAULT NULL,
  `logo` varchar(100) DEFAULT 'chuishui.png',
  `fbanzhu` varchar(50) NOT NULL DEFAULT '无',
  UNIQUE KEY `fid` (`fid`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;


--
-- 转存表中的数据 `bbs_fclass`
--


INSERT INTO `bbs_fclass` (`fid`, `fname`, `content`, `orderno`, `logo`, `fbanzhu`) VALUES
(1, '技术交流', '技术交流分区简介', 1, '2014062253a6977a298612736.jpg', '无'),
(2, '兄弟连', '兄弟连分区简介', 2, '2014062253a6989c7640e23849.jpg', '无'),
(10, '123fenqu', 'dd', 10, '2014070253b37ff3c879919986.jpg', '无');


-- --------------------------------------------------------


--
-- 表的结构 `bbs_friendlink`
--


CREATE TABLE IF NOT EXISTS `bbs_friendlink` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `linkname` varchar(50) NOT NULL DEFAULT '一个链接',
  `url` varchar(255) NOT NULL DEFAULT 'http://www.baidu.com',
  `logo` varchar(255) NOT NULL DEFAULT 'link.jpg',
  `isindex` tinyint(4) NOT NULL DEFAULT '1',
  `type` tinyint(4) NOT NULL DEFAULT '1',
  `uid` int(11) DEFAULT NULL,
  `orderno` int(11) NOT NULL DEFAULT '5',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;


--
-- 转存表中的数据 `bbs_friendlink`
--


INSERT INTO `bbs_friendlink` (`id`, `linkname`, `url`, `logo`, `isindex`, `type`, `uid`, `orderno`) VALUES
(1, '都市之声', 'http://radio.jxntv.cn/dsg9b/', '2014062653ac3ba7c5e8626416.jpg', 1, 1, NULL, 1),
(3, '成功992', 'http://www.xh003.com/index.asp', '2014062653ac3f292b6cb4831.jpg', 1, 1, NULL, 3),
(4, '南昌周报', 'http://www.tiboo.cn/hongcheng/b2083802/', 'zhoubao.jpg', 1, 1, NULL, 4),
(5, '凤凰879', 'http://www.tiboo.cn/yule/b2142219/', 'fenghuang.jpg', 1, 1, NULL, 5),
(6, '地宝网', 'http://www.tiboo.cn', '2014062753ac445869bb811052.jpg', 1, 1, NULL, 2),
(7, '得意论坛', 'http://www.deyi.cn', '2014062753ac44c5cf2a931221.jpg', 1, 1, NULL, 6),
(8, '得意社区', 'http://www.deyi.cn', '2014062753ac4506b175c21650.jpg', 1, 1, NULL, 6),
(9, '蓝色理想', 'http://www.baidu.com', '', 1, 0, NULL, 1),
(10, 'PHPCMS', 'http://www.baidu.com', '', 1, 0, NULL, 2),
(11, '喂喂喂', 'http://www.baidu.com', '2014070253b380c197a8417515.jpg', 1, 1, NULL, 2);


-- --------------------------------------------------------


--
-- 表的结构 `bbs_reply`
--


CREATE TABLE IF NOT EXISTS `bbs_reply` (
  `rid` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `uid` int(10) unsigned NOT NULL,
  `tid` int(10) unsigned NOT NULL,
  `title` varchar(200) NOT NULL DEFAULT '这是一个回复',
  `content` text,
  `posttime` int(11) NOT NULL DEFAULT '1',
  `edittime` int(11) NOT NULL DEFAULT '1',
  `ip` int(11) DEFAULT NULL,
  `ipopen` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`rid`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=63 ;


--
-- 转存表中的数据 `bbs_reply`
--


INSERT INTO `bbs_reply` (`rid`, `uid`, `tid`, `title`, `content`, `posttime`, `edittime`, `ip`, `ipopen`) VALUES
(20, 61, 15, '测试四', '测试四', 1403626437, 1403626437, 2130706433, 0),
(21, 61, 15, '测试五', '测试五', 1403626458, 1403626458, 2130706433, 0),
(22, 61, 15, '测试六', '测试六', 1403626488, 1403626488, 2130706433, 0),
(23, 61, 15, '测试7', '测试7', 1403626505, 1403626505, 2130706433, 0),
(24, 61, 15, '测试八', '测试八', 1403626535, 1403626535, 2130706433, 0),
(25, 61, 15, '测试八', '测试久', 1403626551, 1403626551, 2130706433, 0),
(26, 61, 15, '测试试试', '测试十一', 1403626569, 1403626569, 2130706433, 0),
(27, 61, 15, '测试12', '测试12', 1403626590, 1403626590, 2130706433, 0),
(28, 61, 15, '测试13', '测试13', 1403626731, 1403626731, 2130706433, 0),
(29, 61, 15, '测试14', '测试14', 1403626747, 1403626747, 2130706433, 0),
(30, 61, 26, 'JAVA学习心得分享', '好好学习java', 1403764449, 1403661959, 2130706433, 0),
(31, 61, 9, '大神的文字果然犀利', '大神的文字果然犀利', 1403674246, 1403674246, 2130706433, 0),
(32, 61, 19, '羡慕你啊', '羡慕你啊啊', 1403674292, 1403674292, 2130706433, 0),
(33, 61, 18, '急急急', '真是让人羡慕啊!', 1403676176, 1403676176, 2130706433, 0),
(35, 61, 1, '成功了', '成功了', 1403676866, 1403676866, 2130706433, 0),
(36, 61, 9, '标题党', '标题党', 1403679055, 1403679055, 2130706433, 0),
(37, 59, 20, 'vilin 的第N任女友大揭密', 'haha', 1403764903, 1403764880, 2130706433, 1),
(38, 56, 8, '什么东西我看看', '什么东西我看看', 1404054368, 1404054368, 2130706433, 0),
(39, 59, 20, '好东西', '谢谢分享', 1404094359, 1404094359, 2130706433, 0),
(40, 59, 9, '我是为了得积分', '我是为了得积分的', 1404099665, 1404099665, 2130706433, 0),
(41, 59, 9, '哈哈哈', '在来两分呗', 1404099731, 1404099731, 2130706433, 0),
(42, 59, 9, '求加分', '求加分', 1404099802, 1404099802, 2130706433, 0),
(43, 56, 20, '在来两分', '你的内容的确精彩!', 1404099871, 1404099871, 2130706433, 0),
(44, 59, 9, '你的内容很好啊', '支持支持', 1404099920, 1404099920, 2130706433, 0),
(47, 61, 29, 'o oooXXXooxxxo oooXXXooxxx', 'o oooXXXooxxxv', 1404137018, 1404137018, 50397697, 0),
(48, 61, 29, 'o oooXXXooxxxo oooXXXooxxx', 'o oooXXXooxxxo oooXXXooxxx', 1404137027, 1404137027, 50397697, 0),
(49, 61, 29, 'o oooXXXooxxxo oooXXXooxxx', 'o oooXXXooxxxo oooXXXooxxx', 1404137028, 1404137028, 50397697, 0),
(52, 61, 29, 'o oooXXXooxxx', 'o oooXXXooxxx', 1404137042, 1404137042, 50397697, 0),
(59, 61, 17, '', '', 1404142783, 1404142783, 50397697, 0),
(60, 76, 33, '我 想看看', '我想看看', 1404269258, 1404269258, 2130706433, 0),
(61, 77, 35, '回复下', '回复下123456', 1404272551, 1404272551, 2130706433, 0);


-- --------------------------------------------------------


--
-- 表的结构 `bbs_title`
--


CREATE TABLE IF NOT EXISTS `bbs_title` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL DEFAULT '',
  `name` varchar(100) NOT NULL DEFAULT '',
  `url` varchar(200) NOT NULL DEFAULT '',
  `keywords` varchar(500) NOT NULL DEFAULT '',
  `description` varchar(500) NOT NULL DEFAULT '',
  `email` varchar(200) NOT NULL DEFAULT '',
  `qq` int(11) NOT NULL DEFAULT '243506597',
  `record` varchar(100) DEFAULT NULL,
  `isopen` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;


--
-- 转存表中的数据 `bbs_title`
--


INSERT INTO `bbs_title` (`id`, `title`, `name`, `url`, `keywords`, `description`, `email`, `qq`, `record`, `isopen`) VALUES
(1, 'LAMP兄弟连_PHP技术交流论坛-专注PHP学习教程社区|PHP培训|PHP视频|PHP教程|PHP视频教程', 'LAMP兄弟连', 'http://www.lampbrother.net', 'PHP培训,PHP视频,JAVA视频,JAVA培训,', '兄弟连是一个培训机构', 'vilin@qq.com', 243506597, '京ICP备11018177号', 0);


-- --------------------------------------------------------


--
-- 表的结构 `bbs_user`
--


CREATE TABLE IF NOT EXISTS `bbs_user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(20) CHARACTER SET latin1 NOT NULL,
  `userpwd` char(32) CHARACTER SET latin1 NOT NULL,
  `email` varchar(100) CHARACTER SET latin1 NOT NULL,
  `qq` int(11) unsigned DEFAULT NULL,
  `phoneno` varchar(20) CHARACTER SET latin1 DEFAULT NULL,
  `sex` tinytext CHARACTER SET latin1,
  `birthday` int(11) DEFAULT NULL,
  `headpic` varchar(50) CHARACTER SET latin1 DEFAULT 'headpic.jpg',
  `website` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
  `signtext` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
  `intoduce` text CHARACTER SET latin1,
  `regtime` int(11) NOT NULL,
  `lastlogin` int(11) NOT NULL,
  `lastip` int(11) NOT NULL,
  `money` int(11) DEFAULT '100',
  `level` tinyint(1) NOT NULL DEFAULT '3',
  `isallow` tinyint(1) NOT NULL DEFAULT '1',
  `focus` varchar(200) CHARACTER SET latin1 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=78 ;


--
-- 转存表中的数据 `bbs_user`
--


INSERT INTO `bbs_user` (`id`, `username`, `userpwd`, `email`, `qq`, `phoneno`, `sex`, `birthday`, `headpic`, `website`, `signtext`, `intoduce`, `regtime`, `lastlogin`, `lastip`, `money`, `level`, `isallow`, `focus`) VALUES
(56, 'liujia', 'e10adc3949ba59abbe56e057f20f883e', '234@qq.com', 2354, '18798764567', '0', 635788800, '2014062353a7970fa48d627249.jpg', NULL, NULL, NULL, 0, 0, 2130706433, 102, 3, 1, NULL),
(59, 'panyangli', 'e10adc3949ba59abbe56e057f20f883e', '123@qq.com', 2325, '187', '', -28800, 'headpic.jpg', NULL, NULL, NULL, 1403177217, 1403177217, 2130706433, 104, 1, 1, NULL),
(58, 'vilinss', 'e10adc3949ba59abbe56e057f20f883e', '123@qq.com', 23456, '18709876534', '1', -28800, '2014062453a860c6d513932034.jpg', NULL, NULL, NULL, 0, 0, 2130706433, 100, 3, 1, NULL),
(69, 'liang3', 'e10adc3949ba59abbe56e057f20f883e', '989@qq.com', 8799, '9932', '0', 521910000, '2014062753ad8f5a78c7229238.jpg', NULL, NULL, NULL, 1403883354, 0, 2130706433, 0, 0, 2, NULL),
(61, 'vilins', 'e10adc3949ba59abbe56e057f20f883e', '2435@qq.com', 243506597, '15607915362', '', -28800, '2014070153b220c8e7d3319023.jpg', '', '', NULL, 1403487960, 0, 2130706433, 344, 2, 1, NULL),
(62, 'liutie', 'e10adc3949ba59abbe56e057f20f883e', 'liutie@qq.com', 23456, '18678982234', '1', -28800, '2014062353a793fb3fe552632.jpg', NULL, NULL, NULL, 1403491323, 0, 2130706433, 400, 3, 1, NULL),
(65, 'gengfeng', 'e10adc3949ba59abbe56e057f20f883e', '234@qq.com', 333, '555', '1', 590601600, '2014062753ad8e7b5fd777859.jpg', NULL, NULL, NULL, 1403883131, 0, 2130706433, 0, 0, 1, NULL),
(66, 'gengfeng', 'e10adc3949ba59abbe56e057f20f883e', 'ee@qq.com', 455, '89', '1', 587833200, '2014062753ad8ea05681619568.jpg', NULL, NULL, NULL, 1403883168, 0, 2130706433, 0, 0, 1, NULL),
(67, 'liang1', 'e10adc3949ba59abbe56e057f20f883e', '3332qq@qq.com', 444, '666', '1', 558720000, '2014062753ad8ed4d78f323529.jpg', NULL, NULL, NULL, 1403883220, 0, 2130706433, 0, 0, 1, NULL),
(68, 'liang2', 'e10adc3949ba59abbe56e057f20f883e', '56@qq.com', 232325, '7866756', '1', 558370800, '2014062753ad8eff6036418734.jpg', NULL, NULL, NULL, 1403883263, 0, 2130706433, 0, 0, 1, NULL),
(70, 'aaaa', '19e7d665ff5530bf4baf739cfc0d4447', 'erw@qq.com', NULL, NULL, NULL, NULL, 'headpic.jpg', NULL, NULL, NULL, 1404136465, 1404136465, 50397697, 100, 3, 1, NULL),
(71, 'jzx0802', 'd41d8cd98f00b204e9800998ecf8427e', 'jzx0802@163.com', 0, '', '0', 1970, 'headpic.jpg', '', '', NULL, 1404136475, 1404136475, 50397697, 116, 3, 1, NULL),
(72, 'qianqian', '0b50b02fd0d73a9c4c8c3a781c30845f', 'qq@qq.com', NULL, NULL, NULL, NULL, '2014063053b16c485653526420.jpg', NULL, NULL, NULL, 1404136486, 1404136486, 50397697, 100, 3, 1, NULL),
(73, 'jzx111111', '4f596985eea6557834db49da3dd4e71c', 'jzx0802@111.com', NULL, NULL, NULL, NULL, 'headpic.jpg', NULL, NULL, NULL, 1404136543, 1404136543, 50397697, 100, 3, 1, NULL),
(75, 'jzx1988', 'ecbd8e151d2244dd833a85953da688f1', 'jzx0802@111.com', 0, '', '0', 1970, 'headpic.jpg', '', '', NULL, 1404142809, 1404142809, 50397697, 100, 3, 1, NULL),
(77, 'w123456', '3d24b838770ee90773804e8599e549ff', '22@qq.com', NULL, NULL, NULL, NULL, '2014070253b37f6e728911804.jpg', NULL, NULL, NULL, 1404272460, 1404272460, 2130706433, 109, 3, 1, NULL);


-- --------------------------------------------------------


--
-- 表的结构 `bbs_words`
--


CREATE TABLE IF NOT EXISTS `bbs_words` (
  `wid` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `badword` varchar(50) NOT NULL,
  `goodword` varchar(50) NOT NULL,
  PRIMARY KEY (`wid`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;


--
-- 转存表中的数据 `bbs_words`
--


INSERT INTO `bbs_words` (`wid`, `badword`, `goodword`) VALUES
(1, '枪支', '鲜花'),
(2, '迷药', '感冒药'),
(5, '法轮功', '佛教'),
(7, '黄色', '红色');


/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;




6.文件内部移动指针


与指针相关函数:
// ftell(); //返回指针当前位置
// fseek(); //移动指针
// fread(); //读取数据并移动指针
// rewind()  //返回指针到文件开头位置


// $file = fopen("test.txt","w");
// for($i = 0; $i < 50; $i++){
// fwrite($file,"www.lampbrother.net\n");
// }
// fclose($file);


// int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )
// SEEK_SET - 设定位置等于 offset 字节。
// SEEK_CUR - 设定位置为当前位置加上 offset。
// SEEK_END - 设定位置为文件尾加上 offset。


$file = fopen("test.txt","r");
echo ftell($file);
echo fread($file,20);
echo ftell($file);
echo fread($file,20);
fseek($file,-20,SEEK_END); 
echo ftell($file);
echo fread($file,10);
echo ftell($file);


留言板实例:
<?php
header("content-type:text/html;charset=utf-8");
date_default_timezone_set("PRC");


// ini_set('display_errors',1);
// error_reporting(E_ALL&~E_NOTICE);


//留言板程序
if(isset($_POST['sub'])){


$fileName = 'data.txt';


$mess = $_POST['username'].'<l>'.$_POST['title'].'<l>'.$_POST['content'].'<l>'.time().'<n>';


write($fileName,$mess);
}


//读取文件内容
$fileName = 'data.txt';
 if(file_exists($fileName)){
$con = read($fileName);
$con = rtrim($con,"<n>");
$rows = explode("<n>",$con);
foreach($rows as $row){
list($username,$title,$content,$time) = explode("<l>",$row);
echo date("Y-m-d H:i:s",$time).' '.$username.'说:'.$title.$content.'<br>';
}
}




//读取文件函数
function read($fileName){
$file = fopen($fileName,"r");


//设置读取文件锁
if(flock($file,LOCK_SH)){
$con = fread($file, filesize($fileName));


flock($file,LOCK_UN);
}

fclose($file);
return $con;
}


//写入文件函数
function write($fileName,$mess){


$file = fopen($fileName,"a");
//写入文件锁
if(flock($file,LOCK_EX)){
fwrite($file,$mess);
flock($file,LOCK_UN);
}
fclose($file);


}


?>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>留言板</title>
</head>
<body>
<form action="file.php" method="post">
<table align="center" border="1" cellspacing="0">
<caption><h3>留言板</h3></caption>
<tr><th>姓名:</th><td><input type="text" name="username"></td></tr>
<tr><th>标题:</th><td><input type="text" name="title"></td></tr>
<tr><th>内容:</th><td><textarea name="content" cols="30" rows="5"></textarea></td></tr>
<tr><td colspan="2" align="center"><input type="submit" name="sub" value="发送">&nbsp;&nbsp;&nbsp;<input type="reset" value="重写"></td></tr>
</table>
</form>
</body>


7.文件锁定的一些机制处理


文件读取与写入锁定相关函数:
flock($file,LOCK_SH); //读取锁定
flock($file,LOCK_EX); //写入锁定
flock($file,LOCK_UN); //解除锁定


目录处理


概述:


文件的操作:创建文件,删除文件,重命名文件,移动文件,复制文件等;(都有内置函数)


目录操作:创建目录(mkdir)、删除目录(rmdir删除空目录)、复制目录(自定义函数)、移动重命名目录(rename)
                               统计目录大小(自定义函数) 、遍历目录(自定义函数)、删除非空目录(自定义函数)


自定义目录相关函数使用的目录函数有:opendir() readdir() closedir()  rewinddir() 


1.目录的遍历


// $fileName = "../file";
function readdirs($fileName){


if(!is_dir($fileName)){
echo '这不是一个目录';
exit();
}


$dir = opendir($fileName);

while( $file = readdir($dir)){
if($file != '.' && $file != '..'){
$newfile = $fileName.'/'.$file;
if(is_dir($newfile)){
readdirs($newfile);
echo '<font color="red">'.$newfile.'--------'.date("Y-m-d H:i:s",filectime($newfile)).'-------</font><br>';
}else{
echo '<font color="green">'.$newfile.'--------'.date("Y-m-d H:i:s",filectime($newfile)).'--'.getSize(fileSize($newfile)).'-----</font><br>';
}
}
}
closedir($dir);


}
 
 readdirs('../file');


 //格式化大小函数


 function getSize($fileSize){
  $size = 0;
  $dw = 'Byte';
  if($fileSize >= pow(2,30)){
  $size = round($fileSize/pow(2,30),2);
  $dw = 'GB';
  }elseif($fileSize >= pow(2,20)){
  $size = round($fileSize/pow(2, 20),2);
  $dw = 'MB';
  }elseif($fileSize >= pow(2, 10)){
  $size = round($fileSize/pow(2, 10),2);
  $dw = 'KB';
  }else{
  $size = $fileSize;
  $dw = 'Byte';
  }


  return $size.$dw;


 }


2.目录的创建


mkdir('newdir');


3.目录的删除


删除空目录:rmdir('newdir');


删除非空目录(函数):


function deldir($dirName){


if(!file_exists($dirName)){
exit('目录不存在');
}


if(!is_dir($dirName)){
exit('请输入一个目录');
}

$dir = opendir($dirName);
while($filename = readdir($dir)){


$file = $dirName.'/'.$filename;
if($filename != '.' && $filename != '..' ){


if(is_dir($file)){
deldir($file);
}else{
unlink($file);
echo '删除文件<b>'.$file.'</b>成功<br>';
}


}
}
closedir($dir);
echo '删除目录<b>'.$dirname.'</b>成功<br>';
rmdir($dirName);
}


4.目录的复制(函数)


function copydir($sourcedir,$dir){
if(!is_dir($sourcedir)){
exit("这不是一个目录");
}


if(!file_exists($dir)){
mkdir($dir);
}


$file1 = opendir($sourcedir);



while ($dir1 = readdir($file1)) {

if($dir1 != '.' && $dir1 != '..'){
$newdir1 = $sourcedir.'/'.$dir1;
$newdir2 = $dir.'/'.$dir1;
if(is_dir($newdir1)){

copydir($newdir1,$newdir2);
}else{
copy($newdir1,$newdir2);
}
}
}
closedir($file1);
}
copydir('D:\wamp\www\85\file','D:\wamp\www\85\file1');


5.统计目录大小(函数)


function sumsize($dir){
if(!is_dir($dir)){
exit("这不是一个目录");
}


$dir1 = opendir($dir);
$sumsize = 0;
while ($dirname = readdir($dir1)) {

if($dirname != '.' && $dirname != '..'){
$newdir = $dir.'/'.$dirname;

if(is_dir($newdir)){
$sumsize += sumsize($newdir);
}else{
$sumsize += filesize($newdir);

}
}
}
closedir($dir1);
return $sumsize;
}


echo sumsize('../file');


文件上传和下载


文件的上传


单文件上传


<?php
header("content-type:text/html;charset=utf-8");
echo '<pre>';
print_r($_FILES);




function upload($file,$path='./')
{
$allowsize = 5*1024*1024;
$allowtypes = ['image/jpeg','image/jpg','image/png','image/gif'];
$allowhz = ['jpg','jpeg','png','gif'];


$result = array(
'msg'=>'',


'filename'=>'',
);
//1,判断大小


if($file['size']>$allowsize){
exit("上传文件大小不能超过5M");
}


//2,判断类型
$hz = pathinfo($file['name'],PATHINFO_EXTENSION);
if(!in_array($file['type'],$allowtypes)){
$result['msg'].='文件类型必须是jpg,jpeg,png,gif<br />';
}


if(!in_array($hz,$allowhz)){
$result['msg'].='文件类型必须是jpg,jpeg,png,gif<br/>';
}
//3,判断有没有错误
switch($file['error']){
case 1:
$result['msg'].="上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值<br />";
break;
case 2:
$result['msg'].="上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。<br/>";
break;
case 3:
$result['msg'].="文件只有部分被上传<br />";
break;
case 4:
$result['msg'].="没有文件被上传。<br/>";
break;
case 6:
$result['msg'].="找不到临时文件夹<br />";
break;
case 7:
$result['msg'].="文件写入失败<br />";
break;
default:
break;
}


//4,判断是否是以post方式上传的文件
if(!is_uploaded_file($file['tmp_name'])){
$result['msg'].="非法上传文件,上传失败!<br />";
}


//5,重新给个名字
$newfile = date('Ymdhis').rand().'.'.$hz;


//6,移动上传文件到指定上传目录
if(move_uploaded_file($file['tmp_name'],$newfile)){


////7,给用户一个反馈
$result['msg'].='文件上传成功,新的文件名为'.rtrim($path,'/').'/'.$newfile;
$result['filename'] = $newfile;
}else{
$result['msg'].='文件移动保存时失败!';
}


return $result;
}




多文件上传


<?php
include 'upload.php';
// echo '<pre>';
// print_r($_FILES);
$arr = array();
//重组数组方法一
foreach($_FILES['pic']['name'] as $k=>$v){
$arr[$k]['name'] = $_FILES['pic']['name'][$k];
$arr[$k]['type'] = $_FILES['pic']['type'][$k];
$arr[$k]['tmp_name'] = $_FILES['pic']['tmp_name'][$k];
$arr[$k]['error'] = $_FILES['pic']['error'][$k];
$arr[$k]['size'] = $_FILES['pic']['size'][$k];
}




//重组数组方法二
// $count = count($_FILES['pic']['name']);
// for($i = 0; $i <$count; $i++){
// $arr[$i]['name'] = $_FILES['pic']['name'][$i];
// $arr[$i]['type'] = $_FILES['pic']['type'][$i];
// $arr[$i]['tmp_name'] = $_FILES['pic']['tmp_name'][$i];
// $arr[$i]['error'] = $_FILES['pic']['error'][$i];
// $arr[$i]['size'] = $_FILES['pic']['size'][$i];
// }


foreach($arr as $v){
$result[] = upload($v);
}


print_r($result);


文件上传类.rar


文件的下载


只需要此段代码就可以了:



0 0
原创粉丝点击