求教php使用TXT数据库(读取和修改文本)

根据这个网页〈formmethod="post"><inputtype="text"name="user"/><inputtype="text"name="pass"/>... 根据这个网页
〈form method="post">
<input type="text" name="user" />
<input type="text" name="pass" />
<input type="submit" name="Submit" value="提交" />
</form>
<?php
/*写入*/
if ($_POST[Submit]) {
$fp=fopen("db.txt","a");
fwrite($fp,$_POST[user]."|".$_POST[pass]."\r\n"); //写入数据,中间用|隔开
fclose($fp);
}
用户名和密码写入完了后需要修改怎么做(删除和修改),最好详细一点。谢谢了
回答详细易懂的话追加20分
我的意思是如果 我的数据库db.txt 里面已经有几条信息了 其中一个是 Z|Z 我如何修改Z|Z 变成W|W
关于删除我的意思是 db.txt 里面已经有几条信息了 其中一个是 Z|Z 我如何删除 Z|Z这一条信息
展开
 我来答
阳光上的桥
推荐于2016-03-21 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65814
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
我建议一下吧,文本数据库的例子本来太多,但是为了逻辑简化,最好通过专门接口实现文件与数据的转换,可以采用我下面的模板编写:

<?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=add&user=...&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();
?>

看得懂吗,没有上机调试,语法问题可能难免,如果发现不明白的问题请补充。
davidaq
2007-10-08 · TA获得超过879个赞
知道小有建树答主
回答量:275
采纳率:0%
帮助的人:412万
展开全部
--------------再次补充!-------------------
我做的一个较为完整的PHP4+文本数据库+cookie 简单用户系统,可以注册、登录、修改、删除
(只能修改和删除自己的用户信息)
下载地址: http://www.mjbox.com/u/davidaq/txtlogin.rar
谢我就赏脸常到我的博客光顾光顾,不用给多少积分!!
-------------------------------------------

删除:
unlink("db.txt");
修改、写入:
$method="w";//打开方式
$fp=fopen("db.txt",$method);
fwrite($fp,$_POST[user]."|".$_POST[pass]."\r\n"); //写入数据,中间用|隔开
fclose($fp);
$method变量为
a:在文档末尾写入
w:先删除再写入
r:读取
r+:读取或在文档开头写入
一般修改时就是先用r读取,再用strtr函数或正则表达式替换数据,再用w方式写入。

建议你下载一个php手册自己学习:http://www.mjbox.com/u/davidaq/down/PHP%E6%89%8B%E5%86%8C.rar

按照你的意思继续补充:
先是读取db.txt
$fp=fopen("db.txt","r");
$content=fread($fp,filesize("db.txt"));
fclose($fp);

然后是替换,方法有2
strtr函数:
$write=strtr($content,array($old[0]=>$new[0],$old[1]=>$new[1] [,....]));
//这会将$content中 ++所有++ 的与$old[*]相同的地方替换为$new[*]

或正则表达式preg_replace函数:
$pattern=array("/$old[0]/","/$old[1]/"[,....]);//注意“/”必须要有,那表示开头和结尾
$replace=array($new[0],$new[1][,....]);//这里就不必有“/”
$limit=1; //设置替换数量php4.1以后才可以使用
$write=preg_replace($pattern,$replace,$content,$limit);
//这里就将$pattern替换为$replace一($limit)次

/*删除其实就是将 $old 替换为 "" */
最后写入:
$fp=fopen("db.txt","w");
fwrite($fp,$write);
fclose($fp);

这里真实高手云集呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c67c98046
2007-10-07 · TA获得超过517个赞
知道小有建树答主
回答量:900
采纳率:0%
帮助的人:0
展开全部
刚看到留言~~~
重写了一下,功能相对完善了一些。实际应用你可以简单封装,最起码能减少一半代码量。
其他的比如搜索等等,你看过代码自己也应该能写出来。
------代码段--------------------------------------------
<form method="post">
<input type="text" name="user" />
<input type="text" name="pass" />
<input type="submit" name="Submit" value="提交" />
</form>
<?php
/*写入*/
if ($_POST[Submit]) {
$fp=fopen("db.txt","a");
fwrite($fp,$_POST[user]."|".$_POST[pass]."|".time()."\r\n"); //写入数据,中间用|隔开
fclose($fp);
}
/*读取*/
$lines=file("db.txt");
foreach ($lines as $value) {
$line=explode("|",$value);
echo "no1:$line[0]--no2:$line[1]---time:$line[2]--<a href=test.php?act=del&time=$line[2]>删除</a>--<a href=test.php?act=mod&time=$line[2]>修改</a><br>";
}
/*删除*/
if ($_GET[act]=="del") {
$time=trim($_GET[time]);
foreach ($lines as $key=>$value) {
$line=explode("|",$value);
if (trim($line[2])==$time) { //遍历数组,定位符合条件的key,并删除改行
unset($lines[$key]);
break;
}
}
unlink("db.txt");
$fp=fopen("db.txt","w");
foreach ($lines as $value) {
fwrite($fp,$value); //写入删除后的新数组
}
fclose($fp);
echo "<script>location.href='test.php';</script>";
}
/*修改*/
if ($_GET[act]=="mod") {
$m1="修改值1";
$m2="修改值2";
$m3=time();//修改时间
$time=trim($_GET[time]);
foreach ($lines as $key=>$value) {
$line=explode("|",$value);
if (trim($line[2])==$time) { //遍历数组,定位符合条件的key,并修改改行
$lines[$key]=$m1."|".$m2."|".$m3."\r\n";
break;
}
}
unlink("db.txt");
$fp=fopen("db.txt","w");
foreach ($lines as $value) {
fwrite($fp,$value); //写入修改后的新数组
}
fclose($fp);
echo "<script>location.href='test.php';</script>";
}
//print_r("<pre>");
//print_r($lines);
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式