php中用文本文件做数据库的实现方法_PHP教程
按我的经验,本人认为,以下列文件结构为最优:
----------------------------------------------------------------------
文件扩展名:.php
die('ACCESS DENIED!');?>
email=ask4more@13.net & nickname=redfox & realname=阿鼎 & url=http://NetNote.oso.com.cn & ...
...
----------------------------------------------------------------------
也许大家都看出来了,以.php做扩展名,并且文件的第一行是 die('ACCESS DENIED!');?>,这样就有效的阻止了对数据文件的非法访问。文件的第二行的格式都是: 变量名1=值1 & 变量名2=值2 & ...
提出所有的变量很简单,就是用函数 parse_str();
例如:
$theline="email=ask4more@13.net&nickname=redfox&realname=阿鼎&url=http://NetNote.oso.com.cn";
parse_str($theline);//分离出变量$email,$nickname,$realname,$url
echo "I am $nickname,my real name is $realname
";
echo "welcome to visit my website:$url
";
echo "email me at:$email";
?>
运行结果:
I am redfox,my real name is 阿鼎
welcome to visit my website:http://NetNote.oso.com.cn
email me at:ask4more@13.net
因此,本文约定,数据文本结构为:
----------------------------------------
die('ACCESS DENIED!');?>
变量名1=值1 & 变量名2=值2 & ...
文件扩展名: .php
----------------------------------------
真正的数据从第二行开始。好了,用这样的文件结构就可以很容易的实现GuestBook,BBS,甚至是社区的数据处理了:)我的主页“网络便签” http://netnote.oso.com.cn ,就是这样实现的。
为了方便广大网友,我编了几个函数,下面将作出必要的解释。当然你可以随便的修改和挎贝,但你必须保证功能的完整性。请将下面的代码存为 textfun.inc (当然取其它的名字也是一样的),在你要使用的文件的开始部分加入一行语句,你就可以使用我为你编的函数了。
下面一共一个db对象,一个函数p2row();
-------------textfun.inc----------------
class db{
var $dbfile;
function createdb($dbName){
$f=$dbName;
$this->$dbfile=$f;
$headInfo="\n";
$fp=fopen($f,"w");
fputs($fp,$headInfo);
fclose($fp);
chmod($f,0777);//修改文件的模式,在Unix下也可用
return(1);
}
function opendb($f){
$this->$dbfile=$f;
if(file_exists($f)){
return true;
}else{
$this->createdb($f);
}
}
function insertline($info){
$fields=explode("|",$info);
while(list($key,$val)=each($fields)){
$therow.="$val=\$".$val."&";
$var1.="\$".$val.",";
}
$var1.='$tail';
eval("global $var1;"); //为了取得环境变量
eval("\$therow=\"$therow\";");
$fp=fopen($this->$dbfile,"a");
fputs($fp,"$therow\n");
fclose($fp);
}
function readall($f){
if(file_exists($f)){
$this->$dbfile=$f;
$rows=file($f);
for($i=1;$i
}
return $temp;
}
}
//以倒序的方式读入所有的数据行
function revread($f){
if(file_exists($f)){
$this->$dbfile=$f;
$rows=file($f);
$d=count($rows);
$j=$d-1;
for($i=0;$i if($i $temprow=$rows[$i];
$rows[$i]=$rows[$j];
$rows[$j]=$temprow;
$j--;
}
}
for($i=0;$i
}
return $temp;
}
}
function close(){
$this=$nothing;
}
}
//把段落文本格式化为一行文本,便于存储
function p2row($t){
$t=nl2br(stripslashes(htmlspecialchars($t)));
for($i=0;$i
if(ord($c)==10) $c=" ";
$tempstr.=$c;
}
return $tempstr;
}
?>
----------------------------------
db是我们自定义的本文数据对象,包括六个方法:createdb(),opendb(),insertline(),readall().revread(),close();
db->createdb(string filename)
用法例:
include("textfun.inc");
$mydb=new db;
$mydb->createdb("UserInfo.php");
?>
这个方法创建了一个文件UserInfo.php,首行是 die('ACCESS DENIED!');?>
db->opendb(string filename)
用法例:
include("textfun.inc");
$mydb=new db;
$mydb->opendb("UserInfo.php");
?>
这个方法以追加模式“打开”了数据文件UserInfo.php,如果这个文件不存在,则被创建。
因此,这个方法可以取代createdb()方法。(但千万别删了class db{ }里面的createdb()函数哦:P)
db->insertline(string VarString)
用法例:
include("textfun.inc");
$theline="email=ask4more@13.net&nickname=redfox&realname=阿鼎&url=http://NetNote.oso.com.cn";
parse_str($theline);//构造环境变量
$mydb=new db;
$mydb->opendb("UserInfo.php");
$mydb->insertline("nickname|realname|email|url");
?>
db->insertline()可以将形如"nickname|realname|email|url"的字符串,分离出相应的环境变量,并以本文约定的形式存入文件。 传入insertline()的参数,一定要用“|”把环境变量名连成字符串,个数不限,但千万别在前面加"$"哦,嗯,就是要形如"nickname|realname|email|url"这样的字符串 :~)
array db->readall(string filename)
用法例:
include("textfun.inc");
$mydb=new db;
$allrec=$mydb->readall("UserInfo.php");
?>
readall()方法返回除首行( die('ACCESS DENIED!');?>)外所有数据的数组,每行对应于数组的一个元素。
array db->revread(string filename)
用法例:
include("textfun.inc");
$mydb=new db;
$allrec=$mydb->revread("UserInfo.php");
?>
revread()方法以倒序方式读入除首行( die('ACCESS DENIED!');?>)外所有数据,返回数组。这对我们在编留言本等时候尤为有用。
void db->close()
关闭db对象。
好了,我们现在就用db对象编一个最简单的留言本。
---------guestbook.php------------
我的留言本
include("textfun.inc");
if($Submit){
$thetime=date("Y-m-d h:m:s A");
$message=p2row($message);
$mydb=new db;
$mydb->opendb("msg.php");
$mydb->insertline("nickname|email|url|message|thetime");
//以下读出所有的数据
$allrecs=$mydb->revread("msg.php");
while(list($key,$theline)=each($allrecs)){
parse_str($theline);
?>
">
URL:">
Message:
}
$mydb->close();
}
?>
-----------------------------
好了,虽然这个留言本不是很美观,但主要是为了举例说明db对象的用法~:)
本文在WIN98+PWS+PHP4下调试通过!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

如果您是一位经验丰富的 PHP 开发人员,您可能会感觉您已经在那里并且已经完成了。您已经开发了大量的应用程序,调试了数百万行代码,并调整了一堆脚本来实现操作

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。
