【发布时间】:2011-08-24 19:05:07
【问题描述】:
这是注册以在我们的网站上接收电子邮件新闻更新的代码。它工作得很好,除非电子邮件地址在@ 后面有一个连字符,否则它会抛出一个错误框:
> The page at http://www.MySite.com says:
>
> Please Fix the following:
>
> E-mail
test-test@test.com 有效,但 test@test-test.com 无效。有任何想法吗?
来自email.js:
function checkSubmit(thisDept){
var email = $('email').value;
var message = "Please Fix the following: \r\n";
var emailpat = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/;
if( !email.match(emailpat) ) {
message += "E-mail \r\n";
}
if(message == "Please Fix the following: \r\n"){
submitEmail(email,thisDept);
} else {
alert(message);
}
}
function submitEmail(email,thisDept){
new Ajax.Updater( "EAlertContainer","php/ealerts.php", {
method: 'post', parameters: { email: email } });
}
编辑:感谢您对我发布的原始代码漏洞的所有担忧。所以我确定,逃避它的正确方法是:
mysql_select_db("DATABASE",$dbx);
$email=mysql_real_escape_string ($email);
$queryx = "INSERT into master_email (emailid,cellmail,email) VALUES ('','','".$email."')";
是/否?
【问题讨论】:
-
警告您的代码容易受到 sql 注入攻击。
-
由于您发布的代码中没有“请修复”字样,因此显然不是错误的根源。请尝试将问题缩小到导致错误的代码的实际部分并发布。
-
提供的代码不包含任何验证。您应该粘贴验证代码(很可能在 checkSubmit() JS 函数中
-
您知道很多包含连字符的域吗?
-
谈论货物狂热的编程......那堵代码墙到底在哪里有“请修复以下内容”?发布的代码不会生成您的错误消息。
标签: php javascript mysql