ホームページ php教程 php手册 PHPゲストブック(Oracleデータベースのページング表示機能付き)

PHPゲストブック(Oracleデータベースのページング表示機能付き)

Jun 21, 2016 am 09:15 AM
gt lt oracle quot

oracle|ページネーション|データ|データベース|表示

ほとんどの Web サイトでは、ユーザーとのインタラクティブな関係が考慮されています。現時点では、メッセージ ボード機能を使用して、ユーザーが訪問に関するメッセージや Web サイトとの対話型メッセージを残すことができます。
デザインの面では、ユーザーからの短いメッセージを残すだけの非常にシンプルなものもあれば、性質に応じて分類された非常に複雑な Web BBS システムにデザインすることもできます。もちろん、自分の Web サイトに掲示板を作成する方法は、Web サイトの性質と Web 開発者の創意工夫によって異なります。

ここで紹介した例は、すべてのメッセージの内容を単純にリストしたものです。ユーザーは複数のメッセージの情報を一度に表示できます。システムのバックエンドは、Oracle バージョン 7.x データベース システムを使用してメッセージを保存します。この例のデータベース名は WWW、接続されたユーザー アカウントは user38、パスワードは iam3849 です。この例を直接使用するには、まず次の SQL コマンドを実行してゲストブック データ テーブルを作成する必要があります。

CREATE TABLE ゲストブック (
serial varchar2(255) null ではありません、
ref varchar2(255) null、
id char(8) not null、
alias varchar2(32) not null、
ip varchar2(1024) null、
msgdate date not null、
email varchar2(1024) null、
msg varchar2(2000) not null、
flag char(1) default 1、
primary key(serial)
);



上記の SQL フィールドを参照してください。説明と詳細については、以下の表を参照してください

シリアル番号フィールド名 データ形式 データ長 フィールドの説明 制限キー
0 シリアル番号 Serial varchar2 255 NN PK
1 シリアル番号を参照 ref varchar2 255 一時的に予約されています。メッセージ返信用
2 アカウント ID char 8 ユーザーアカウント NN
3 匿名エイリアス varchar2 32 表示名 NN
4 ウェブサイト 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 オプションを追加する必要があります。もちろん、別のパスに変更しても問題ありません。 path は実際には Oracle のパスです。 Oracle のインストールと使用方法の詳細については、関連する書籍を参照してください。

次のプログラムは、ユーザーのメッセージ情報をゲストブックのメッセージ データ テーブルに追加します。ユーザー認証機能を設定したい場合は、プログラムの開始時にチェックを入れることでメッセージを送信した本人であることを確認することができ、メッセージを読む際に本人確認を行う必要はありません。この設定により、不適切なコメントを防止できますが、メッセージ機能の利用が一部の人に限定されるわけではありません。


file://--------------------------
// メッセージプログラム追加 addmsg.php
//著者: Wilson Peng
// Copyright (C) 2000
file://--------------------------
//
// あなたここに本人確認機能を追加できます
//
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);

