2 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊
重寫了一下,功能相對(duì)完善了一些。實(shí)際應(yīng)用你可以簡(jiǎn)單封裝,最起碼能減少一半代碼量。
其他的比如搜索等等,你看過代碼自己也應(yīng)該能寫出來。
------代碼段--------------------------------------------
<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"); //寫入數(shù)據(jù),中間用|隔開
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) { //遍歷數(shù)組,定位符合條件的key,并刪除改行
unset($lines[$key]);
break;
}
}
unlink("db.txt");
$fp=fopen("db.txt","w");
foreach ($lines as $value) {
fwrite($fp,$value); //寫入刪除后的新數(shù)組
}
fclose($fp);
echo "<script>location.href='test.php';</script>";
}
/*修改*/
if ($_GET[act]=="mod") {
$m1="修改值1";
$m2="修改值2";
$m3=time();//修改時(shí)間
$time=trim($_GET[time]);
foreach ($lines as $key=>$value) {
$line=explode("|",$value);
if (trim($line[2])==$time) { //遍歷數(shù)組,定位符合條件的key,并修改改行
$lines[$key]=$m1."|".$m2."|".$m3."\r\n";
break;
}
}
unlink("db.txt");
$fp=fopen("db.txt","w");
foreach ($lines as $value) {
fwrite($fp,$value); //寫入修改后的新數(shù)組
}
fclose($fp);
echo "<script>location.href='test.php';</script>";
}
//print_r("<pre>");
//print_r($lines);
?>

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
我建議一下吧,文本數(shù)據(jù)庫(kù)的例子本來太多,但是為了邏輯簡(jiǎn)化,最好通過專門接口實(shí)現(xiàn)文件與數(shù)據(jù)的轉(zhuǎn)換,可以采用我下面的模板編寫:
<?php
//文件最前面定義兩個(gè)全局變量,數(shù)據(jù)庫(kù)文件名和用戶數(shù)組
$pwd_db_file='db.txt';
$UserPassword=array();
//下面的pwd_db_read函數(shù),把文件內(nèi)容讀入到全局?jǐn)?shù)組中
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函數(shù)保存數(shù)組內(nèi)容到文件中
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);
}
//有了上面的全局變量和函數(shù),要寫什么功能都簡(jiǎn)單
//下面假釋本腳本調(diào)用的時(shí)候通過reg.php?job=add&user=...&pass=...
//的格式進(jìn)行調(diào)用,job為add表示添加用戶,del表示刪除,modi表示修改
//另外的user和pass表示用戶名或者密碼,job不是以上內(nèi)容表示登錄
//主程序一開始就打開數(shù)據(jù)庫(kù)
pwd_db_read();
//下面判斷功能
if ($jon=='add'){
if (array_key_exists($user,$UserPassword)) echo "用戶 $user 已經(jīng)存在!"
else $UserPassword[$user]=$pass;//就一句話,簡(jiǎn)單吧
}elseif (job=='del'){
unset($UserPassword[$user]);//你自己考慮編寫是否確認(rèn)刪除的內(nèi)容
}elseif ($job=='modi'){
if (array_key_exists($user,$UserPassword)) $UserPassword[$user]=$pass;//和添加是不是有點(diǎn)類似
else echo "用戶 $user 不存在!"
}else{
if ($UserPassword[$user]==$pass){
echo '密碼正確。';
//接下來可能要做許多事情
}else echo '密碼錯(cuò)誤!';
}
//程序最后保存數(shù)據(jù)庫(kù)修改
pwd_db_write();
?>
看得懂嗎,沒有上機(jī)調(diào)試,語(yǔ)法問題可能難免,如果發(fā)現(xiàn)不明白的問題請(qǐng)補(bǔ)充。
- 2 回答
- 0 關(guān)注
- 180 瀏覽
添加回答
舉報(bào)