フォームの送信では、ユーザーは不適切なテキストまたは機密情報を入力することがあります。プラットフォームコンテンツの健康とセキュリティを確保するために、PHPのStripOS関数を使用してユーザー入力を検索およびフィルタリングできます。この記事では、 StripoS関数を使用して、フォームコンテンツレビューでキーワード検索とフィルタリングを実装し、例を挙げます。
Striposは、弦のサブストリングの最初の発生を見つけるために使用されるPHPの関数です。関数はケース非感受性であり、戻り値はサブストリングが最初に表示される場所であり、見つからない場合はfalseを返します。この関数は、機密情報やキーワード検索を実行する場合に非常に便利です。
stripos($haystack, $needle, $offset);
$ haystack :検索する文字列。
$針:見つかるサブストリング。
$ offset :(オプション)オフセットが設定されている場合、その場所から検索が開始されます。
フォームコンテンツのレビュー中に、 StripOSを使用して、特定の機密キーワードがあるかどうかを確認できます。たとえば、ユーザーが提出したフォームに特定の機密の単語が含まれているかどうかを探しているとし、これらの単語が見つかった場合、ユーザーの送信またはプロンプトを拒否できます。
Scripos関数を使用して、ユーザー送信フォームのコンテンツに不適切な語彙が含まれているかどうかを検出する方法を示す簡単な例を以下に示します。
<?php
// 敏感な単語のリストを定義します
$sensitiveWords = ['敏感な言葉1', '敏感な言葉2', '不適切なコンテンツ'];
// フォーム入力コンテンツをシミュレートします
$formInput = $_POST['user_input'] ?? '';
// 检查表单输入是否包含敏感な言葉
foreach ($sensitiveWords as $word) {
if (stripos($formInput, $word) !== false) {
echo "警告:您的输入包含不適切なコンテンツ,送信する前に変更してください。";
// ここ,フォームの提出を拒否するか、他の処理を実行することを選択できます
exit;
}
}
// フォームデータを処理し続けます
echo "フォームが正常に提出されました!";
?>
上記のコードでは、敏感な単語$ sensitiveWordsのリストを定義し、ユーザーが入力したフォームコンテンツに、これらの敏感な単語がScripos関数を介して1つずつ含まれているかどうかを確認します。一致が見つかった場合、警告メッセージが出力され、処理が終了します。機密の単語が見つからない場合、フォームは正常に送信されます。
場合によっては、フォームコンテンツにURLリンクが含まれている場合があります。また、 StripOSを使用して、URLに不適切なドメイン名または機密リンクが含まれているかどうかを確認することもできます。フォームコンテンツに特定の不正なURLが含まれているかどうかを確認する例を次に示します。
<?php
// 不正なドメイン名のリストを定義します
$disallowedDomains = ['example.com', 'anotherexample.com'];
// フォーム入力コンテンツをシミュレートします
$formInput = $_POST['user_input'] ?? '';
// 探すURLドメイン名
preg_match_all('/https?:\/\/([^\/]+)/', $formInput, $matches);
// 一致するすべてのドメイン名を繰り返します
foreach ($matches[1] as $domain) {
if (in_array($domain, $disallowedDomains)) {
echo "警告:入力には、許可されていないリンクが含まれています({$domain})。送信する前に変更してください。";
exit;
}
}
// フォームデータを処理し続けます
echo "フォームが正常に提出されました!";
?>
この例では、 preg_match_allを使用してすべてのURLでドメイン名を抽出し、 in_arrayを使用して不正なドメイン名があるかどうかを確認します。実際のニーズに応じて、許可されていないドメイン名のリストを変更できます。
パフォーマンスの問題:フォームコンテンツが長い場合、または敏感な単語のリストが非常に大きい場合、ストリップを頻繁に使用すると、パフォーマンスに影響を与える可能性があります。現時点では、正規表現またはその他の最適化戦略を使用することを検討できます。
不完全な一致: Striposは文字列検索に基づいており、部分的な一致がある場合があります。誤判断を避けるために、隔離のためにスペースまたは他の特殊文字の前後に敏感な単語を追加できます。
ユーザーエクスペリエンスの強化:ユーザー入力時にインスタントフィードバックが必要な場合は、ユーザーエクスペリエンスを改善するために、JavaScriptとAjaxをフロントエンド検出のために組み合わせることを検討できます。