繁体   English   中英

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 only,日期格式,电子邮件格式,单选按钮和复选框检查,每个字段都经过测试,以确保它不是不算空

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

任何帮助都表示赞赏,但简单而明确的帮助将更加如此。 在那之前我会继续寻求互联网的帮助,如果我找到有相同问题的其他人的有用东西(我确信这是我班级的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!";
}

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

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

客户端

验证:

不要马上跳到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
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM