著者: redfox 電子メール: ask4more@163.net
ホームページ: http://netnote.oso.com.cn
オンラインで無料の PHP スペースを申請する人は、ジュニア ユーザーであれば、通常、MySQL を持っていないと思います。を使用する場合、データ処理を解決する方法の 1 つはテキスト ファイルを使用することです。しかし、テキスト データを処理する最も速くて便利な方法は何でしょうか?
私の経験に基づいて、次のファイル構造が最適だと思います:
-------------------------------- -- -----------------------------------
ファイル拡張子: .php
!');?>
email=ask4more@13.net & Nickname=redfox & realname=A Ding& url=http://NetNote.oso.com.cn & ...
...
---- -------------------------------------- ----- ----------------
拡張子が .php で、ファイルの最初の行が すべての変数の提案は非常に簡単で、関数 parse_str() を使用するだけです
例:
< ;?
$theline="email=ask4more@13.net&nickname=redfox&realname=A Ding&url=http://NetNote.oso.com.cn";
parse_str($theline);// 個別の変数 $email,$nickname, $ realname,$url
echo "私は $nickname、私の本名は $realname
";
echo "私のウェブサイトへようこそ:$url
";
echo "$email にメールしてください"; ; したがって、この記事はデータ テキスト構造が次のとおりであることに同意します。 ----
die('ACCESS DENIED!');?>
変数名 1 = 値 1 & 変数名 2 = 値 2 & ...
ファイル拡張子: .php
---- -- ----------------------------------
2行目からが実際のデータです。このファイル構造を使用すると、GuestBook、BBS、さらにはコミュニティ データ処理を簡単に実装できます:) 私のホームページ「Netnote」http://netnote.oso.com.cn はこの方法で実装されています。
大多数のネチズンが使いやすいように、いくつかの機能をまとめました。必要な説明を以下に示します。もちろん、必要に応じて変更して実装できますが、機能の整合性を確保する必要があります。次のコードを textfun.inc という名前で保存し (もちろん他の名前でも同じです)、目的のファイルの先頭にステートメント の行を追加してください。使用するには、私があなたのためにコンパイルした関数を使用できます。
以下に db オブジェクト、関数 p2row() があります
-------------textfun.inc----------------
<
クラス db{
関数 createdb($dbName){
$this->$dbfile=$f;アクセスが拒否されました !');?>n";
$fp=fopen($f,"w");
fputs($fp,$headInfo);
fclose($fp);
chmod($f,0777 ); // ファイル モードを変更します (Unix でも利用可能)
return(1) }
function opendb($f){
if(file_exists($f)) {
trueを返す; return true; list ($key,$val)=each($fields)){
$therow.="$val=$".$val."&"; ".$val.",";
}
$var1.='$tail';
eval("global $var1;"); //環境変数を取得するため
eval("$therow="$therow ";");
$fp=fopen( $this->$dbfile,"a");
fclose($fp); f){
if(file_exists($f) ; =$rows[$i];
}
return $temp;
}
}
//すべてのデータ行を逆順に読み取ります
function revread($f){
if(file_exists($f)){ -$ This-& gt; $ dbfile = $ f;
$ d = カウント ($ 行); ;
for ($ i = 0; $; $; $; $; $; $; $; i if($i $temprow=$rows[$ i];
$rows[$i]=$rows[$j];
$rows[$ j]=$temprow;
関数 p2row($t){
$t=nl2br (stripslashes(htmlspecialchars($t)));
for($i=0;$i
$tempstr.=$c
}
$tempstr;
?>
—————————————————————————————————————————— —————————
db はこの記事用にカスタマイズされたデータ オブジェクトで、createdb()、opendb()、insertline()、readall().revread()、close() の 6 つのメソッドが含まれます。
db->createdb(string filename)
使用例:
$mydb=new db;
$mydb->createdb("UserInfo.php"); ?>
このメソッドは UserInfo.php を作成します。最初の行は < die('ACCESS DENIED!');?>
db->opendb(string filename)
使用例:
include("textfun.inc"); mydb->opendb("UserInfo.php");
?> このメソッドは、ファイルが存在しない場合、データ ファイルを「開きます」。それは作成されます。
したがって、このメソッドは createdb() メソッドを置き換えることができます。 (ただし、クラス db{ } の createdb() 関数は削除しないでください :P)
db->insertline(string VarString)
使用例:
include("textfun.inc");
$theline ="email=ask4more@13.net&nickname=redfox&realname=Ading&url=http://NetNote.oso.com.cn";
parse_str($theline);//環境変数を構築する
$mydb=new db; $mydb- >opendb("UserInfo.php"); $mydb->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");
$allrec=$mydb->revread("UserInfo. php");
?>
revread() メソッドは、最初の行 ( die('ACCESS DENIED!');?>) を除くすべてのデータを逆の順序で読み取り、配列を返します。これはゲストブックなどを書くときに特に便利です。
void db->close()
db オブジェクトを閉じます。
それでは、db オブジェクトを使用して最も単純なゲストブックをコンパイルします。
---------guestbook.php------------
私の遺言本
<フォーム名=form1 アクション=>
ニックネーム:<入力タイプ=テキスト名=ニックネーム>
電子メール:
ホームページ:
メッセージ:<テキストエリア名=メッセージcols=30行=12>テキストエリア>
<入力タイプ=送信名=送信値=提交>
フォーム>
include("textfun.inc");
if($Submit){
$thetime=date("Y-m-d h:m:s A");
$message=p2row($message);
$mydb=新しいデータベース;
$mydb->opendb("msg.php");
$mydb->insertline("ニックネーム|メール|URL|メッセージ|時刻");
//以下にすべてのデータを示します
$allrecs=$mydb->revread("msg.php");
while(list($key,$theline)=each($allrecs)){
parse_str($theline);
?>
URL:
メッセージ:
}
$mydb->close();
}
?>
-----------------------------
好了,虽然这个留言本不是很美观,但主是為了举例说明db对象的使用法~:)
本文はWIN98+PWS+PHP4下调试通过!