ほとんどの Web サイトはユーザーとのインタラクティブな関係を考慮します。現時点では、メッセージ ボード機能を使用して、ユーザーが Web サイトへの訪問または Web サイトとのやり取りに関する情報を残すことができます。 デザインの面では、ユーザーからの短いメッセージのみを残す非常にシンプルなデザインもあれば、非常に複雑で性質に応じて分類されるようにデザインすることもできます Web BBS システム。もちろん、自分の Web サイトに掲示板を作成する方法は、Web サイトの性質と Web Web サイト開発者の創意工夫に依存します。 ここで紹介する例は、すべてのメッセージの内容を単純にリストしたものです。ユーザーが一度に複数のメッセージを表示するための情報。システムのバックエンドは、 Oracle 7.x バージョンのデータベース システムを使用してメッセージを保存します。この例のデータベース (データベース) の名前は WWW 、接続されているユーザー アカウントは user38 、パスワードは iam3849 です。この例を直接使用するには、まず次の SQL コマンドを実行して、 ゲストブック のデータ テーブルを作成する必要があります。 CREATE TABLE ゲストブック ( serial varchar2(255) not null、 ref varchar2(255) null、 id char(8) not null 、 alias varchar2(32) not null、 ip varchar2(1024) null、 msgdatedate not null、 email varchar2(1024) null、 msg varchar2(2000) not null、 flagchar(1) デフォルト 1、 主キー (シリアル) ); 上記 SQL 各フィールドの説明と詳細を以下の表に示します シリアル番号 フィールド 名前 レコードタイプ レコード長 フィールドの説明 制限 キー 0 シリアル番号 シリアル varchar2 255 NN PK 1 参照シリアル番号 ref varchar2 255 一時的に予約されています。返信メッセージ機能の場合 2 アカウント id char 8 ユーザーアカウント NN 3 anonymous alias varchar2 32 表示名 NN 4 url ip varchar2 1024 インターネット IP 5 時刻 msgdate date NN 6 メール email varchar2 1024 7 メッセージ内容 msg varchar2 2000 NN 8 表示フラグ flag char 1 0: 表示しない 1: 表示する ( デフォルト ) このセクションの掲示板関連プログラムでは、ユーザー認証機能が追加されている場合、 ゲストブック データに追加されています。表 ウェブマスター が今後不適切な送信者を見つけやすくするために、アカウント列にユーザーの認証アカウントを残しておきます。練習が必要な読者のために、ここにフィールドを残しておきます。 このセクションのプログラムを使用するには、まず Oracle 7.x バージョンをインストールし、 Web サーバー SQL*net は、 Oracle データベースに正常に接続できます。後で、 PHP をコンパイルするときに、 --with-oracle=/home/oracle/product/7.3.2 オプションを追加します。もちろん、そのパスが実際に Oracle のパスである限り、別のパスに変更しても問題ありません。 Oracle のインストールと使用方法の詳細については、関連する書籍を参照してください。 次のプログラムは、ユーザーのメッセージ情報を ゲストブック メッセージ データ テーブルに追加します。ユーザー認証機能を設定したい場合は、プログラムの開始時にチェックを入れることで、メッセージを送信した本人であることを確認することができ、メッセージを読むときに本人確認を行う必要はありません。この設定により、不適切なコメントを防止できますが、メッセージ機能の利用が一部の人に限定されるわけではありません。 //-------------------------- - // メッセージ プログラムの追加 addmsg.php // 著者: Wilson Peng // Copyright (C) 2000 //- - ------------------------- // // ここに ID チェック機能を追加できます。自分自身 // if (($alias!="") and ($msg!="")) { putenv("ORACLE_SID=WWW"); > putenv("NLS_LANG=american_taiwan.zht16big5"); putenv("ORACLE_HOME=/home/oracle/product/7.3.2"); putenv("LD_LIBRARY_PATH=/home/oracle/product/7.3. 2 /lib"); putenv("ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data"); putenv("ORA_NLS32=/home/oracle/product/ 7.3 .2/ocommon/nls/admin/data"); $handle=ora_logon("user38@WWW","iam3849") 死ぬか; $cursor=ora_open($handle); ora_commitoff($handle); $serial=md5(uniqid(rand())); $id=$PHP_AUTH_USER; ip =$REMOTE_ADDR; $msg=base64_encode($msg); $flag="1" $query="ゲストブックに挿入(シリアル, ref, id, ip, msgdate, email , msg, flag) value('$serial', '$ref', '$id', '$alias', '$ip', sysdate, '$email', '$msg', '$flag') " ; ora_parse($cursor, $query) or die; ora_exec($cursor); ora_close($cursor); ora_logoff($handle); Header("場所: ./index.php"); exit; ?> head> メッセージを入力してください ><フォームメソッド=POSTアクション=" echo $PHP_SELF; ?>">
;td nowrap> ; コード名 メール type=text name=email size=18> コンテンツ "> "> ?php } ?> 上記のプログラムが実行されると、最初に変数 エイリアス および msg 情報があるかどうかを確認します。情報がない場合は、メッセージを入力するためのフォームがユーザーの端末に送信され、ユーザーがメッセージを入力します。 ユーザーがメッセージを入力したら、 " メッセージを送信 " ボタンを押すと、プログラムの前半が実行されます。 プログラムは大きく5つのパートに分かれています 構成 Oracle 必要な環境変数 への接続 Oracle データベース データを整理して Oracle に送信します で終了Oracle の接続 プログラムを終了し、最新のメッセージ情報を表示 Oracle 環境の構成では、 PHP 関数 putenv( ) では、オペレーティング システム層で環境変数を設定できます。中国語を使用するには、必ず次の行を追加してください putenv("NLS_LANG=american_taiwan.zht16big5"); を使用してください。 > Oracle 関数ライブラリ関数 : ora_logon() など。詳細については、「 Oracle データベース関数ライブラリ」を参照してください。この関数ライブラリを使用すると、 Oracle データベースを簡単に操作できます。 次のステップは、データを整理して Oracle データベース $serial=md5(uniqid(rand())); $id=$PHP_AUTH_USER; $msg=base64_encode ($msg); $flag="1" $query="ゲストブック (シリアル、参照、ID、エイリアス、IP、msgdate、メール、メッセージ、フラグ) の値に挿入します( '$serial' , '$ref', '$id', '$alias', '$ip', sysdate, '$email', '$msg', '$flag')"; $serial 変数は一意の文字列です。プログラムは最初に一意の文字列をランダムに生成し、それを md5 でエンコードして文字列を混乱させ、ハッシュのような意味のない文字列。この文字列は長くて乱雑であるため、ユーザー、特にハッカーやフリークがシリアル番号を使用してシステムをクラックするのを防ぐことができます。 $ref 変数は現在無効です。 $id 変数は、プログラムの先頭にユーザー認証プログラムを追加する場合、 $PHP_AUTH_USER として使用されます。ユーザーのアカウントは $id 変数に渡されます。 ユーザーが記述した文字列については、データベースや処理の複雑化を避けるため、 BASE64 でエンコードするだけです。もちろん、これは鋸と矢の方法ですが、 Web プログラムの場合、高速実行と簡単な変更が重要です。最も重要なことは、これらの中国語のコーディングの問題に対処するためにエネルギーを浪費する必要がなくなることです。データベースのストレージ容量が限られている場合、 BASE64 エンコードを使用すると、文字列が約 1/3 拡張されることに注意してください。この方法には適していない可能性があります。また、最近のハードディスクは安価であり、数十 GB を超えるため、データベース容量が限られているという問題は発生しません。考慮された。 最後に、変数を $query データベース実行用の文字列 に整理します。 SQL コマンド。 ora_parse($cursor, $query) または、 ora_exec($cursor); ora_logoff($handle); Oracle の SQL コマンドを実行する前に、まず次の手順を実行する必要があります。 解析 ステップ。 @ ( のような : @ora_prase();) を追加すると、ユーザーにエラー メッセージが表示されないようにすることができます。 query コマンドを実行した後、 Oracle との接続を閉じることができます。 Header("Location: ./index.php"); exit; これらの 2 行により、ブラウザは次のようにリダイレクトされます。 index.php 。ユーザーが新しいメッセージを閲覧できるようにすると、メッセージを残すステップが完了します。 メッセージ内容表示プログラムについては後ほど見てみましょう。 ; メッセージボード //--------------- // メッセージ表示プログラム index.php // 著者: Wilson Peng // Copyright (C) 2000 //--------------------------- $WebmasterIPArray = array( "10.0.1.30", // 管理人员甲的机器 IP "10.0.2.28" // 管理人员乙的机器 IP ); $WebmasterIP=false; for ($i=0; $i if ($REMOTE_ADDR == $WebmasterIPArray[$i]) $WebmasterIP=true; } putenv("ORACLE_SID=WWW"); putenv("NLS_LANG=american_taiwan.zht16big5"); putenv("ORACLE_HOME=/home/oracle/product/7.3.2"); putenv("LD_LIBRARY_PATH=/home/oracle/product/7.3.2/lib"); putenv("ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data"); putenv("ORA_NLS32=/home/oracle/product/7.3.2/ocommon/nls/admin/data"); $handle=ora_logon("user38@WWW","iam3849") or die; $cursor=ora_open($handle); ora_commitoff($handle); $query="SELECT serial, ref, id, alias, ip, TO_CHAR(msgdate, 'yyyy/mm/dd hh:mi:ss'), email, msg FROM guestbook where flag='1' order by msgdate desc"; ora_parse($cursor, $query) or die; ora_exec($cursor); $i=0; while(ora_fetch($cursor)) { $guestbook[$i][0] = ora_getcolumn($cursor,0); $guestbook[$i][1] = ora_getcolumn($cursor,1); $guestbook[$i][2] = ora_getcolumn($cursor,2); $guestbook[$i][3] = ora_getcolumn($cursor,3); $guestbook[$i][4] = ora_getcolumn($cursor,4); $guestbook[$i][5] = ora_getcolumn($cursor,5); $guestbook[$i][6] = ora_getcolumn($cursor,6); $guestbook[$i][7] = ora_getcolumn($cursor,7); $i++; } ora_close($cursor); ora_logoff($handle); echo "新增留言 .... \n"; if ($QUERY_STRING!="") { $page = $QUERY_STRING; } else { $page = 0; } $i=count($guestbook); $msgnum=20; //
每页二十条 $start = $page * $msgnum; $end = $start + $msgnum; if ($end > $i) $end=$i; $totalpage=$i/$msgnum; $pagestr=""; if ($page>0) $pagestr=$pagestr."< 上页 - "; $pagestr=$pagestr."[ 第 "; for ($i=0; $i<$totalpage; $i++) { if ($i!=$page) { $pagestr = $pagestr."".($i+1)." "; } else { $pagestr = $pagestr.($i+1)." "; } } $pagestr=$pagestr." 页 ] "; if ($page<($totalpage-1)) $pagestr=$pagestr."- 下页 > "; $pagestr="$pagestr
"; echo "".$pagestr."
n"; for ($i=$start; $i<$end; $ i++) { echo "
n"; echo "
n".$guestbook[$i][5] ." "; if ($guestbook[$i][6]!="") echo ""; echo "".$guestbook[$i][3]." "; if ($guestbook[$i][6]!="") echo " a>"; echo " n"; if ($WebmasterIP) echo "
删除本篇 !! (".$guestbook[$i][2].") "; echo "from: ".$guestbook[$i][4]."< /font>gt;n"; $msg=base64_decode($guestbook[$i][7]); $msg=nl2br($msg); echo $msg; エコー "
n"; エコー "
n"; ?> 在显示留言的部份,考虑到留言内容若很多,加上网络话
程序分成四部份 初初期化 取データ据库中の资料 計算要表示の页数 送出料 $WebmasterIPArray = array( "10.0.1.30", // 管理者员甲的机 IP "10.0.2.28" // 管理者员エチルの机 IP ); $WebmasterIP=false; 0; $iif ($REMOTE_ADDR == $WebmasterIPArray[$i]) } その後初化 Oracle 程序略 显示程序と留言程序の初期化部份都差不多,但显示 ウェブマスター が使用する IP アドレス を構成する機能が追加されました。 は、 $WebmasterIPArray の数グループに追加され、留言を表示するときに、不適切な留言を処理するために、留言を削除した文字列を表示できます。 >$handle=ora_logon("user38@WWW","iam3849") さもなければ死ぬ; $cursor=ora_open($handle); ora_commitoff($handle); $query="SELECT シリアル、参照、ID、エイリアス、IP、TO_CHAR(msgdate, 'yyyy/mm/dd hh:mi:ss')、電子メール、メッセージ FROM ゲストブック where flag='1' msgdate desc で並べ替えます"; ora_parse($cursor, $query) または die; ora_exec($cursor); $i=0; while(ora_fetch($cursor)) { $guestbook[$i][0] = ora_getcolumn($cursor,0); $guestbook[$i][1] = ora_getcolumn($cursor,1); ; $guestbook[$i][2] = ora_getcolumn($cursor,2); $guestbook[$i][3] = ora_getcolumn($cursor,3); i][4] = ora_getcolumn($cursor,4); $guestbook[$i][5] = ora_getcolumn($cursor,5); $guestbook[$i][6] = ora_getcolumn( $cursor,6); $guestbook[$i][7] = ora_getcolumn($cursor,7) } ora_close($cursor); ($handle); 初期化後、 Oracle データベースに接続し、メッセージ情報を取得して $guestbook 配列内。データを取得したら、すぐにデータベースを閉じて、 $guestbook 配列内のデータを処理します。 if ($QUERY_STRING!="") { $page = $QUERY_STRING; } else { $page = 0; 🎜> このプログラムは、どのページを表示するかを決定します。デフォルト値は最初のページを表示することです。 3 番目のページを表示するには、 http://xxxxxx/index.php?2 の形式を使用する必要があります。つまり、 $QUERY_STRING を渡す必要があります。 など。次のプログラム行は、表示されるページ数と項目数を処理するために使用されます。 $msgnum=20; // 1 ページあたり 2 項目 変更予定各ページに表示される項目の数は、 $msgnum 変数で変更できます。プログラムのデフォルト値は 20 バーです。 for ($i=$start; $i<$end; $i++) { echo "
n"; echo "n".$guestbook[$i][5]." "
if ($guestbook[$i][6] !="") echo ""; echo "".$guestbook[$i][3] ]." "; if ($guestbook[$i][6]!="") echo " "; echo " ; if ($WebmasterIP) echo " この記事を削除 ! ! (".$guestbook[$i][2].") "; echo "from: ".$guestbook[$i][ 4]."
n"; $msg=base64_decode($guestbook[$i][7]);
$msg=nl2br($msg); echo $msg; エコー ""
このプログラムは、実際にユーザーにメッセージ情報を表示するプログラムです。 for ループを使用して、構成されたページ数に従って $guestbook 配列からデータを抽出し、ユーザーに表示します。 。メッセージを読み取るマシンの IP が $WebmasterIPArray 変数配列の要素である場合、言及する価値があります。 「 この記事を削除 !!」 がコメント投稿者の匿名名の後に表示され、管理者が削除できるようになります不適切なコメント。 メッセージを削除する手順は次のとおりです。 //-------------------------- - // メッセージ削除プログラム Erase.php // 著者: Wilson Peng // Copyright (C) 2000 //-- ------------------------ putenv("ORACLE_SID=WWW"); putenv("NLS_LANG=american_taiwan.zht16big5") ; putenv("ORACLE_HOME=/home/oracle/product/7.3.2"); putenv("LD_LIBRARY_PATH=/home/oracle/product/7.3.2/lib"); ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data"); putenv("ORA_NLS32=/home/oracle/product/7.3.2/ocommon/nls/admin/data " ); $handle=ora_logon("user38@WWW","iam3849") または、 $cursor=ora_open($handle); ora_commitoff($handle); $query="UPDATE guestbook set flag='0' whereserial='".$QUERY_STRING."'"; ora_parse($cursor, $query) または die; ora_exec($cursor ) ; ora_close($cursor); ヘッダー("場所: ./index.php"); 実際、この手順は非常に簡単です。 Oracle データベースを開き、ピースの を入力するだけです。フラグ 0 に設定されます。実際にデータベースからデータを削除する必要はありません。
声明: この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。