3

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

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

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

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

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

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

任何帮助表示赞赏,但简单而明确的帮助将更是如此。在那之前,我将继续在互联网上寻找帮助,如果我找到对遇到同样问题的其他人有用的东西(我敢肯定这是我班上 90% 的人......)

提前致谢。

4

3 回答 3

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

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

于 2012-05-23T09:14:35.127 回答
1

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

客户端

对于验证:

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

服务器端

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

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

于 2012-05-23T08:57:06.640 回答
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
}

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

于 2012-05-23T08:55:52.233 回答