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

时间:2012-05-23 08:43:06

标签: php javascript validation

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

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

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

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

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

我想我所追求的是一个关于如何做到这一点的完整教程。我的互联网搜索一直没有用,但至少我还有一周的时间。

任何帮助都表示赞赏,但简单而明确的帮助将更加如此。在那之前我会继续寻求互联网的帮助,如果我找到有相同问题的其他人有用的东西(我确信这是我班级的90%......),我会在这里回复。

提前致谢。

3 个答案:

答案 0 :(得分:4)

阅读以下代码。希望内联评论能回答你的问题。

<强> 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!";
}

<强> a.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”的字段并不是一个好主意。表单对象本身可能有一个可能冲突的“名称”。

答案 1 :(得分:1)

由于它的作业,我至少应该指出一些资源:

客户端

验证:

不要马上跳到AJAX那个高级材料。先完成基础知识,然后让表单提交给PHP(如果有任何验证问题,页面刷新,PHP会重新绘制表单)。

服务器端

进行验证:http://www.php.net/filter - examples

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

答案 2 :(得分:0)

对于服务器端验证,您可以使用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
}

好像你已经找到了客户端验证。我不太确定我是否正确地理解了你的问题 - 让我知道你在哪里遇到问题,我会尽力帮助你。