javascript和php验证?

javascript和php验证?,php,javascript,forms,validation,Php,Javascript,Forms,Validation,我编写了一些javascript和php代码来验证字段。这两个代码用于验证字段是否为空,是否在35个字符的限制范围内,并且仅包含字母字符和连字符(-)。我想做的是让javascript和php同时验证,并显示它们是输入错误数据的消息,但似乎javascript验证正确,因为会弹出警报,但php端不会显示任何消息。这是我的密码: <script type="text/javascript"> function validateFamily() { var family=documen

我编写了一些javascript和php代码来验证字段。这两个代码用于验证字段是否为空,是否在35个字符的限制范围内,并且仅包含字母字符和连字符(-)。我想做的是让javascript和php同时验证,并显示它们是输入错误数据的消息,但似乎javascript验证正确,因为会弹出警报,但php端不会显示任何消息。这是我的密码:

<script type="text/javascript">

function validateFamily()
{
var family=document.getElementById('family');
var stringf = document.getElementById('family').value;
var ck_password =  /^[A-Za-z-]/;
if (family.value=="")
    {
     alert("Family name must be filled out");
     return false;
    }
else if (document.getElementById('family').value.length > 35)
    {
        alert("Family name cannot be more than 35 characters");
        return false;
    }
else if(!ck_password.test(stringf))
    {
        alert("Family name can only contain alphabetic characters and hypehns(-)");
        return false;
    }
    return true;
}

 </script>

 <?php

if (isset($_POST['submit'])) {

$flagf = false;
$badcharf = "";
$stringf = $_POST["family"];
$stringf = trim($stringf);
$lengthf = strlen($stringf);
$strmsgf = "";

if ($lengthf == 0) {
$strmsgf = '<span class="error"> Please enter family name</span>';
$flagf = true;}
else if ($lengthf > 35) {
$strmsgf = '<span class="error"> Can not enter more than 35 characters</span>';
$flagf = true;}
else {
for ($if=0; $if<$lengthf;$if++){
    $cf = strtolower(substr($stringf, $if, 1));
    if (strpos("abcdefghijklmnopqrstuvwxyz-", $cf) === false){
        $badcharf .=$cf;
        $flagf = true;
    }
}
if ($flagf) {
    $strmsgf = '<span class="error"> The field contained the following invalid characters: '.$badcharf.'</span>';}
}
if (!$flagf) {
    $strmsgf = '<span class="error"> Correct!</span>';}

}

?>

<form name="eoiform" method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="eoi" onsubmit="return validateFamily() && validateGiven() && validateMaleFemale() && validDate() && validateAddress() && validatePost() && validateParent() && validateWork() && validateHome() && validateMob() && validateCheckBoxes() && validateTextBoxes();">

<b>Student's Family Name</b> 
<br>
<input type="text" id="family" name="family" /><?php echo $strmsgf; ?>

<input type="submit" name="submit" id="submit" value="submit" />

</form>

函数validateFamily()
{
var family=document.getElementById('family');
var stringf=document.getElementById('family').value;
var ck_password=/^[A-Za-z-]/;
如果(family.value==“”)
{
警告(“必须填写姓氏”);
返回false;
}
else if(document.getElementById('family').value.length>35)
{
警告(“姓氏不能超过35个字符”);
返回false;
}
否则如果(!ck_password.test(stringf))
{
警报(“姓氏只能包含字母字符和hypehns(-));
返回false;
}
返回true;
}

JavaScript和PHP不能同时执行,因为前者发生在表单发布之前的用户浏览器中,后者发生在表单到达服务器之后

您可以通过在浏览器中检查网页的源代码来验证这一点:没有PHP

如果您的JavaScript捕获,则不会向服务器发送任何内容,因为您
返回false
。在实践中,在以下情况下进行服务器端检查是有意义的:

  • 有人很狡猾,在表单验证后但在发送之前修改表单
  • JavaScript由于某种原因被禁用或中断

  • JavaScript和PHP不能同时执行,因为前者发生在表单发布之前的用户浏览器中,后者发生在表单到达服务器之后

    您可以通过在浏览器中检查网页的源代码来验证这一点:没有PHP

    如果您的JavaScript捕获,则不会向服务器发送任何内容,因为您
    返回false
    。在实践中,在以下情况下进行服务器端检查是有意义的:

  • 有人很狡猾,在表单验证后但在发送之前修改表单
  • JavaScript由于某种原因被禁用或中断

  • 这个表单的工作方式是,在表单的onsubmit属性中有一个JS函数,如果值错误,它可以阻止表单的提交。如果您的JS函数由于错误而返回false,那么表单将永远不会提交

    为了获得所需的功能,您只需要在服务器端执行检查,但每次都需要提交表单才能执行检查

    另一种方法是在用户完成向每个文本字段添加值时检查输入的值,即在字段的blur()属性中附加一个JS函数,并向服务器发出AJAX调用,在表单实际提交之前验证字段内容

    您可以使用jQuery的validate插件进行更复杂的验证,前提是这些验证也可以在客户端完成:


    此表单的工作方式是,在表单的onsubmit属性中有一个JS函数,如果值错误,它可以阻止表单提交。如果您的JS函数由于错误而返回false,那么表单将永远不会提交

    为了获得所需的功能,您只需要在服务器端执行检查,但每次都需要提交表单才能执行检查

    另一种方法是在用户完成向每个文本字段添加值时检查输入的值,即在字段的blur()属性中附加一个JS函数,并向服务器发出AJAX调用,在表单实际提交之前验证字段内容

    您可以使用jQuery的validate插件进行更复杂的验证,前提是这些验证也可以在客户端完成:


    正如paislee所说,您无法同时运行php和javascript。不过,您可以发送动态请求来运行一些php代码,这称为AJAX。这也不能确保绝对准确的同时执行,但会更接近您的目标。

    正如Paisley所说,您无法同时运行php和javascript。不过,您可以发送动态请求来运行一些php代码,这称为AJAX。这也不能确保绝对准确的同时执行,但会更接近您的目标