近日公開のページに取り組んでいます。このページでは、フォームからメールを使用してサインアップするようユーザーに依頼します。フォームからメールが送信されます。彼らがフォームに入力しているデータが電子メールであることを確認する方法がわかりません(スパムを防ぐため)。何か助けはありますか?ありがとう。
7 に答える
jquery検証を使用する本当に使いやすいhttp://docs.jquery.com/Plugins/Validation
クライアント側のjsだけでは不十分です。また、PHPのfilter_varで検証する必要があります。
<?php
if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
$from=$_POST['email'];
}else{
$error['email_to']='Email Invalid!';
}
?>
スパムやその他の不要な登録を防ぐために、クライアント側の検証に依存するべきではありません。jQuery validateを使用して、訪問者にとってサイトをよりUIに適したものにすることもできますが、入力した電子メールアドレスが無効であり、そのフィールドを確認する必要があるというきちんとしたメッセージを訪問者に提供します。
しかし、スパムボットはjQueryからのその検証を気にせず、指定されたフィールドのみを投稿します。そのため、サーバー側でデータを検証する必要があります。
正規表現を使用して電子メールアドレスを検証する方法はいくつかありますが、すべてが信頼できるわけではありません。http://www.linuxjournal.com/article/9585をチェックしてください。この記事では、これについて多くのことを説明しています。
user following code as primary step to validate the email input
if(document.getElementById('Email').value=="")
{
document.getElementById('Email_Msg').innerHTML="Please Enter EmailId";
document.getElementById('Email').focus()
return false;
}
else
{
if(document.getElementById('Email').value.match(/^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-Z0-9]{2,4}$/))
{
document.getElementById('Email_Msg').innerHTML="";
}
else
{
document.getElementById('Email_Msg').innerHTML="Enter Valid Email-Id";
return false;
document.getElementById('Email').value="";
}
}
メールを1行で検証するだけです。コードは以下のように書くことができます。
<?php
if(empty($_POST['email']))
{
$error[]="Enter Email ID";
}
else
{
if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{
$error[]= "Not A Valid Email ID.";
}
}
//pass these errors to display ana error message to user.
foreach($error as $i)
{
$message = $i."<br />";
}
?>
このコードは、Webページのどこかで使用してください。
<?php
echo $message;
?>
さらに、メール機能とmysqlデータベース(または使用している場合はその他)を使用してメールを送信し、メールIDを確認します。不要なユーザーの登録を防ぐことができます。また、キャプチャを使用してデータベースへのフラッディングを防ぎます。
これは役立つと思います。疑問がある場合は、ここに返信してください。
スパムを防ぎたい場合は、電子メールフィールドに電子メールフィールドが入力されていることを確認するだけでは不十分です。ReCaptchaのようなキャプチャの使用を検討してください
phpgd2ライブラリを使用して独自のキャプチャを作成します。簡単で効率的です。