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

PHP使用客户端和服务器端验证,而不使用第三方代码,php,javascript,validation,Php,Javascript,Validation,编辑:谢谢你的帮助。收到一封电子邮件,说我们不需要客户端,所以我放弃了这个想法,转而实际按时完成任务 在你问之前,是的,这是作业。不,我不是在找一个完整的代码。我是一名初学者,实际上没有HTML/PHP/javascript方面的经验,但这是作业的第二部分,因此我已经有了第一部分的一些自己的代码,与本部分相比,这非常简单。这项任务并没有特别说明我们必须使用客户端验证,但我觉得这是一个很好的实践 我需要有人清楚地告诉我如何使用客户端和服务器端验证。我已经有了javascript验证,但是我可以修改

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

在你问之前,是的,这是作业。不,我不是在找一个完整的代码。我是一名初学者,实际上没有HTML/PHP/javascript方面的经验,但这是作业的第二部分,因此我已经有了第一部分的一些自己的代码,与本部分相比,这非常简单。这项任务并没有特别说明我们必须使用客户端验证,但我觉得这是一个很好的实践


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

然后,表单中的数据将通过MySQL(我不希望这样做)输入数据库,通过查看w3schools提供的关于该主题的最少信息,我了解到我必须将表单发布到表单本身

表单本身非常简单:包含姓名、出生日期、电子邮件、邮政编码等。 我当前的.js使用alpha-only、num-only、date格式、email格式、单选按钮和复选框检查,并对每个字段进行测试以确保其不为空

我想我想要的是一个关于如何做到这一点的完整教程。我的网络搜索一直没有结果,但至少我还有一个星期的时间

任何帮助都是感激的,但简单明了的帮助更是如此。在那之前,我会继续在互联网上寻找帮助,如果我找到了对其他有同样问题的人有用的东西,我会发回这里(我相信我班上90%的人都有这个问题……)


提前感谢。

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

<form action="validate.php" method="post">
<!-- form fields -->
</form>
$age = $_POST["age"];
if (ctype_digit($age) && $age > 0) {
    // correct format
}

看起来您已经完成了客户端验证。不过,我不太确定我是否正确理解了您的问题,请告诉我您的具体问题所在,我会尽力帮助您。

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

客户端

验证:

  • (表格验证器)
  • (正则表达式指南)
不要马上跳到AJAX,这是高级材料。首先完成基础工作,让表单提交给PHP(即,如果存在任何验证问题,页面刷新和PHP重画表单)

服务器端

验证:


对于数据库工作:-

请阅读下面的代码。希望在线评论能回答您的问题

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

“我不能使用像jQuery这样的第三方代码”-你能解释一下原因吗。这似乎很重要。@AndriusNaruševičius这是家庭作业。。我很确定原因是他们在教js,而不是js库。[[真遗憾:(jQuery应该被教授。它现在已经被广泛使用了。请先阅读,然后再相信他们所说的。要去的地方是好的,虽然这让我很困惑,但实际上实现两者似乎都很简单。谢谢你。当我完成了更紧迫的任务后,我会尝试一下。在这种情况下,尝试使用PHP sec在一个单独的文件中。或者等待,我将更新我的帖子。@strustmaster-请a)使用
返回检查表传递表单(this)
和b)请不要使用
name
作为字段名,因为表单可能也有名称。是的,关于“名称”部分,我同意。但是,当我知道表单是HTML中唯一的表单时,为什么我必须传递表单的引用?因为这样它将始终有效,即使您决定将搜索表单添加到页面顶部,而且它将使脚本不那么复杂ered.formObj.firstName比document.forms[0]更好.firstname是标准PHP包的一部分,它告诉我在PHP.net上安装it@mplungjan它通常是在PHP Build上启用的。更重要的是,我不知道它们是如何结合在一起的。我确信我可以让它们独立工作,但我不知道如何将它们结合使用。
<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>