2 回答
TA贡献1784条经验 获得超7个赞
重写了一下,功能相对完善了一些。实际应用你可以简单封装,最起码能减少一半代码量。
其他的比如搜索等等,你看过代码自己也应该能写出来。
------代码段--------------------------------------------
<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);
?>
TA贡献1796条经验 获得超7个赞
我建议一下吧,文本数据库的例子本来太多,但是为了逻辑简化,最好通过专门接口实现文件与数据的转换,可以采用我下面的模板编写:
<?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();
?>
看得懂吗,没有上机调试,语法问题可能难免,如果发现不明白的问题请补充。
- 2 回答
- 0 关注
- 139 浏览
添加回答
举报