我建议一下吧,文本数据库的例子本来太多,但是为了逻辑简化,最好通过专门接口实现文件与数据的转换,可以采用我下面的模板编写:
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(){
fp=fopen($pwd_db_file, 'w');
foreach ($UserPassword as $usr=$pwd)
fputs($fp,"$usr|$pwd\n");
//有了上面的全局变量和函数,要写什么功能都简单
//下面假释本脚本调用的时候通过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();
看得懂吗,没有上机调试,语法问题可能难免,如果发现不明白的问题请补充.
①.、直接读文件相比数据库查询效率更胜一筹,而且文中还没算上连接和断开的时间.
如果你做的这个系统规模不大,数据应用不频繁,那么文件系统完全是可以接受的,但如果你的系统规模比较大,同时数据是频繁更新和变化的,那么读写数据库的效率肯定会比文件高很多.
文件的优势:速度快 缺点:移植性差(没发现读取指定文件需要指定目录吗?万一目录变动不会又要改了.) 数据库:移植性较好(不管怎么移,只需要更改下连接参数即可.) 缺点:没有直接读取文件的速度快.
肯定读写txt,前提是一定要设置了txt的编码格式,默认的ascii格式,读数据库每次还要建立连接,执行操作,返回结果,再判断是否写入成功,执行步骤太多,所以读写txt更快