php - 发布网络表单的更有效方式(更少重复代码)?
问题描述
我有一个 Web 表单,我想将它保存到 XML 文件中并将信息作为电子邮件发送。但是代码在某种程度上感觉是重复的。有没有更有效的方法?
webform.php
<!DOCTYPE html>
<html>
<head></head>
<body>
<div class="content">
<form action="formprocessor.php" method="POST">
<label>Name: </label>
<input name="name" type="text" size="25" />
<label>Course: </label>
<input name="course" type="text" size="25" />
<label>Book: </label>
<input name="book" type="text" size="255" />
<label>Price: </label>
<input name="price" type="text" size="7" />
<label>Email: </label>
<input name="email" type="text" size="255" />
<label>Phone #: </label>
<input name="phone" type="text" size="12" />
<input name="mySubmit" type="submit" value="Submit!" />
</form>
</div>
</body>
</html>
表单处理器.php
<?php
$name = $_POST["name"];
$course = $_POST["course"];
$book = $_POST["book"];
$price = $_POST["price"];
$email = $_POST["email"];
$phone = $_POST["phone"];
echo $name;
?>
首先,我需要在输入中定义名称。
然后在postformprocessor.php中同名
将其分配给变量
使用变量发送邮件和 XML
我必须使用复制粘贴代码但名称不同来执行此操作 30 次(30 个字段)。
解决方案
这是您可以执行的操作的示例。我强烈建议构建一个数组并使用它来构建您的 xml,而不是选项 1:(参见即如何将数组转换为 SimpleXML)
// option 1
$_POST = [
'foo' => 'bar',
'bar' => 'foo'
];
foreach($_POST as $key => $value) {
$$key = $value; // http://php.net/manual/en/language.variables.variable.php
}
var_dump($foo, $bar);
// option 2
$toXMLArray = [];
foreach($_POST as $key => $value) {
$toXMLArray[$key] = $value;
}
var_dump($toXMLArray);
$xml = new SimpleXMLElement('<root/>');
array_walk_recursive($toXMLArray, array ($xml, 'addChild'));
print $xml->asXML();
推荐阅读
- c - 如何在 Linux 文档中测试加密 api 示例?
- r - R:向数据添加质量控制标志
- python - 使用 OpenCv 和 PiCamera(python)的低 FPS
- macos - Catalyst 转换的 Mac 应用程序中的滚轮事件捕获
- c# - 比较两个字符串时忽略问号
- css - 我在向容器流体添加填充时遇到问题。我尝试使用 Bootstrap 4.0.0 和 4.4.1 但它不会添加填充
- vuex - Vuex ORM 定义和改变附加状态的最佳实践
- python - 简化实现用户选择的方式
- python - os.path.join 抛出错误'参数类型必须是 str 或字节不是 TextIOWrapper'
- swift - 从 Fabric 迁移到 Firebase 时未提供 Google App ID 或 Google 服务文件