ホームページ  >  記事  >  バックエンド開発  >  PHPゲストブックモジュールの主な機能の機能説明(コード実装可能)_PHPチュートリアル

PHPゲストブックモジュールの主な機能の機能説明(コード実装可能)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:03:01891ブラウズ

1. 機密性の高い単語の処理
1. 機密性の高い単語のフィルター
preg_match() 関数は、文字列内に指定された正規表現に一致するすべてのコンテンツを検索するために使用されます。存在する場合は True を返し、存在しない場合は False を返します。

構文:
int preg_match(string pattern, string subject[,arraymatches[,int flags]])
preg_match() 関数パラメータの説明は次のとおりです:
pattern:
必須パラメータ、正規表現式
件名:必須パラメータ、入力文字列
一致:オプションのパラメータと一致する必要があります。検索結果の配列を出力します。たとえば、$out[0] にはパターン全体に一致する結果が含まれ、$out[1] には括弧内に最初にキャプチャされたサブパターンに一致する結果が含まれます。以下同様です。
flags: オプションのパラメーター。タグ: PREG_OFFSET_CAPTURE、表示される一致する結果ページごとに、それに関連付けられた文字列オフセットが同時に返されます。これは、PHP 4.3.0 以降で利用可能です。

具体的な実装方法は以下の通りです。
まず、file()関数を使って、サブテキストファイルに格納されているセンシティブワード(各センシティブワードは独立した行)を読み込み、配列$に格納します。ファイルワード。
次に、for ループ文を使用して配列要素 (センシティブな単語) を自動的に読み取り、正規表現を直接使用して、ユーザーが送信したメッセージ情報にセンシティブな単語が含まれているかどうかを確認します。

ユーザーがメッセージを投稿して Li Yan のメッセージを送信すると、メッセージは配列に保存されている機密語と比較され、メッセージに機密語が含まれている場合はプロンプト メッセージが表示され、そうでない場合はメッセージが正常に公開されます。機密ワードのフィルタリングを実装するための主要なコードは次のとおりです:

コードをコピーします コードは次のとおりです:

if (is_file("./filterwords.txt")){ //指定されたかどうかを判断しますファイル名は通常のファイルです
$filter_word = file("filterwords.txt"); // ファイル全体を配列に読み込みます
$str=$_POST['content'];
for($i=0;$i<) ;count($filter_word) ;$i++){ //For ループ ステートメントを使用して機密単語を判断します
if(preg_match("/".trim($filter_word[$i])."/i",$str)) { //正規表現を適用する 渡されたメッセージメッセージに機密用語が含まれているかどうかを判定する式
echo "<script>alert('メッセージメッセージには機密用語が含まれています!');history.back(-1);</script> ";
exit;
}
}
}

file() 関数
array file (string filename [, int use_include_path [, resource context]])
は、file( を除き、readfile() と同じです。 ) ファイルを配列として返します。配列内の各セルは、改行を含むファイル内の対応する行です。 file() が失敗すると、FALSE が返されます。
2. センシティブな単語をテキスト ファイルに追加する
センシティブな単語をテキスト ファイルに書き込む php の主な関数
(1) is_writable() 関数
is_writable() 関数は、ファイルが存在するかどうか、および書き込み可能かどうかを判断するために使用されます。上記の条件が満たされる場合は True を返し、そうでない場合は False を返します。
構文: bool is_writable(string filename) パラメーター filename は、ファイル (c:/leaveMessage/filterwords.txt) の完全パスまたは相対パス (呼び出し元のファイル パス filterwords.txt に対応) を指定するために使用されます。書き込める場合は true を返し、書き込めない場合は false を返します
例:
コードをコピー コードは次のとおりです:

if(is_writable("filterwords.txt")){
echo "書き込み可能なファイル";
} else {
echo "書き込み不可能なファイル";
}

(2)fopen() 関数
fopen() 関数は、ファイルを開き、ファイルのマークされたポインタを返すために使用されます。ファイルはローカルまたはリモートにすることができます。
構文: resource fopen(string filename,string mode[,int use_include_path[,resource context]])
パラメータ:
filename:
必須パラメータ。開かれるファイルのローカルまたはリモート アドレスを指定するために使用されます
mode:必須パラメーター。 Use_include_path: ファイルを開くモードを指定するオプションのパラメータ。このパラメータが True に設定されている場合、PHP は include_path 標準インクルード パス
context: オプションのパラメータ内の各ポインタに従ってファイルを開こうとします。ファイル ストリーミングのパフォーマンスを向上させるためにいくつかのオプションを設定します。