$serial=md5(rand ()); );
$id=$PHP_AUTH_USER;
$msg=base64_encode($msg);シリアル、ref、id、エイリアス、ip、
msgdate、電子メール、msg、フラグ)values('$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("Location: ./index.php");

} else {

; <br></head> <br><body bgcolor=ffffff> <br><form method=POST action="<? echo $PHP_SELF; ?>"> 395> <br><tr> <br><td nowrap><font color=004080>コード名</font></td><入力タイプ= テキスト名=エイリアスサイズ=8></td><td nowrap><font color=004080>メール</font></td> <br><td width=50%><input type=text name=email size=18></ td> <br/> ;<textarea rows=5 name=msg <br/>cols=33></textarea></td> <br><tr> <br><td width=100%colspan=4 align=センター> <br><入力タイプ=送信値> <br></td> <br></テーブル> <br></form> <br></html> <br><?php <br/>?> <br><br><br> 上記のプログラムが実行されると、まず変数 alias と msg にデータがあるかどうかが確認されます。データがない場合は、メッセージを入力するためのフォームがユーザー側に送信され、ユーザーがメッセージを入力します。 <br><br>ユーザーがメッセージを入力して「メッセージ送信」ボタンをクリックすると、プログラムの前半が実行されます。 <br><br>プログラムは大きく5つの部分に分かれています<br><br>1..Oracleが必要とする環境変数を設定します<br>2..Oracleデータベースに接続します<br>3..データを整理してOracleに送信します<br>4..接続を終了しますwith Oracle <br>5.. プログラムを終了し、最新のメッセージデータを表示します <br>Oracle の環境設定セクションでは、PHP 関数 putenv() を使用して、オペレーティング システム層で環境変数を設定します。中国語を使用するには、必ず次の行を追加してください <br><br>putenv("NLS_LANG=american_taiwan.zht16big5"); その後、Oracle ライブラリの関数 ora_logon() などを使用します。詳細については、「Oracle データベース ライブラリ」を参照してください。この関数ライブラリを利用することで、Oracleデータベースを簡単に操作することができます。 <br><br>次のステップは、データを整理して Oracle データベースに入れることです <br><br>$serial=md5(uniqid(rand())); <br>$id=$PHP_AUTH_USER; $REMOTE_ADDR; <br>$msg=base64_encode($msg); <br>$flag="1"; <br>$query="ゲストブック (シリアル、参照、ID、エイリアス、IP、メール、メッセージ、フラグ) に挿入します。 ('$serial', '$ref', '$id', '$alias', '$ip', sysdate, <br>'$email', '$msg', '$flag')"; <br><br>$serial変数は一意である プログラムは最初に一意の文字列をランダムに生成し、次に md5 エンコーディングを使用して文字列を混乱させ、ハッシュに似た意味のない文字列を形成します。文字列は長くて乱雑であるため、ユーザー、特にハッカーやハッカーがシリアル番号を使用してシステムを侵入するのを防ぎます。 <br><br>$ref 変数は現在無効です。 $id 変数はユーザー認証に使用されます。プログラムの先頭にユーザー認証用のプログラムがある場合、$PHP_AUTH_USER がユーザーのアカウントとなり、$id 変数に渡されます。 <br><br>ユーザーが記述した文字列については、データベースや処理の複雑さを避けるために、BASE64でエンコードすることをお勧めします。もちろん、これは鋸と矢の方法ですが、高速な実行と簡単な変更が最も重要です。エネルギーを無駄にする必要はありません。これらの中国語コードの処理に問題があります。 BASE64 エンコードを使用すると、文字列が約 1/3 拡張されることに注意してください。データベースのストレージ容量が限られている場合、この方法は適さない可能性があります。また、現在、ハードディスクはわずか 12 GB ベースで安価です。上記では、限られたデータベーススペースの問題を考慮する必要はありません。 <br><br>最後に、データベースが SQL 命令を実行するために使用できるように、変数を $query 文字列に編成します。 <br><br>ora_parse($cursor, $query) または die; <br>ora_exec($cursor); <br>ora_logoff($handle); Oracle の SQL 命令を実行する前に、まず解析アクションを実行する必要があります。 。 @ を先頭に追加すると (例: @ora_prase();)、ユーザーにエラー メッセージが表示されないようにすることができます。 query コマンドの実行後、Oracle への接続を閉じることができます。 <br><br>Header("Location: ./index.php"); <br>exit; <br><br>これらの 2 行により、ブラウザは Index.php にリダイレクトされます。ユーザーに新しいメッセージの表示を許可すると、メッセージ アクションが完了します。 <br><br>メッセージ内容表示プログラムについては後ほど見てみましょう。 <br><br><html> <br><meta content="text/html; charset=gb2312" <br/><title>メッセージボード /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; $iif ($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; $iif ($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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

オラクルを開けない場合はどうすればよいですか オラクルを開けない場合はどうすればよいですか Apr 11, 2025 pm 10:06 PM

Oracleのソリューションを開くことはできません。1。データベースサービスを開始します。 2。リスナーを開始します。 3.ポートの競合を確認します。 4.環境変数を正しく設定します。 5.ファイアウォールまたはウイルス対策ソフトウェアが接続をブロックしないことを確認してください。 6.サーバーが閉じているかどうかを確認します。 7. RMANを使用して破損したファイルを回復します。 8。TNSサービス名が正しいかどうかを確認します。 9.ネットワーク接続を確認します。 10。Oracleソフトウェアを再インストールします。

Oracleからすべてのデータを削除する方法 Oracleからすべてのデータを削除する方法 Apr 11, 2025 pm 08:36 PM

Oracleのすべてのデータを削除するには、次の手順が必要です。1。接続を確立します。 2。外部のキーの制約を無効にします。 3.テーブルデータを削除します。 4.トランザクションを送信します。 5.外部キーの制約を有効にします(オプション)。データの損失を防ぐために、実行前にデータベースを必ずバックアップしてください。

Oracle Cursorを閉じる問題を解決する方法 Oracle Cursorを閉じる問題を解決する方法 Apr 11, 2025 pm 10:18 PM

Oracle Cursorの閉鎖問題を解決する方法には、次のものが含まれます。 Scopeが終了した後に自動的に閉じるように、for update句のカーソルを宣言します。使用句のカーソルを宣言して、関連するPL/SQL変数が閉じられたときに自動的に閉じるようにします。例外処理を使用して、例外の状況でカーソルが閉じていることを確認します。接続プールを使用して、カーソルを自動的に閉じます。自動送信を無効にし、カーソルの閉鎖を遅延させます。

Oracleデータベースをページングする方法 Oracleデータベースをページングする方法 Apr 11, 2025 pm 08:42 PM

Oracle Database Pagingは、Rownum Pseudo-ColumnsまたはFetchステートメントを使用して実装しています。RownumPseudo-Columnsは、行番号ごとに結果をフィルタリングするために使用され、複雑なクエリに適しています。 Fetchステートメントは、指定された最初の行を取得するために使用され、単純なクエリに適しています。

Oracle Loopでカーソルを作成する方法 Oracle Loopでカーソルを作成する方法 Apr 12, 2025 am 06:18 AM

Oracleでは、forループループは動的にカーソルを作成できます。手順は次のとおりです。1。カーソルタイプを定義します。 2。ループを作成します。 3.カーソルを動的に作成します。 4。カーソルを実行します。 5。カーソルを閉じます。例:カーソルをサイクルごとに作成して、上位10人の従業員の名前と給与を表示できます。

Oracleデータベースを停止する方法 Oracleデータベースを停止する方法 Apr 12, 2025 am 06:12 AM

Oracleデータベースを停止するには、次の手順を実行します。1。データベースに接続します。 2。すぐにシャットダウンします。 3.シャットダウンは完全に中止します。

Oracle Dynamic SQLを作成する方法 Oracle Dynamic SQLを作成する方法 Apr 12, 2025 am 06:06 AM

SQLステートメントは、Oracleの動的SQLを使用して、ランタイム入力に基づいて作成および実行できます。手順には、次のものが含まれます。動的に生成されたSQLステートメントを保存するための空の文字列変数を準備します。 executeを即座に使用するか、ステートメントを準備して、動的なSQLステートメントをコンパイルおよび実行します。バインド変数を使用して、ユーザー入力またはその他の動的値を動的SQLに渡します。実行するか、実行するか、動的SQLステートメントを実行します。

Oracleでデータベースを開く方法 Oracleでデータベースを開く方法 Apr 11, 2025 pm 10:51 PM

Oracleデータベースを開く手順は次のとおりです。Oracleデータベースクライアントを開き、データベースサーバーに接続します。ユーザー名/パスワード@servername sqlplusコマンドを使用してデータベースを開きます:sqlplus

See all articles