1

フォームからのスパムを少し止めようとしています。これはメーリング リストであり、ボックス内の任意のテキストを取得してデータベースに送信するだけです。ユーザーがフィールドに @ を追加したことを確認する方法はありますか?

echo '<style type="text/css">';
include 'style.css';
echo '</style>';
if( $_POST )
{
    $con = mysql_connect("localhost","flickey_emails","");

    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("flickey_emailsubscribe", $con);

    $users_email = $_POST['email'];

    $users_email = htmlspecialchars($users_email);

    $query = "INSERT INTO `flickey_emailsubscribe`.`emails` (`id`, `email`) VALUES (NULL, '$users_email');";

    mysql_query($query);

    echo "<h2>Thanks for joining the email list!</h2>";

    mysql_close($con);

HTML

    <form action="contact.php" method="post">
Email: <input type='text' name='email' id='email' /><input type='submit' value='Submit' />  
</form>
4

2 に答える 2

1

送信された for に @ が含まれているかどうかを確認したいだけの場合は、indexOf() を使用できます。

var form_text = "random text";
if(form_text.indexOf("@") == -1) {
  //@ was not found, show message, error, etc.
} else {
  //submit form
}
于 2012-11-30T03:30:41.800 に答える
1

このようなシナリオでは正規表現を使用することをお勧めします。Tyr this

`'/^[^\W][a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\.[a-zA-Z]{2,4}$/'`

ユーザーを厳密にすることができます@。これでも、完全な電子メールアドレス形式の検証に使用できます
テストスクリプトは次のとおりです

$string = "first.last@domain.co.uk";
if (preg_match(
`'/^[^\W][a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\.[a-zA-Z]{2,4}$/'`,
$string)) {
echo "example successful.";
}>


これにはfilter_varを使用することもできます

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  echo "Valid email address.";
} else {
  echo "Invalid email address.";
}
于 2012-11-30T03:31:01.053 に答える