PHP 使用客户端和服务器端验证,而无需使用第三方代码


PHP Using both client side and server side validation WITHOUT using 3rd party code

>编辑:感谢您的所有帮助。收到一封电子邮件,说我们不需要客户端,所以我放弃了这个想法,转而按时完成任务。

在你问之前,是的,这是作业。不,我不是在寻找某人的完整代码。我是一个初学者,几乎没有HTML/PHP/javascript的经验,但这是作业的第二部分,所以我已经从第一部分获得了一些自己的代码,与这部分相比非常容易。该任务没有具体说明我们必须使用客户端验证,但我觉得这将是很好的做法。

我需要有人清楚地告诉我如何使用客户端和服务器端验证。我已经有了javascript验证,但是我可以修改它,因为它为每个错误显示一个警报框。我不能使用像 jQuery 这样的第三方代码,显然互联网上的每个人都喜欢使用,而且我正在做的课程不喜欢实际教我们任何有用的内容,所以我们都靠自己。

然后,表单中的数据将通过MySQL输入数据库(我不期待这样做(,并且通过查看w3schools关于该主题的最少信息,我明白我必须将表单发布到自己。

表格本身非常简单:包含姓名,DoB,电子邮件,邮政编码等。我当前的.js仅使用 alpha、仅 num、日期格式、电子邮件格式、单选按钮和复选框检查,并且每个字段都经过测试以确保它不为空。

我想我所追求的是有关如何执行此操作的完整教程。我的互联网搜索没有结果,但至少我还有一个星期的时间。

任何帮助都是值得赞赏的,但简单明了的帮助会更是如此。在那之前,我将继续在互联网上徘徊寻求帮助,如果我为其他有相同问题的人找到有用的东西,我会发回这里(我敢肯定这是我班的 90%......

提前谢谢。

阅读下面的代码。希望内联评论回答您的问题。

add_record.php

<?php
if(isset($_POST['name'])) {
  //get post data
  $name = trim($_POST['person_name']);
  $email = trim($_POST['email']);
  $message = trim($_POST['message']);
  //This is server-side check!
  if (strlen($name) > 10){
    echo "FAILED! You tried to submit a name which is greater than 10 chars."
  }else{
    //insert to the database here..
    //and send out a "success message or render HTML
    echo "SUCCESS!";
  }
}else {
    echo "Error! Proper parameters were not provided!";
}

答.html

<html>
<head>
<script type="text/javascript">
function checkForm(){
    //client side (JS) validation. This happens before submitting.
    var name = document.forms[0].person_name.value;
    if (name.length > 10){
        alert("Name is too long");
        return false;
    }
    //do some more checks here..
    //return true if all checks have passed, false otherwise.
    //the return value of this function is checked before submit. The form is submitted only when this function returns a true.
    return true;
}
</script>
</head>
<body>
<form action="add_record.php" method="POST" onsubmit="return checkForm()">
Name: <input type="text" name="person_name"/>
Email: <input type="text" name="email"/>
Message: <input type="text" name="message"/>
<input type="submit"/>
</form>
</body>
</html>

编辑:正如mplungjan指出的那样,在表单中包含一个名为"name"的字段不是一个好主意。表单对象本身可能具有可能冲突的"名称"。

既然是家庭作业,我至少应该给你指出一些资源:

客户端

对于验证:

  • http://www.9lessons.info/2009/03/perfect-javascript-form-validation.html(表单验证器(
  • http://www.javascriptkit.com/javatutors/re.shtml(正则表达式指南(

不要立即跳到 AJAX,这是高级材料。首先完成基础知识,然后让表单提交给 PHP(即,如果存在任何验证问题,页面刷新和 PHP 重新绘制表单(。

服务器端

用于验证:http://www.php.net/filter - 示例

对于数据库工作:http://www.php.net/pdo - 教程

对于服务器端验证,您可以使用method="post"将表单数据发送到php页面,然后检查格式是否正确。像这样:

<form action="validate.php" method="post">
<!-- form fields -->
</form>

在 validate.php 中,使用 $_POST["var_name"](其中 var_name 是输入字段的名称(来检查数据。因此,例如,例如:

$age = $_POST["age"];
if (ctype_digit($age) && $age > 0) {
    // correct format
}

似乎您已经弄清楚了客户端验证。不过,我不太确定我是否正确理解了您的问题 - 让我知道您具体遇到问题的地方,我会尽力提供帮助。