0

私はこのフォームを作成しましたが、これで十分安全かどうかを尋ねたいと思います。キャプチャを何度も作成しようとしましたが、うまくいきません。私はまだ学生ですが、難しいことをしないでください。

質問 1 : mysql_real_escape_string は安全ですか? 質問 2 : 本当に単純な (数値の) キャプチャが必要です。誰かが例 (または他のスタック投稿) を送ってくれますか?

これは、情報サイトでメールフォームとして使用できます。そのサイトにはデータベース/ログインはありません。

<?php 


    include '../connect.php'; #db connection for mysql_real_escape_string
        $errors = array('');
        //valideren of er op de submit gedrukt is en of alle benodigde data is ingevuld
        if(isset($_POST['submit'])){
            if(!empty($_POST['naam']) && !empty($_POST['email']) && !empty($_POST['bericht'])){


                 $naam           = mysql_real_escape_string($_POST['naam']);
                 $email          = mysql_real_escape_string($_POST['email']);
                 $bericht        = mysql_real_escape_string($_POST['bericht']);
                 $telefoon       = mysql_real_escape_string($_POST['telefoon']);


                $regex = "/^[A-Za-z .'-]+$/";
                if(!preg_match($regex,$naam)) {
                    array_push($errors , 'De naam is niet geldig');
                }

                if(strlen($bericht) < 5) {
                    array_push($errors , 'Het bericht is te kort');
                }                   

                $email_regex = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
                if(!preg_match($email_regex,$email)) {
                    array_push($errors , 'Uw email is niet geldig.');
                }

これがメール部分です。

            }else{
                array_push($errors , 'Een van de verplichte velden is niet ingevuld. Alle velden met * zijn verplicht.');
            }


        }
    ?>

    <form method="post">
        <p>
            <label>naam*</label>
            <input type="text" name="naam"/>
        </p>
        <p>
            <label>email*</label>
            <input type="text" name="email"/>
        </p>
        <p>
            <label>telefoon</label>
            <input type="text" name="telefoon"/>
        </p>
        <p>
            <label>Bericht*</label>
            <textarea  name="bericht" style="width:459px; height:187px;" ></textarea>
        </p>
        <p>
            <label> </label>
            <input type="submit" value="verstuur" name="submit"/>
        </p>
    </form>

    <?php 
        if (count ($errors > 0)){
            foreach($errors as $error){
                echo '<p class="error">'.$error.'</p>';
            }
        }
    ?>
4

1 に答える 1

0

mysql_real_escape_string は安全ですか?

これは、MySQL データベースを保護するための不十分なソリューションです。

メールの送信にはまったく不適切です。

悪いデータがメールを破損するのを防ぐために何をするにしても、データがそのメールに挿入される直前に行う必要があります。サニティ チェックを実行する前ではありません。

于 2012-08-09T11:43:23.263 に答える