在同一页面上显示 PHP 表单验证结果

2023-11-30

我确信第一反应会是这样的:“这家伙没有谷歌吗?”是的,我承认这确实看起来是一个非常基本的概念,我已经尝试过并试图理解它,查找有关该主题的各种帖子和文章等,但一切都无济于事。也许你可以给我指出正确的方向?

我有一个基本的联系表单 (contact.html),我使用外部 PHP 脚本 (contact.php) 运行它。这是 HTML 表单代码:

<form id="form1" action="contact.php" method="post">
<div class="form1">
<label>Your Name:</label>
<span><input type="text" name="name" /></span>
</div>
<div class="form1">
<label>Your School:</label>
<span><input type="text" name="school" /></span>
</div>
<div class="form1">
<label>Phone Number:</label>
<span><input type="text" name="phone" /></span>
</div>
<div class="form1">
<label>E-Mail Address:</label>
<span><input type="text" name="email" /></span>
</div>
<div class="form3">
<span><textarea cols="1" rows="1" name="message"></textarea></span>
</div>
<div class="wrapper">
<input class="submit" type="image" src="images/contact_submit.png" name="submit" alt="Submit" />
</div>
</form>

PHP 脚本验证所有字段均已输入,然后处理表单:

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

//Validate the name:
if (!empty($_POST['name'])) {
    $name = $_POST['name'];
} else {
    echo "You forgot to enter your name.<br>";
}

//Validate the school:
if (!empty($_POST['school'])) {
    $school = $_POST['school'];
} else {
    echo "You forgot to enter your school.<br>";
}

//Validate the e-mail:
if (!empty($_POST['email'])) {
    $email = $_POST['email'];
} else {
    echo "You forgot to enter your e-mail.<br>";
}

//Validate the message:
if (!empty($_POST['message'])) {
    $message = $_POST['message'];
} else {
    echo "You forgot to enter a message.";
}

if (!empty($_POST['name']) && !empty($_POST['school']) && !empty($_POST['email']) && !empty($_POST['message'])) {
    $phone = $_POST['phone'];
    $body = "$name\n$school\n$phone\n$email\n\n$message";
    mail("***", "PAL Website - Message from a Visitor", $body);
    header("Location: confirm.html");
}

}

?>

一切都很顺利,表单已按预期进行验证和处理。但是,我真的想对其进行设置,以便错误消息显示在同一页面上,或者至少刷新表单并包含错误消息。

我在其他演示中看到过这种做法(例如拉里·厄尔曼的书),但仍然不太清楚如何实现它。您能提供建议吗?最简单的方法是什么?

这是页面 URL(如果有帮助的话):http://www.712jefferson.org/pal/contact.html

谢谢你!


我会为此使用 jQuery。 需进行的修改:

在 HTML 中: 将 id 添加到您的输入字段,以便您可以使用 jQuery“抓取”它们(您可以在$.post方法如下)。

<form id="form1" action="contact.php" method="post">
   <div class="form1">
      <label>Your Name:</label>
      <span><input id="name" type="text" name="name" /></span>
   </div>
   <div class="form1">
      <label>Your School:</label>
      <span><input id="school" type="text" name="school" /></span>
   </div>
   <div class="form1">
      <label>Phone Number:</label>
      <span><input id="phone" type="text" name="phone" /></span>
   </div>
   <div class="form1">
      <label>E-Mail Address:</label>
      <span><input id="email" type="text" name="email" /></span>
   </div>
   <div class="form3">
      <span><textarea id="message" cols="1" rows="1" name="message"></textarea></span>
   </div>
   <div class="wrapper">
      <input class="submit" type="image" src="images/contact_submit.png" name="submit" alt="Submit" />
   </div>
</form>

在 PHP 中: 如果验证没有错误则回显:“成功”

if (!empty($_POST['name']) && !empty($_POST['school']) && !empty($_POST['email']) && !empty($_POST['message'])) {
    echo "success";
    $phone = $_POST['phone'];
    $body = "$name\n$school\n$phone\n$email\n\n$message";
    mail("***", "PAL Website - Message from a Visitor", $body);
    header("Location: confirm.html");
}

Attach jQuery库到您的网站,并在括号内的 HTML 文件或附加到您网站的外部 *.js 文件中使用以下代码。 在您的 HTML 文件部分使用:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>

jQuery 脚本:

$('#form1').submit(function() {
    event.preventDefault(); 
    $.post("contact.php", {name: $("#name").val(), school: $("#school").val(), phone: $("#phone").val(), email: $("#email").val(), message: $("#message").val()}, function(data){
        if(data !="success"){
            alert(data);
        }
    });
});

这将在警报窗口中显示您的错误消息,如果我没有记错的话,您的网站将不会重新加载。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在同一页面上显示 PHP 表单验证结果 的相关文章

