发布网络表单(减少重复代码)的更有效方法?

时间:2018-06-21 06:41:28

标签: php forms post

我有一个要保存到XML文件并以电子邮件形式发送信息的Web表单。但是代码在某种程度上感觉是重复的。有没有更有效的方法?

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>

formprocessor.php

<?php
$name = $_POST["name"];
$course = $_POST["course"];
$book = $_POST["book"];
$price = $_POST["price"];
$email = $_POST["email"];
$phone = $_POST["phone"];

echo $name;
?>

首先,我需要在输入中定义名称。

然后在post formprocessor.php中使用相同的名称

将其分配给变量

使用变量发送邮件和XML

我必须使用复制粘贴代码但名称不同来执行30次(30个字段)。

1 个答案:

答案 0 :(得分:0)

这是您可以做什么的一个示例。我强烈建议您建立一个数组,并使用它来构建xml而不是选项1: (请参见How to convert array to 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();