私の経験に基づいて、次のファイル構造が最適だと思います:
--------------------------------- - --------------------------------------
ファイル拡張子:.php
die('アクセスが拒否されました!');?>
email=ask4more@13.net & ニックネーム=redfox & realname=A Ding & url=http://NetNote.oso.com.cn & ...
...
------------------------------------- --- --------------------------------
おそらく、拡張子として .php が使用されていることが誰でもわかるでしょう。ファイルの最初の行は で、データ ファイルへの不正なアクセスを効果的に防止します。ファイルの 2 行目の形式は次のとおりです: 変数名 1 = 値 1 & 変数名 2 = 値 2 &...
すべての変数の提案は非常に簡単で、関数 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 "私の Web サイトへようこそ:$url< ;br> ;";
echo "email me at:$email";
?>
操作結果:
私はレッドフォックス、本名は A Ding です
私の訪問へようこそウェブサイト: http://NetNote.oso.com.cn
メールでご連絡ください:ask4more@13.net
したがって、この記事では、データ テキスト構造が次のとおりであることに同意します:
---- ---- --------------------------------
変数名 1 = 値 1 & 変数名 2 = 値 2 &...
ファイル拡張子: .php
----------- - ------------------------
2行目からが実際のデータです。このようなファイル構造を使用すると、GuestBook、BBS、さらにはコミュニティ データ処理さえも簡単に実装できます:) 私のホームページ「Netnote」 http://netnote.oso.com.cn はこの方法で実装されています。
大多数のネチズンの利便性を高めるために、いくつかの機能をまとめました。必要な説明は以下で行います。もちろん、必要に応じて変更して実装できますが、機能の整合性を確保する必要があります。次のコードを textfun.inc という名前で保存し (もちろん他の名前も同じです)、ファイルの先頭に というステートメントを追加してください。私があなたのためにコンパイルした関数を使用できます。
db オブジェクトと関数 p2row() があります
-------------textfun.inc------------ ---
クラス db{
var $dbfile;
関数 createdb($dbName){
$this->$ dbfile; =$f;
$headInfo="n";
$fp=fopen($f,"w"); $fp,$headInfo);
fclose($fp);
chmod($f,0777);//Unix でも使用可能なファイル モードを変更します。
return(1);
function opendb($f){
$this->$dbfile=$f;
if(file_exists($f)){
return true;
> $this->createdb($f);
}
}
function insertline($info){
$fields=explode("|",$info); (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");
fclose( $fp );
}
function readall($f){
if(file_exists($f)){
$this->$dbfile=$f; $f);
for($i=1;$i
戻り値$temp;
}
}
//すべてのデータ行を逆順に読み取ります
function revread($f){
if(file_exists($f)){
$this ->$dbfile=$f;
$rows=file($f);
$j=$d-1; i=0;$i if($i $temprow=$rows[$i];
$rows[ $i]=$ rows[$j];
$rows[$j]=$temprow;
$j--; $i
}
return $temp; }
}
関数 close(){
$this=$ nothing;
}
}
//便宜上、段落テキストを 1 行のテキストにフォーマットします。 Storage
function p2row($t){
$t=nl2br(stripslashes( htmlspecialchars($t)));
for($i=0;$i
$tempstr.=$c;
}
return $tempstr;
?>
—————————————————————————————————————— ————————————— これは、この記事用にカスタマイズしたデータ オブジェクトであり、createdb()、opendb()、insertline()、readall().revread()、close() の 6 つのメソッドが含まれています。 ;
db->createdb(string filename)
使用例:
include("textfun.inc");
$mydb=new db; mydb->createdb("UserInfo.php");
?>
このメソッドはファイル UserInfo.php を作成します。最初の行は です。
db->opendb(string filename)
使用例:
include("textfun.inc");
$mydb=new db; ->opendb("UserInfo.php");
?>
このメソッドは、データ ファイル UserInfo.php が存在しない場合は作成されます。
したがって、このメソッドは createdb() メソッドを置き換えることができます。 (ただし、クラス db{ } の createdb() 関数は削除しないでください :P)
db->insertline(string VarString)
使用例:
include( "textfun? .inc");
$theline="email=ask4more@13.net&nickname=redfox&realname=A Ding&url=http://NetNote.oso.com.cn";
parse_str($theline); //構築環境変数
$mydb=new db;
$mydb->opendb("UserInfo.php");
$mydb->insertline("nickname|realname|email|url" ); 🎜> ?>
db->insertline() は、対応する環境変数を「ニックネーム|実名|電子メール|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=新しいデータベース;
$mydb->opendb("msg.php");
$mydb->insertline("ニックネーム|メール|URL|メッセージ|時刻");
//以下にすべてのデータを示します
$allrecs=$mydb->revread("msg.php");
while(list($key,$theline)=each($allrecs)){
parse_str($theline);
?>
< ;br>
URL:
メッセージ:
}
$mydb->close();
}
?>
-----------------------------
好了,虽然这个留言本不是很美观,主但是為了例明db オブジェクトの使用法~:)
本文は WIN98 PWS PHP4 下调试通!