私は人々が彼らのウェブサイトのURLを提出できるフロントエンドフォームを持っています。
私は実際にはWordPressのURLをPHP関数で検証していますが、これを可能にする組み込み関数があるかどうか知りたいですか。
これは私が実際に使用している機能です:
function validateURL($URL) {
$v = "/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i";
return (bool)preg_match($v, $URL);
}
表示する必要があるURLにはesc_url( $url )
を使用し、データベースにURLを送信する必要がある場合はesc_url_raw( $url )
を使用します。
&
を&
に置き換えます。wp_allowed_protocols()
を参照してください。'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'Gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn', 'tel', 'fax', 'xmpp'
したがって、javascript:alert("Hacked!");
のようなURLは通過しません。これらの関数は厳密にはバリデータではありません。彼らは値をサニタイズします。しかし、保存または表示するURLがあるときはいつでもそれらを使うべきです。
wp_validate_redirect( $location, $default )
もあります。
最初の値が検証されない場合、$location
はここのURL、$default
は代替URLです。そのdocブロックから:
リダイレクトで使用するためのURLを検証します。
絶対パスがある場合、$ locationが許可されたホストを使用しているかどうかを確認します。そのため、プラグインは許可されたホストをリストに設定したりリストから削除したりできます。
許可されたホストには、マルチサイトインストールのすべての(サブ)ドメインが含まれるわけではありません。理由はわからない。
URLを検証する機能はありません。URL内で使用する文字列をサニタイズする機能だけです( sanitize_title
)。
URLを検証する PHPフィルタ があります。 FILTER_VALIDATE_URL
。