<入力タイプ=送信値> テーブル> ?> 上記のプログラムが実行されると、まず変数 alias と msg にデータがあるかどうかが確認されます。データがない場合は、メッセージを入力するためのフォームがユーザー側に送信され、ユーザーがメッセージを入力します。 ユーザーがメッセージを入力して「メッセージ送信」ボタンをクリックすると、プログラムの前半が実行されます。 プログラムは大きく5つの部分に分かれています 1..Oracleが必要とする環境変数を設定します 2..Oracleデータベースに接続します 3..データを整理してOracleに送信します 4..接続を終了しますwith Oracle 5.. プログラムを終了し、最新のメッセージデータを表示します Oracle の環境設定セクションでは、PHP 関数 putenv() を使用して、オペレーティング システム層で環境変数を設定します。中国語を使用するには、必ず次の行を追加してください putenv("NLS_LANG=american_taiwan.zht16big5"); その後、Oracle ライブラリの関数 ora_logon() などを使用します。詳細については、「Oracle データベース ライブラリ」を参照してください。この関数ライブラリを利用することで、Oracleデータベースを簡単に操作することができます。 次のステップは、データを整理して Oracle データベースに入れることです $serial=md5(uniqid(rand())); $id=$PHP_AUTH_USER; $REMOTE_ADDR; $msg=base64_encode($msg); $flag="1"; $query="ゲストブック (シリアル、参照、ID、エイリアス、IP、メール、メッセージ、フラグ) に挿入します。 ('$serial', '$ref', '$id', '$alias', '$ip', sysdate, '$email', '$msg', '$flag')"; $serial変数は一意である プログラムは最初に一意の文字列をランダムに生成し、次に md5 エンコーディングを使用して文字列を混乱させ、ハッシュに似た意味のない文字列を形成します。文字列は長くて乱雑であるため、ユーザー、特にハッカーやハッカーがシリアル番号を使用してシステムを侵入するのを防ぎます。 $ref 変数は現在無効です。 $id 変数はユーザー認証に使用されます。プログラムの先頭にユーザー認証用のプログラムがある場合、$PHP_AUTH_USER がユーザーのアカウントとなり、$id 変数に渡されます。 ユーザーが記述した文字列については、データベースや処理の複雑さを避けるために、BASE64でエンコードすることをお勧めします。もちろん、これは鋸と矢の方法ですが、高速な実行と簡単な変更が最も重要です。エネルギーを無駄にする必要はありません。これらの中国語コードの処理に問題があります。 BASE64 エンコードを使用すると、文字列が約 1/3 拡張されることに注意してください。データベースのストレージ容量が限られている場合、この方法は適さない可能性があります。また、現在、ハードディスクはわずか 12 GB ベースで安価です。上記では、限られたデータベーススペースの問題を考慮する必要はありません。 最後に、データベースが SQL 命令を実行するために使用できるように、変数を $query 文字列に編成します。 ora_parse($cursor, $query) または die; ora_exec($cursor); ora_logoff($handle); Oracle の SQL 命令を実行する前に、まず解析アクションを実行する必要があります。 。 @ を先頭に追加すると (例: @ora_prase();)、ユーザーにエラー メッセージが表示されないようにすることができます。 query コマンドの実行後、Oracle への接続を閉じることができます。 Header("Location: ./index.php"); exit; これらの 2 行により、ブラウザは Index.php にリダイレクトされます。ユーザーに新しいメッセージの表示を許可すると、メッセージ アクションが完了します。 メッセージ内容表示プログラムについては後ほど見てみましょう。 メッセージボード /head> file://------------------------------------- //メッセージ表示プログラムindex.php // 著者: Wilson Peng // Copyright (C) 2000 file://---------------------- -- --- $WebmasterIPArray = ay( "10.0.1.30", // マネージャー A のマシン IP "10.0.2.28" // マネージャー B のマシン IP $WebmasterIP= for ($ i=0; $i if ($REMOTE_ADDR == $WebmasterIPArray[$i]) } 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); $gu estbook[$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 "新增留言.... "; 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." href=index.php?".($page-1)."><上页 - "; $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."- href=index.php?".($page+1).">下页> "; $pagestr="
$pagestr
"; echo "".$pagestr."
"; for ($i=$start; $i<$end; $i++) echo "< ;p>
"; echo "
".$guestbook[$i][5]." ($guestbook[$i][6]!="") echo " href=mailto:".$guestbook[$i][6]."> echo ""; .$guestbook[$i][3]." "; if ($guestbook[$i][6]!="") echo ""; br> "; if ($WebmasterIP) echo " href=erase.php?".$guestbook[$i][0].">この記事を削除します!! $guestbook[$i][2].") "; echo "from: ".$guestbook[$i][4]."
"; $msg=base64_decode($guestbook[$i][7]); $msg=nl2br($msg); echo "
} echo "
"; echo $pagestr; ?> メッセージ内容が多くネットワークが遅い場合、回線が遅いとデータベース全体が遅くなる可能性がありますので、必要なデータを取得したらすぐにデータベースを閉じてください。 プログラムは 4 つの部分に分かれています 1.. 初期化 2.. データベース内のデータを取得します 3.. 必要なページ数を計算します。表示されます 4..データを送信します このプログラムはBIGLOBE上で実施されており、設定中に 接続または専用線にダイヤルした会員のみが閲覧できます。 アカウントとパスワードを入力する必要があります。入る前に。ご興味がございましたら、参考までに BIGLOBE ダイヤルアップ アカウントを購入してみてはいかがでしょうか。コメント投稿者のプライバシー保護のため、メッセージにはモザイク処理をしております。 $WebmasterIPArray = array( "10.0.1.30", // マネージャー A のマシン IP "10.0.2.28" // マネージャー B のマシン IP ); 0; $i if ($REMOTE_ADDR == $WebmasterIPArray[$i]) $WebmasterIP=true; // 後で Oracle プログラムを初期化します 表示プログラムとメッセージ プログラムは似ていますが、表示プログラムには Web マスターのコンピュータを設定する機能が追加されています。 $WebmasterIPArray 配列変数に Web マスターが使用する IP アドレスを追加すると、メッセージを表示するときにメッセージを削除するための文字列が表示され、不適切なメッセージの処理が容易になります。 $handle=ora_logon("user38@WWW","iam3849") または die; $cursor=ora_open($handle); $query="SELECT シリアル、参照、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)または死ぬ; ora_exec($cursor); $i=0; while(ora_fetch($cursor)) { $guestbook[$i][0] = ora_getcolumn($cursor,0); 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][6] = ora_getcolumn($cursor,6); $guestbook[$i][7] = ora_getcolumn($cursor,7); ora_close($cursor);初期化後、Oracle データベースに接続し、メッセージ データを $guestbook 配列に取得できます。データを取得したら、すぐにデータベースを閉じて、$guestbook 配列内のデータを処理します。 if ($QUERY_STRING!="") { $page = $QUERY_STRING; } else { $page = 0; このプログラムは、どのページを表示するかを決定します。 .ページ。 3 番目のページを表示するには、http://xxxxxx/index.php?2 の形式を使用する必要があります。つまり、$QUERY_STRING などを渡す必要があります。表示されるページ番号とペン番号のデータを処理するために、次の数行のプログラムが使用されます。 $msgnum=20; // ページごとに 20 個のペン ページごとに表示されるペンの数を変更するには、$msgnum 変数を変更します。プログラムのデフォルトは 20 トランザクションです。 for ($i=$start; $i<$end; $i++) { echo "
"; echo "
;".$guestbook[$i][5]." "; if ($guestbook[$i][6]!="") echo " href=mailto:"。 $guestbook[$i][6].">"; エコー "".$guestbook[$i][3]." ";if ($guestbook[$i][6]!="") echo ""; echo " "; if ($WebmasterIP) echo "この記事を削除!! (".$guestbook[$i][2].") "; echo "from: ".$guestbook[$i][4]."
"; $msg=base64_decode($guestbook[$i][7] ); $msg=nl2br($msg); echo $msg; } このプログラムは、ユーザーにメッセージ データを表示するプログラムです。 for ループを使用して、設定されたページ数に従って $guestbook 配列からデータを抽出し、ユーザーに表示します。メッセージを読み取るマシンの IP が $WebmasterIPArray 変数配列の要素である場合、メッセージ送信者の匿名名の後に「この記事を削除します!!」という文字列が表示され、管理者が不適切な記事を削除できることに注意してください。メッセージ。 以下はメッセージを削除するプログラムです。 file://-------------------------- // メッセージ削除プログラムerase.php / /著者: Wilson Peng // Copyright (C) 2000 file://------------------------------------- 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); $query="UPDATE ゲストブック set flag='0' where serial='".$QUERY_STRING."'"; ora_parse($cursor, $query) または die ora_close ( $cursor); ora_logoff($handle); Header("Location: ./index.php"); 実際、このプログラムは非常に簡単です。シリアル番号を持つデータのフラグ フィールドを 0 に設定するだけです。実際にデータベースからデータを削除する必要はありません。
声明: この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。