2017-05-25 45 views
1

我有一个有效的用户列表。我希望只有这些用户才能发送发布请求,其他所有用户都应被标识为无效用户。我写了javascript代码,但无法让无效的用户停止执行程序。只允许使用表单验证的电子邮件列表提交请求

function validateForm() { 
 
     var x = document.forms["myForm"]["email"].value; 
 
     var atpos = x.indexOf("@"); 
 
     var dotpos = x.lastIndexOf("."); 
 
     if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) { 
 
      alert("Not a valid e-mail address"); 
 
      return false; 
 
     } 
 
     var eMailList = ["[email protected]", "[email protected]", "[email protected]", "[email protected]"]; 
 
     var i; 
 
     for (i=0; i< eMailList.length; i++){ 
 
    \t  if(x != eMailList[i]){ 
 
\t \t  alert("Not a valid user"); 
 
     \t return false; 
 
      } 
 
    
 
     } 
 
    }
<form name="myForm" action="/action_page_post.php" onsubmit="return validateForm();" method="post"> 
 
    Email: <input type="text" name="email"> 
 
    <input type="submit" value="Submit"> 
 
</form>

回答

1

起初,如果你关心的安全问题,你不应该做的JavaScript端。

见代码示例如下:

function validateForm() { 
 
    var x = document.forms["myForm"]["email"].value; 
 
    var atpos = x.indexOf("@"); 
 
    var dotpos = x.lastIndexOf("."); 
 
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) { 
 
     alert("Not a valid e-mail address"); 
 
     return false; 
 
    } 
 
    var eMailList = ["[email protected]", "[email protected]", "[email protected]", "[email protected]"]; 
 
    var i; 
 
\t if($.inArray(x,eMailList) == -1) 
 
\t { 
 
\t \t alert("Not a valid user"); 
 
\t } 
 
\t else 
 
\t { 
 
\t \t alert("valid user"); 
 
\t } 
 
}
<form name="myForm" action="/action_page_post.php" onsubmit="return validateForm();" method="post"> 
 
Email: <input type="text" name="email"> 
 
<input type="submit" value="Submit"> 
 
</form>

链接JsFiddle

+0

我想在客户端验证这是什么这样做,如果担心安全问题在这里最好的方法。谢谢 –

+0

你可以发送一些ajax请求到php端,并决定是否允许用户。其他方式,无论你在客户端做什么,有一个邮件列表,你可以看到,它可以很容易地被利用。 – mbpakalin

0

无需遍历数组你可以用下面if(eMailList.indexOf(x) < 0)实施。你的代码总是返回false的原因是因为即使你输入一个有效的电子邮件,它也不等于数组中的每一个其他项目。

function validateForm() { 
 
     var x = document.forms["myForm"]["email"].value; 
 
     var atpos = x.indexOf("@"); 
 
     var dotpos = x.lastIndexOf("."); 
 
     if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) { 
 
      alert("Not a valid e-mail address"); 
 
      return false; 
 
     } 
 
     var eMailList = ["[email protected]", "[email protected]", "[email protected]", "[email protected]"]; 
 

 
     if(eMailList.indexOf(x) < 0){ 
 
\t \t  alert("Not a valid user"); 
 
     \t return false; 
 
     } 
 
    }
<form name="myForm" action="/action_page_post.php" onsubmit="return validateForm();" method="post"> 
 
    Email: <input type="text" name="email"> 
 
    <input type="submit" value="Submit"> 
 
</form>

相关问题