随机推荐

  • Webbrowser,检测是否安装了PDF阅读器?

    有没有办法检查用户是否安装了PDF阅读器 也许使用 ActiveX 组件 请你帮助我好吗 您可以使用以下命令检测已安装的插件window navigator plugins这将返回一个包含已安装插件详细信息的数组 但这不适用于 Intern
  • 使用 Clang 与全局模板变量重复符号

    我有这三个文件 foo h pragma once template
  • 具有CurrencyFormat 和PropertyChanged 触发器的TextBox 不接受正确的文本

    我有一个TextBox在绑定到类型窗口的依赖属性的 WPF 窗口中double 见下文 每当用户输入TextBox when The TextBox为空 或者 全部文字都被选中 键入的文本被错误地接受 例如 如果我在这两种情况下键入 5 则
  • 在获取请求中显示不同的结果,按属性分组并计算该属性的总数

    设想 我有一个费用跟踪 iOS 应用程序 并且有一个名为 DashBoardViewController 的视图控制器 表视图控制器 带 FRC 它基本上可以对给定一周 一个月或一年的费用 收入进行分类 并将其显示为节标题例如标题 2012
  • 如何使方法的返回对象通用?

    我需要执行类似下面的代码的操作 但是 new T 不起作用 它说 无法创建变量类型 T 的实例 因为它没有 new 约束 public static T MapToBaseDropDown2
  • 如何启动电子邮件客户端,然后使用 Javascript 进行页面重定向?

    我需要使网站在其他浏览器上的功能与 IE6 中的功能完全相同 当前代码的一部分类似于以下内容 在 IE 中 这会导致邮件客户端打开并准备好指定的消息 然后将浏览器重定向到 newPage html 然而 其他浏览器仅重定向到 newPage
  • 在 R 中对数据进行分类

    我试图根据数据类型将我的数据分类为不同的组 我的数据和代码如下 bank ROE bank1 0 73 bank2 0 94 bank3 0 62 bank4 0 57 bank5 0 31 bank6 0 53 bank7 0 39 ba
  • 归并排序最有效的实现

    所以我想知道 Java 中合并排序最有效的实现是什么 如果它的时间效率会根据语言而变化 这个问题可能很微不足道 但我的最终目标是向更有经验的程序员学习 这是我做的两个例子 version I made public static doubl
  • 如何通过循环将数据分组到同一标题下

    我正在尝试从两个连接表中获取数据 从一个表中我收集列表标题 从第二个表中我收集列表数据 型号代码 function view searching type items this gt db gt select searching type
  • ios 8 swift - 如何使用单独的数据源为表格视图添加页脚

    这两天我一直在努力解决这个问题 我只想将页脚 自定义单元格 添加到我的表格视图中 我有一个视图 上面有一些东西 标签 按钮 并且我添加了一个表格视图 为了拥有一个干净的控制器 对于数据源 我使用一个单独的文件 class MyDataSou
  • 解释以下C++方法[重复]

    这个问题在这里已经有答案了 define XL 33 define OR 113 define NOR 313 define TN 344 int to bits int critn char mask unsigned int x int
  • 如何使 window.showmodaldialog 在 chrome 37 中工作?

    我们有一个巨大的网络应用程序 我们使用window showmodaldialog用于警报 确认和弹出窗口 自 Chrome 版本 37 起 此调用已被禁用 有什么快速解决方法吗window showmodaldialog在最新版本的 Ch
  • PHP:包含深度嵌套目录层次结构中的页面 - 性能问题

    假设 我要包含深度嵌套目录层次结构中的一些页面 require path to project views forms member login submit php 我从操作系统课程中了解到 每次我们想要访问 搜索文件时 inode 在u
  • 在二维数组中查找邻居

    有没有一种简单的方法可以找到二维数组中元素的邻居 即元素周围的八个元素 不仅仅是以不同的组合对索引进行减法和加法 如下所示 array i 1 i array i 1 i 1 array i i 1 array i 1 i 等等 伪代码 r
  • C++ 中的网络适配器信息

    在 Windows 8 上 我可以在 C 中使用任何标准函数来获取系统中处理以太网的每个网络接口卡的 IP 地址和网络掩码列表吗 我能想到的获取此类信息的唯一其他方法是解析ipconfig 但我真的不想在 C 中走这条路 微软有一个东西叫I
  • 如何使用 DictationServices.framework

    Mac 10 8 包含私有 DictationServices framework 它永远不会在 App Store 中获得批准 而只是出于兴趣 如何利用它的私有类 方法和消息 root DictationServices framewor
  • iTextSharp - 在合并 PDF 中使用 PDFAction.GotoLocalPage

    我编写了一些代码 将多个 PDF 合并为一个 PDF 然后从 MemoryStream 中显示该 PDF 这很好用 我需要做的是将目录添加到文件末尾 并提供指向每个 PDF 开头的链接 我计划使用 GotoLocalPage 操作来执行此操
  • 自定义 Woocommerce 购物车页面中 2 列的结账字段

    新的 WooCommerce 更新结帐字段后 列的行为很奇怪 这是我的结帐字段自定义 add filter woocommerce checkout fields custom override checkout fields functi
  • powershell中的哈希表

    我正在 PowerShell 中开发一个应用程序 我将变量存储在哈希表中 如何保持哈希表中的顺序 我希望顺序与我填充哈希表时的顺序相同 哈希表本质上不维护值的顺序 网上已经有一些解决方法 检查这些 http www tellingmachi
  • 在同一页面上显示 PHP 表单验证结果

    我确信第一反应会是这样的 这家伙没有谷歌吗 是的 我承认这确实看起来是一个非常基本的概念 我已经尝试过并试图理解它 查找有关该主题的各种帖子和文章等 但一切都无济于事 也许你可以给我指出正确的方向 我有一个基本的联系表单 contact h