2

以下を使用して、連絡先フォームからの入力をクリーンアップしています。

<?php
$name = strip_tags(stripslashes($_POST['name']));
//this is repeated for several other fields, then:

if(isInjected($name)) { die(); }
/* see isInjected function below */

// send the mail
?>

私はこの機能を使用しています:

<?php
    /* function from http://phpsense.com/php/php-mail.html */
    function isInjected($str) {
        $injections = array('(\n+)',
        '(\r+)',
        '(\t+)',
        '(%0A+)',
        '(%0D+)',
        '(%08+)',
        '(%09+)'
        );
        $inject = join('|', $injections);
        $inject = "/$inject/i";
        if(preg_match($inject,$str)) {
            return true;
        }
        else {
            return false;
        }
    }
?>

お問い合わせフォームをクリーンアップするにはこれで十分ですか?

ありがとう。

4

2 に答える 2

4

コードが少し肥大化していることに注意してください。非常に簡単に削除できます。

/* function from http://phpsense.com/php/php-mail.html */
function isInjected($str) {
    $inject = "/(\r|\t|%0A|%0D|%08|%09)+/i";
    return (preg_match($inject, $str) > 0);
}
于 2009-12-01T13:05:26.813 に答える
1

それはかなりまともで、平均的な入力検証よりも優れているようです。個人的には、入力タイプの処理も好みます。私のbasecontrollerには、入力が有効な生年月日、電子メールアドレスなどであるかどうかを確認する関数がいくつかあります。既存の検証にそのような検証を追加すると、IMOをうまく処理できます。

于 2009-12-01T13:05:48.773 に答える