/**
新安网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。创新互联建站于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
* 读文件
**/
function read_file($filename)
{
$fp = fopen($filename, "r") or die("couldn't open $filename");
$read = fread($fp, filesize($filename));
fclose($fp);
return $read;
}
/**
* 写文件
**/
function write_file($filename, $buffer)
{
$fp = fopen($filename, "w") or die("couldn't open $filename");
flock( $fp, LOCK_EX );
$write = fputs($fp, $buffer);
flock( $fp, LOCK_UN );
fclose($fp);
return true;
}
/**
* 修改(只是追加内容)
**/
function append_to_file($filename, $buffer)
{
$fp = fopen($filename, "a") or die("couldn't open $filename");
flock( $fp, LOCK_EX );
fputs($fp, $buffer);
flock( $fp, LOCK_UN );
fclose($fp);
return true;
}
/**
* 测试
**/
$str = read_file('test.txt');
echo $str;
write_file('test2.txt', $str);
append_to_file('test2.txt', "ABCD");
文件存储方式修改下
123 |4567|1|1|1 //中间用竖线 | 分割开来
php读入该txt然后用 | 来分割, 保存到数组中 比如$a
然后用户修改了密码 就将密码赋值给$a[1] 然后循环数组生成上面的格式,在保存到txt
//记录返回值
$write_data_a = [
'html_url' = $getUrl,
'ip' = $this-get_real_ip(),
'time' = date("Y-m-d H:i:s",time()),
'res' = $response
];
//转化为JSON
$write_data_a = json_encode($write_data_a) . '||' . "\n";
$date = date("Y-m-d", time());
//项目路径目录,判断是否存在,不存在则创建
$lujing = "./360_mobile_res_sd";
if(!is_dir($lujing)){
mkdir(iconv("UTF-8", "GBK", $lujing),0777,true);
}
//文件,判断是否存在,不存在则创建
$TxtFileName = "./360_mobile_res_sd/" . $date . "_2.txt";
//以读写方式打写指定文件,如果文件不存则创建
if(file_exists($TxtFileName))
{
//存在,追加写入内容
file_put_contents($TxtFileName, $write_data_a, FILE_APPEND);
}
else
{
//不存在,创建并写入
if( ($TxtRes=fopen ($TxtFileName,"w+")) === FALSE){
exit();
}
if(!fwrite ($TxtRes,$write_data_a)){ //将信息写入文件
fclose($TxtRes);
exit();
}
fclose ($TxtRes); //关闭指针
}
PHP有两种方法读写文件,方法一、file、file_get_contents、file_put_contents三个函数整体读写文本,适合文本文件不太大的情况。两个函数的的典型应用是:
$text=file_get_contents('a.txt');//把文本文件的所有内容取到字符串变量$text里面
$arr=file('a.txt');//把文本文件的所有内容,取到数组$arr里面,$arr[0]就是第一行,以此类推
$arr[1]='abc';//或者通过其它途径修改变量值
$text=implode($arr);//把数组连接为字符串
file_put_contents('a.txt', $text);//把字符串变量的内容写入到文本文件里面。
方法二、使用fopen、fgets、fputs、fclose函数读写文件,可以应付特大文件的修改。文件的修改一般方法是新建立一个文件,把源文件全部扫描一遍,遇到需要的部分进行处理,最后删除源文件,更名新文件。例如下面的代码把a.txt里面的abc修改为def:
$fp1=fopen('a.txt','r');
$fp2=fopen('a.tmp','w');
while(!feof($fp1)){
$line=fgets($fp1);
$line=str_replace('abc','def',$line);
fputs($fp2,$line);
}
flcose($fp1);
fclose($fp2);
unlike('a.txt');
rename('a.tmp', 'a.txt');
打开PHP手册,搜索 Filesystem
全部都是php操作文件的一些方法,手册上面都有实例。
我建议一下吧,文本数据库的例子本来太多,但是为了逻辑简化,最好通过专门接口实现文件与数据的转换,可以采用我下面的模板编写:
?php
//文件最前面定义两个全局变量,数据库文件名和用户数组
$pwd_db_file='db.txt';
$UserPassword=array();
//下面的pwd_db_read函数,把文件内容读入到全局数组中
function pwd_db_read(){
global $pwd_db_file, $UserPassword;
$fp=fopen($pwd_db_file,'r');
while ($s=fgets($fp)){
list($usr,$pwd)=explode('|', $s);
$UserPassword[$usr]=$pwd;
}
fclose($fp);
}
//下面的pwd_db_write函数保存数组内容到文件中
function pwd_db_write(){
global $pwd_db_file, $UserPassword;
fp=fopen($pwd_db_file, 'w');
foreach ($UserPassword as $usr=$pwd)
fputs($fp,"$usr|$pwd\n");
fclose($fp);
}
//有了上面的全局变量和函数,要写什么功能都简单
//下面假释本脚本调用的时候通过reg.php?job=adduser=...pass=...
//的格式进行调用,job为add表示添加用户,del表示删除,modi表示修改
//另外的user和pass表示用户名或者密码,job不是以上内容表示登录
//主程序一开始就打开数据库
pwd_db_read();
//下面判断功能
if ($jon=='add'){
if (array_key_exists($user,$UserPassword)) echo "用户 $user 已经存在!"
else $UserPassword[$user]=$pass;//就一句话,简单吧
}elseif (job=='del'){
unset($UserPassword[$user]);//你自己考虑编写是否确认删除的内容
}elseif ($job=='modi'){
if (array_key_exists($user,$UserPassword)) $UserPassword[$user]=$pass;//和添加是不是有点类似
else echo "用户 $user 不存在!"
}else{
if ($UserPassword[$user]==$pass){
echo '密码正确。';
//接下来可能要做许多事情
}else echo '密码错误!';
}
//程序最后保存数据库修改
pwd_db_write();
?
看得懂吗,没有上机调试,语法问题可能难免,如果发现不明白的问题请补充。