filter_var当用户注册我的网站时,我使用PHP函数来验证电子邮件地址.
我使用帖子中的代码:
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
Run Code Online (Sandbox Code Playgroud)
后来我做了:
if(!$email) {
// return to the form
}
else {
// send registration info
}
Run Code Online (Sandbox Code Playgroud)
现在当我var_dump($email),我得到输出:
string(23) "user."name"@example.com"
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这不会返回错误.我认为双引号是不可接受的,那么为什么PHP说它有效?
我被要求在网络应用程序上实现一些电子邮件地址验证 - 我确信我们已经在那里进行了一千次...但是,这次我被要求在域上进行MX查找以查看是否它接受电子邮件.
有没有人知道这样做的任何潜在问题?mx查找是否是查明域是否接受电子邮件的可靠方法?是否有任何边缘情况,有效的电子邮件地址可能无法进行MX查找检查?
谢谢你的建议!
如何创建一个链接,您可以通过电子邮件发送给用户以确认他们的电子邮件地址是否被点击了JSF?即一旦他们点击链接,他们的帐户就会被激活.
我写了以下联系表单验证脚本.如何验证电子邮件字段?
<style type="text/css">
div.contactForm { width:370px; margin:0 auto; }
form.contactUs label { display:block; }
form.contactUs input { margin-bottom:10px; }
input.submit { margin-top:10px; }
input.error { background:#FF9B9B; border:1px solid red; }
div.errorMessage { color:#f00; padding:0 0 20px; }
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.errorMessage').hide();
$('.submit').click(function() {
var name = $('input.name').val();
var email = $('input.email').val();
var phone = $('input.phone').val();
if (name == '') {
$('input.name').addClass('error');
$('input.name').keypress(function(){
$('input.name').removeClass('error');
});
}
if (email == '') {
$('input.email').addClass('error');
$('input.email').keypress(function(){
$('input.email').removeClass('error');
});
} …Run Code Online (Sandbox Code Playgroud) 我的软件正在使用来自唯一特定发件人的传入电子邮件(让它为SantaClaus@hetnet.nl).根据RFC-2616第14节"From"标题
可用于记录目的, 也可用于识别无效或不需要的请求的来源.
这正是我所需要的,所以我编写了一个代码,它忽略了"From"字段不相等的所有消息SantaClaus@hetnet.nl.它运作良好,但有一天事情发生了变化,现在圣诞老人的所有消息都包含一个不同的字符串在"发件人"字段中(确切地说<SantaClaus@hetnet.nl>).我已经修复了我的代码,但我只是想知道,这个标题合法吗?因为相同的RFC-2616第14节说:
地址应该是机器可用的,由RFC 1122 [9]中的"邮箱"定义,由RFC 1123 [8]更新:
Run Code Online (Sandbox Code Playgroud)From = "From" ":" mailbox一个例子是:
Run Code Online (Sandbox Code Playgroud)From: webmaster@w3.org
注意尖括号的缺席.但与此同时,我在Gmail帐户上收到的许多电子邮件在"发件人"字段中都是这样的:"Santa Claus" <santaclaus@hetnet.nl>
我在C#中准备好语句有问题:
OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ?";
cmd.Parameters.Add("@USER_ID", OdbcType.VarChar, 250).Value = email;
Run Code Online (Sandbox Code Playgroud)
(当然电子邮件包含有效的电子邮件地址,带@符号).
此代码返回一个随机错误 -
"连接已被禁用"{"错误[01000] [Microsoft] [ODBC SQL Server驱动程序] [TCP/IP套接字] ConnectionWrite(send()).错误[08S01] [Microsoft] [ODBC SQL Server驱动程序] [TCP/IP套接字]常规网络错误.请检查您的网络文档."}
但是,如果我在没有准备好的语句的情况下运行我的代码,
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = '"+email+"'";
Run Code Online (Sandbox Code Playgroud)
一切都很完美.
也许这与我在参数化值中有@符号的事实有关?我倾向于认为我不是第一个尝试使用电子邮件地址创建预备声明的人...
我不知道出了什么问题!其他准备好的陈述正常...
你能帮忙吗?:)谢谢,Nili
我有以下代码为用户的电子邮件地址生成输入字段
$email = new Zend_Form_Element_Text('email');
$email->setLabel('Email:')
->addFilters(array('StringTrim', 'StripTags'))
->addValidator('EmailAddress')
->addValidator(new Zend_Validate_Db_NoRecordExists(
array(
'adapter'=>Zend_Registry::get('user_db'),
'field'=>'email',
'table'=>'tbl_user'
)))
->setRequired(true)
->setDecorators(array(
array('Label', array('escape'=>false, 'placement'=>'append')),
array('ViewHelper'),
array('Errors'),
array('Description',array('escape'=>false,'tag'=>'div')),
array('HtmlTag', array('tag' => 'div')),
));
$this->addElement($email);
Run Code Online (Sandbox Code Playgroud)
现在的问题是,如果用户为电子邮件输入无效的主机名,则会产生3个错误.假设用户输入'admin @ l'作为电子邮件地址,错误将是
*'l'没有电子邮件地址的有效主机名'admin @ l'
*'l'与DNS主机名
*' 的预期结构不匹配l'似乎是本地网络名称,但不允许使用本地网络名称
我只是希望它只提供一个自定义错误而不是所有这些.如果我通过addErrorMessage方法设置错误消息"无效的电子邮件地址",它将再次针对db_validation生成相同的消息.
我有一个文本框,用户需要插入有效的电子邮件地址.
当用户提交有效的电子邮件地址时,会在回发数据时显示加载图形.
下面的代码适用于显示加载图形,但它不会检查电子邮件地址是否有效.任何人都可以帮忙吗?
$('#btnEmail1Submit').live ("click", function() {
$('<div class="submitBg"></div>').appendTo(".emailEditContainer");
$('<div class="submitLoadingCont"><img class="submitLoading" src="images/mypreferences/loading.gif" width="50" height="50" /></div>').appendTo(".emailEditContainer");
});
Run Code Online (Sandbox Code Playgroud)
我想我需要在点击运行的函数周围添加一个if语句 - 所以类似于:
$('#btnEmail1Submit').live ("click", function() {
if(emailvalid == true) {
$('<div class="submitBg"></div>').appendTo(".emailEditContainer");
$('<div class="submitLoadingCont"><img class="submitLoading" src="images/mypreferences/loading.gif" width="50" height="50" /></div>').appendTo(".emailEditContainer");
}
});
Run Code Online (Sandbox Code Playgroud)
我正在使用asp.net电子邮件验证 - 它看起来像这样:
<asp:RegularExpressionValidator Display="Dynamic" ValidationGroup="PrimarySubmit" ID="RegularExpressionValidator1" runat="server" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="tbEmail1" ErrorMessage="Invalid email address - " />
Run Code Online (Sandbox Code Playgroud) 的RFC 5321,5322和6531有验证电子邮件地址复杂的规则.他们:
由于这些复杂的规则,根据RFC测试给定字符串是否是语法上有效的电子邮件地址不能仅使用正则表达式执行.
显然,主要电子邮件提供商不支持其中许多规则.
从历史上看,为电子邮件地址创建如此复杂的规则的动机是什么?在对电子邮件的起源维基百科的文章似乎意味着,从20世纪80年代早期的现代化标准旨在覆盖所有旧电子邮件十岁上下的系统用自己特定的标准和语法.
然而,标准,电子邮件提供商和电子邮件最终用户的实施者都对工作系统有既得利益,当规则不太晦涩并且可以轻松地转换为通过有限数量测试的软件时,这更容易实现,那么,为什么我们今天有一个如此复杂的标准,没有人完全使用它?
从历史上看,XML在很大程度上已被JSON取代,其成功部分归因于其语法的简单性.
我将 Django 2.0.10 与 rest 框架、rest-auth 和 allauth 一起使用,并带有 React 前端。Rest-auth 使用 JWT 令牌身份验证提供登录和注销功能,但我无法弄清楚如何允许用户请求重新发送验证电子邮件。
我希望用户能够登录并按下“重新发送确认电子邮件”按钮。例如,如果他们不小心删除了电子邮件,他们需要能够请求另一个。
我已经看到帖子建议您可以使用 allauth 的 send_email_confirmation,但这需要一个由模板生成的 CSRF 令牌。我尝试按照文档从 csrf 中排除,但它没有任何不同。我还尝试按照此处的建议设置 authentication_classes = () 。这是我的代码:
设置:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
}
Run Code Online (Sandbox Code Playgroud)
网址.py
from users.views import EmailConfirmation
urlpatterns = [
...
url(r'^/sendconfirmationemail/', EmailConfirmation.as_view(), name='send-email-confirmation')
]
Run Code Online (Sandbox Code Playgroud)
视图.py
from rest_framework.views import APIView
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
class EmailConfirmation(APIView):
@method_decorator(csrf_exempt)
authentication_classes = ()
def post(self):
send_email_confirmation(user=self.request.user)
Run Code Online (Sandbox Code Playgroud)
当我发布到端点“/api/v1/rest-auth/sendconfirmationemail/”时,我收到错误禁止:
<p>You are seeing this …Run Code Online (Sandbox Code Playgroud) email-validation ×10
email ×4
jquery ×2
validation ×2
c# ×1
django ×1
filter-var ×1
forms ×1
javascript ×1
jsf ×1
php ×1
rfc5322 ×1
sql ×1
zend-form ×1