2011-03-24 79 views
2

我是新来的PHP和Web的东西。我有一个任务,通过PHP在JavaScript和服务器上验证客户端的注册表单。我不明白这意味着什么。验证注册表客户端与JavaScript和服务器端与PHP

我提出的寄存器形式,并且验证所有字段与JavaScript

<form name="register" onSubmit="return validateForm()"> 
//...code display form here... 
<input type="submit" name="Submit" value="Submit"> 
</form> 

<script language="javascript"> 
//...validate function here... 
function validateForm() { 
//... 
} 
</script> 

我把上面的代码中register.php。现在我该如何在PHP服务器端进行验证?我需要创建一个新的php文件并使用post方法将数据从这个register.php传递到新的?并在验证后,我发布数据返回注册错误,如果有?

我知道如何在PHP中进行验证表单,但我不知道如何将一个javascript验证的客户端表单连接到php验证服务器表单。

另外需要的是,如果出现问题,重新加载页面并显示错误给用户,所有输入的数据都必须保留。

这也是我不知道该怎么做的。你能告诉我怎么做,或者一些非常简单的代码片段?帮助真的很感激。提前致谢。

回答

0

的所有功能于一身的文件格式处理程序将是这个样子:

myfile.php:

<?php 

$errors = array() 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    if (isset($_POST['name']) && !empty($_POST['name'])) { 
     $name = $_POST['name']; 
    } else { 
     $errors[] = "Please provide your name"; 
    } 
} 
?> 

<html> 

<head> 
    <title>Name Form</title> 
</head> 

<body> 
<?php if (count($errors) > 0) { ?> 
<ul> 
    <li><?php echo implode("</li>\n\t", $errors); ?></li> 
</ul> 
<?php } else { ?> 
<p>Pleased to meet you, <?php echo htmlspecialchars($name) ?></p> 
<? } ?> 

<form method="POST" action=""> 
<p>Please enter your name: <input type="text" size="20" name="name" value="<?php echo htmlspecialchars($name) ?>" /></p> 

<input type="submit" value="Submit" /> 

</form> 

当然,这违反了所有为设计Web应用程序提供了一些“最佳实践”,但它确实展示了呈现表单和进行数据验证服务器端的每个阶段。

+0

您的详细代码帮了我很多。谢谢马克。我能够连接JavaScript客户端与PHP服务器端,但我必须弄清楚如何保持提交后的形式和东西......无论如何感谢很多马克。 – PeteMerry 2011-03-25 12:09:01

0

我相信你可以只输入数据。显然,这仅仅是伪代码:

validateForm() { 

    if (typeof formData === 'duck') 
     // do logic here 
} 
+0

你是什么意思的鸭型数据?我已经在客户端用javascript做了验证部分。现在我被困在如何连接客户端JavaScript到服务器端的PHP。你能否进一步解释你的答案?提前致谢。 – PeteMerry 2011-03-24 19:39:09

0

那么我最初的想法是从表单删除的onsubmit方法和调用方法=“POST”或方法=“GET”。然后,我会使用onBlur为每个表单字段调用一个javascript函数来验证该特定字段。最后你设置action ='validate.php'或其他一些包含PHP验证代码的文件名。成功后重定向到你想去的地方。失败时,刷新页面并暂时将其设置为$ _SESSION变量,从而继承$ _POST或$ _GET变量。