【发布时间】:2012-12-27 21:06:21
【问题描述】:
当服务器端无法验证时,如何使用 javascript 在客户端验证电子邮件?据我了解,Javascript 可以关闭,那么如何实现并阻止我收到 PCI 警告?
$(document).ready(function() {
var clearMePrevious = "";
// clear input on focus
$("#email").focus(function() {
if($(this).val()==$(this).attr("title")) {
clearMePrevious = $(this).val();
$(this).val("");
}
});
// if field is empty afterward, add text again
$("#email").blur(function() {
if($(this).val()=="") {
$(this).val(clearMePrevious);
}
});
$('#submitemail').click(function() {
app.ajax.load({
reqName : 'emailSubmit',
url: '$httpUrl('Bronto-OptIn')$?email=' + $('#email').val(),
selector : '#emailbox',
callback: function(responseText, textStatus) { }
});
return false;
});
});
<form id="emailsignup_form" name="emailsignup_form" method="post" action="$httpUrl('Bronto-OptIn', 'fid', 'information')$">
<div class="fl"><input class="email-signup-input" type="text" title="Enter Your Email Address" value="Enter Your Email Address" name="email" id="email" /></div>
<div class="fl"><button class="email-signup-btn" value="Submit" name="submitemail" id="submitemail">Submit</button></div>
<div class="clear"> </div>
【问题讨论】:
-
为什么服务器不能验证?无论您做什么,客户端验证总是不安全的。
-
不完全理解您的问题。您可以使用正则表达式验证客户端(类似于 ^.+@.+(\..+)+$)。但是,如果用户禁用了 JavaScript,您总是希望在服务器上再次验证输入。这个问题和 PCI 有什么关系?
-
客户端验证主要只是为用户提供快速反馈,所有验证都必须在服务器上重做,因为服务器必须防止其数据库获取不良内容并保护自己免受恶意输入。
-
我最近被扫描并标记为 PCI 警告,因为未验证电子邮件地址。我必须解决这个问题才能通过 PCI。
-
无论您如何/是否验证客户端,您都需要验证服务器端。您应该使用与服务器端相同的过滤器客户端,以避免在某些内容通过服务器端但未通过客户端时出现混淆,反之亦然。
标签: javascript email-validation