mode ファイル オープン モード パラメータの説明:
'r' 読み取り専用モードで開き、ファイル ポインタをファイル ヘッダーに指します。
'r+' 読み取り/書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントします。
'w' は書き込みモードをオンにし、ファイル ポインタをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。
「w+」は読み取りおよび書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。
'a' は書き込みモードで開き、ファイル ポインタがファイルの末尾を指します。ファイルが存在しない場合は、作成してみてください。
'a+' 読み取り/書き込みモードで開き、ファイル ポインタをファイルの末尾に指します。ファイルが存在しない場合は、作成してみてください。 「x」はファイルを作成して書き込み用に開き、ファイル ポインタをファイル ヘッダーに指します。ファイルが既に存在する場合、 fopen() 呼び出しは失敗して FALSE を返し、E_WARNING レベルのエラー メッセージが生成されます。ファイルが存在しない場合は、作成してみてください。これは、基礎となる open(2) システム コールに O_EXCL|O_CREAT フラグを指定するのと同じです。このオプションは PHP4.3.2 以降のバージョンでサポートされており、ローカル ファイルに対してのみ使用できます。 「x+」は、ファイル ポインタをファイル ヘッダーに向けて作成し、読み取りと書き込みのために開きます。ファイルが既に存在する場合、 fopen() 呼び出しは失敗して FALSE を返し、E_WARNING レベルのエラー メッセージが生成されます。ファイルが存在しない場合は、作成してみてください。これは、基礎となる open(2) システム コールに O_EXCL|O_CREAT フラグを指定するのと同じです。このオプションは PHP 4.3.2 以降でサポートされており、ローカル ファイルにのみ使用できます。

例: fopen() 関数は読み取り専用モードでファイルを開きます
コードをコピーします コードは次のとおりです:

$fp=fopen("filterwords. txt","r") ;
?>

(3)fseek()関数
fseek()関数はファイルポインタの位置を設定するために使用されます
構文: int fseek(リソースハンドル,int offset[,int whence])
パラメータ:
handle:
必須パラメータ。ファイルを開いた後に返されるファイル識別子
offset:必須パラメータ。ファイルポインタの位置を設定するために使用されます
whence:パラメータは省略可能です。
fessk()関数のwhenceパラメータの説明
seek_set:オフセットバイトに等しい位置を設定します。この値は、このパラメータのデフォルト値です
seek_cur:現在位置にオフセット バイトを加えた位置を設定します
seek_end:ファイルの末尾にオフセット バイトを加えた位置を設定します
たとえば、fopen を使用します() 関数を使用してファイル「test.txt」を開き、ファイルの 4096 バイトの内容を読み取り、最後に fseek() 関数を適用してファイル ポインターを元の位置に戻します。
コードをコピーします コードは次のとおりです:

$fp=fopen("filterwords.txt","r") //ファイルを読み取り専用モードで開きます
$data=fgets( $fp,4096); // ファイル内の 4096 バイトの行を読み取ります
fseek($fp,0) // ファイル ポインターが 0 バイト目の位置を指すようにします
?>

string fgets (int handle[,int length])
handle が指すファイルから 1 行を読み取り、最大 length - 1 バイトの長さの文字列を返します。改行文字 (戻り値に含まれる)、EOF、または長さ 1 バイトが読み取られたとき (最初に見つかった方) に停止します。長さが指定されていない場合、デフォルトは 1K、つまり 1024 バイトになります。 (プログラムの実行効率を考慮して、一般的には固定長の値が使用されます)
(4) fwrite()関数
fwrite()関数は、指定されたファイルに文字列を書き込むために使用され、書き込むバイト数を指定できます。のサイズ。
構文: int fwrite(リソースハンドル,string string[,int length])
パラメータの説明:
handle:
必須パラメータ。ファイル識別ポインター
string:必須パラメータ。ファイルに書き込む文字列
length:パラメータは省略可能です。このパラメータを省略すると、指定された文字列のすべての内容がファイルに書き込まれます。たとえば、fwrite() 関数は文字列「PHP guestbook」をフィルタワードに書き込みます。 txt ファイルをコピーします

コードは次のとおりです:

$fp=fopen("filterwords.txt","w+");
$str="PHP ゲストブック";
if(fwrite($fp,$str)){
echo "ファイルの書き込み成功しました! ";
}else{
Echo "ファイルの書き込みに失敗しました";
}
?>

(5)fclose() 関数
fclose() 関数は、指定されたファイル識別子を参照するために使用されます。ファイル。
構文: bool fclose(リソースハンドル)
パラメータハンドルは、ファイルが正常にオープンした後に fopen() 関数または fsockopen() 関数によって返されるファイル識別子です。
ゲストブックモジュールでは、上記で紹介した機能を使用して、テキストファイル「filterwords.txt」にセンシティブな単語を追加できます。
コードをコピーします コードは次のとおりです:

if($_POST){
$filename="../filterwords.txt";
if(is_writable($filename) ){
$ file=fopen($filename,'r+'); //読み取りおよび書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントします。
}
else{
echo "File".$filename."Not Writable";
}
//ファイルの最後にファイルを書き込みます
fseek($file,0,SEEK_END) //ポインタの位置を設定します, SEEK_END は、ファイルの末尾にオフセット (ここではゼロ) バイトを追加するのと同じ位置を設定します
$word=$_POST[txt_word];
fwrite($file,$word);
fwrite($file,"rn") ;
fclose($file)
";
if(is_readable($filename)){
$arr=file($filename);
}
else{ echo "ファイル".$filename."読み取り不可";
}
while(list($name ,$value)=each($arr)){ //配列を走査します
$a.="$value".","; } echo "
機密性の高いもの
".$ a;?>

(1)is_readable() は、ファイルが存在し、読み取り可能であるかどうかを判断します。上記の条件が満たされる場合、True を返します


構文: bool is_readable(string filename),
パラメータファイル名を使用 ファイルのフルパスを指定します

(2)void list(mixed...)

array()と同様、これは実際の関数ではなく、言語構造。 list() は、1 ステップで一連の変数に値を割り当てます。 list() は数値インデックス付きの配列にのみ使用でき、数値インデックスが 0 から始まることを前提としています。

例:



コードをコピー
コードは次のとおりです:
$info = array('coffee ', 'brown', 'caffeine'); list($ Drink, $color, $power) = $info;
print "$ Drink は $color で、$power はそれを特別にします。n";
//コーヒーは茶色で、カフェインによって特別になります。
list($ Drink, $color) = $info; print "$ Drink is $color.n";
// コーヒーは茶色です。
?>
; (3) array each(array array)
配列 array 内の現在のポインタ位置のキーと値を返し、配列ポインタを前方に移動します。キーと値のペアは、キー名 0、1、キー、および値を持つ 4 つのセルの配列として返されます。セル 0 とキーには配列セルのキー名が含まれ、1 と値にはデータが含まれます。内部ポインタが配列の末尾を超える場合、each() は FALSE を返します。



コードをコピーします

コードは次のとおりです:


$foo = array ("bob", "fred", "jussi", "jouni", "egon", "marliese) ");
$bar = each($foo);
print_r($bar);
?>

each() は次のような配列を返します
Array
[1] => bob
[0] => 0
[key] => ) 数値インデックスでのみ機能し、デフォルトのキーはゼロベースです。したがって、 list($name,$value) は、キー 0 と値 bob を $name と $value にそれぞれ割り当てます

4、チェック ボックスの完全選択と逆選択を実現します

for ループ ステートメントを動的に適用しますデータベース内の内容に基づいて作成します。すべてオンまたはオフになっているチェック ボックスの数は note_id[] に設定する必要があり、チェック ボックスの値はメッセージ メッセージの ID 番号です。

全選択されたチェックボックスを選択対象のコンテンツとして追加します。チェック ボックスがオンになっている場合、カスタム関数 check_all() 関数が呼び出され、チェック ボックスがすべて選択されるように設定されます。


すべて選択
すべて選択 実装するには、すべてのチェック ボックス form.elements[i] を反復処理し、各マルチオプションの selected 属性を True に設定します。
逆選択の実装は、すべてのチェック ボックスの form.elements[i] を走査し、チェック ボックスのチェックされた属性値を取得します。それが True の場合は False に設定し、それ以外の場合は True に設定します。これは、逆の設定です。現在の値。



コードをコピーします
コードは次のとおりです:




2 番目、ゲストブックのコード分析

1. substr() による中国語文字列のインターセプトの問題
関数: string substr(string string, int start, int [length]);

パラメータの説明: string:
必須、それを示す処理される文字列
start :
必須、文字列 string の開始位置から開始することを意味します。start が負の数の場合、文字列の末尾から数えます。

length:オプション。 length が負の数の場合、最後から 2 番目の長さの文字が 2 つの長さを占め、英語の文字と記号が 1 つの長さを占めることを意味します。 PHP 組み込み関数 substr(string str,intstart,[int length]) は、指定された文字列の長さをインターセプトするために使用されます。英語の文字列をインターセプトする場合は問題ありませんが、中国語の文字列、または中国語と英語の混合文字列をインターセプトする場合は、最後の文字が疑問符に変わるという問題が発生します。
以下はカスタム中国語文字列インターセプト関数です:

コードをコピーします
コードは次のとおりです:
function str_cut($str,$start,$length){ //中国語文字列インターセプト関数 $str_new=iconv_substr($str,$start,$length,"utf-8"); if($start==0){
if(strlen(utf8_decode($str))>($length+$start ) ){
$str_new.=".";
}
}
return $str_new;
}



2、 htmlspecialchars() 関数は、一部の事前定義された文字を HTML エンティティに変換します。ユーザーによる不正操作を防止するための機能を搭載しています。

例:


コードをコピーします

コードは次のとおりです:
$str='
半分のレイヤーを追加しました
半分のテーブル行マーク
http://www.jb51.net">スクリプト ホーム ';
echo htmlspecialchars($str);

出力は次のとおりです:
追加した半分のレイヤー
半分のテーブル行マーク
http://www.jb51.net">Script Home
3、str_replace() 関数は、文字列を使用して文字列内の他の文字を置き換えます。
構文: str_replace(find,replace,string,count)
パラメータの説明:
find:
必須。検索する値を指定します。
置換:必須。検索内容を置き換える値を指定します
string:必須。検索する文字列を指定します
count:オプション。置換の数をカウントする変数

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327862.html技術記事 1. 機密性の高い単語の処理 1. 機密性の高い単語のフィルター preg_match() 関数は、文字列内に指定された正規表現に一致するすべてのコンテンツを検索するために使用されます。存在する場合は True を返し、存在しない場合は Fa...
を返します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。