您好我在PHP5.2中为电子邮件验证时遇到错误 看到我的下面的代码:我在脚本中调用了checkemail()和编写函数checkemail()。但我收到错误,如错误:关键'PRIMARY'重复输入',因为我已将电子邮件ID声明为主键。当我把任何东西放在电子邮件ID中然后它接受在数据库中。我认为功能没有正常执行。指导是否有合适的解决方案。如果需要任何细节,请告诉我。
<head>
<script>
function checkEmail()
{
$strEmail= mysql_real_escape_string($_POST['email']);
if (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $strEmail))
{
return true;
}
else
{
return false;
}
}
</script>
</head>
<body>
<div class="container">
<section id="content">
<form name="form1" method="post" action="check_register.php">
<div>
<input type="text" placeholder="Enter username" required="" id="uname" name="uname"/>
</div>
<div>
<input type="text" placeholder="Enter Email-id" required="" id="email" name="email" onfocus="checkEmail('email');" />
</div>
<div>
<input type="password" placeholder="Enter Password" required="" id="pass" name="pass"/>
</div>
<div>
<input type="password" placeholder="Repeat Password" required="" id="rpass" name="rpass" onfocus="checkPassword(document.getElementById('pass'), this);" oninput="checkPassword(document.getElementById('pass'), this);"/>
</div>
<div>
<input type="text" placeholder="Enter country" required="" id="country" name="country"/>
</div>
<div>
<input type="submit" value="Register" />
</div>
</form>
</section>
</div>
<script src="form-validation.js"/></script>
</body>
答案 0 :(得分:1)
在尝试插入邮件之前,您是否检查数据库中是否已存在邮件?我觉得你的问题就在这里。没有问题html5或验证电子邮件。
顺便说一句,请不要使用<script>
balise来执行php代码。请改用<?php /* your code here */ ?>
。
您还可以使用内置PHP功能使用filter_var
验证您的电子邮件,请查看第一个示例:http://www.php.net/manual/en/filter.examples.validation.php
答案 1 :(得分:1)
是的,为什么不使用 filter_var ,
filter_var ($isEmail, FILTER_VALIDATE_EMAIL);
eregi(Posix Regex)已被弃用为PHP 5.3.0。 php-manual