如何将表单数据获取到 xml 文件并通过电子邮件发送

如何解决如何将表单数据获取到 xml 文件并通过电子邮件发送

我有一个 html 表单,我已成功将表单数据发送到电子邮件,并且在每次提交后将表单数据保存到一个 xml 文件中。 我有两个问题: 1- Xml 文件总是只有 1 个条目,所以每当有人提交表单时,该文件只保存最后一次提交,我需要该文件保存每次提交,并且永远不会删除它。 2- 我想将此文件附加到带有表单数据的电子邮件中。 谢谢你帮助我。

html 代码

<form action="suchauftrag-gesendet-6.php" method="post" role="form" id="suchauftrag-form">
          <div class="row">
            <div class="col-md-6">
              <h5 class="text-center pb-3">Meine Daten</h5>
              <label for="name">Name,Vorname <span class="secondary">*</span></label>
              <input type="text" class="form-control" name="name" id="name" required>
              <label for="email">E-Mail-Adresse <span class="secondary">*</span></label>
              <input type="email" class="form-control" name="email" id="email" required>
              <label for="street">Straße,Nr. <span class="secondary">*</span></label>
              <input type="text" class="form-control" name="street" id="street">
              <label for="street">Stadt <span class="secondary">*</span></label>
              <input type="text" class="form-control" name="city" id="city">
              <label for="street">PLZ <span class="secondary">*</span></label>
              <input type="text" class="form-control" name="zipcode" id="city">
              <label for="phone">Telefonnummer <span class="text-muted"></span></label>
              <input type="text" class="form-control" name="phone" id="phone">
            </div>
            <div class="col-md-6">
                <h5 class="text-center pb-3 secondary" id="isuche">Ich suche</h5>
                <div class="form-group">
                     <select class="select form-control" id="wohnung" name="wohnung" required>
                        <option value="" disabled selected>Wählen</option>
      <option value="Wohnung">Wohnung</option>
      <option value="Haus">Haus</option>
    </select>
                </div>
                <div class="form-group">
             <select class="select form-control" id="mietekaufen" name="mietekaufen" required>
                <option value="" disabled selected>Wählen</option>
      <option value="Miete">Zur Miete</option>
      <option value="Kauf">Zum Kauf</option>
    </select>
                </div>
                <div class="form-group"><fieldset name="gewerbe" id="gewerbe"> 
                    <p class="mt-2 mb-1"><strong>Gewerbeimmobilie</strong></p>
                    <div class="custom-control custom-checkbox d-md-inline ml-0">
                      <input type="checkbox" class="custom-control-input" id="customCheck5" name="gewerbe" value="Buroflache">
                      <label class="custom-control-label" for="customCheck5">Bürofläche</label>
                    </div>
                    <div class="custom-control custom-checkbox d-md-inline ml-0 ml-md-3">
                      <input type="checkbox" class="custom-control-input" id="customCheck6" name="gewerbe" value="Gastronomie">
                      <label class="custom-control-label" for="customCheck6">Gastronomie</label>
                    </div>
                    <div class="custom-control custom-checkbox d-md-inline ml-0 ml-md-3">
                      <input type="checkbox" class="custom-control-input" id="customCheck7" name="gewerbe" value="Ladenlokal">
                      <label class="custom-control-label" for="customCheck7">Ladenlokal</label>
                    </div>
                    <br/>
                    <div class="custom-control custom-checkbox mt-1">
                      <input type="checkbox" class="custom-control-input" id="customCheck8" name="gewerbe" value="Sonstiges">
                      <label class="custom-control-label" for="SonstigeGewerbeBeschreibung">Sonstiges und zwar:</label>
                      <input type="text" class="form-control mt-2" name="sonstige-gewerbe" id="sonstige-gewerbe">
                    </div></fieldset> 
                </div>
                <div class="form-group mb-0">
                    <p><strong>Ungefähre Größe</strong></p>
                    <label class="d-inline" for="size_von">von</label><input type="number" max="9999" class="form-control d-inline mx-3" name="size_von" id="size_von" style="width:4rem" required><label class="d-inline" for="size_bis">bis</label><input type="number" max="9999" class="form-control d-inline mx-3" name="size_bis" id="size_bis" style="width:4rem" required><span>qm</span>
                </div>
                <div class="form-group">
                    <p><strong>Budget</strong></p>
                    <label class="d-inline-block" style="width:4rem" for="budget_miete">Miete:</label><input type="number" max="99999" class="form-control d-inline mx-3 mb-2" name="budget_miete" id="budger_miete" style="width:6rem" required><span>EUR/Monat</span><br/><label class="d-inline-block" for="budget_kauf" style="width:4rem">Kauf:</label><input type="number" max="9999999" class="form-control d-inline mx-3" name="budget_kauf" id="budget_kauf" style="width:6rem" required><span>EUR</span>
                </div>
            </div>
           </div>
            <div class="form-group row pt-4 bg-color2">
                <div class="col-12">
                    <p class="mt-2 mb-3"><strong>Ort</strong> (Mehrfachnennungen möglich)</p>
                </div>
                <div class="col-6">
                    <label for="dusseldorf">Düsseldorf</label>
                     <select class="select form-control" id="dusseldorf" name="Stadtbezirk">
                        <option value="" disabled selected>Wählen</option>
      <option id="stadtbezirk1" value="Stadtbezirk-1">Stadtbezirk 1</option>
 <option id="stadtbezirk2" value="Stadtbezirk-2">Stadtbezirk 2</option>
  <option id="stadtbezirk3" value="Stadtbezirk-3">Stadtbezirk 3</option>
   <option id="stadtbezirk4" value="Stadtbezirk-4">Stadtbezirk 4</option>
    <option id="stadtbezirk5" value="Stadtbezirk-5">Stadtbezirk 5</option>
     <option id="stadtbezirk6" value="Stadtbezirk-6">Stadtbezirk 6</option>
      <option id="stadtbezirk7" value="Stadtbezirk-7">Stadtbezirk 7</option>
       <option id="stadtbezirk8" value="Stadtbezirk-8">Stadtbezirk 8</option>
        <option id="stadtbezirk9" value="Stadtbezirk-9">Stadtbezirk 9</option>
         <option id="stadtbezirk10" value="Stadtbezirk-10">Stadtbezirk 10</option>
    </select>
                </div>
                <div class="col-6">
                    <label for="mettmann">Mettmann</label>
                     <select class="select form-control" id="mettmann" name="Mettmann">
                        <option value="" disabled selected>Wählen</option>
      <option id="erkrath" value="Erkrath">Erkrath</option>
 <option id="haan" value="Haan">Haan</option>
  <option id="heiligenhaus" value="Heiligenhaus">Heiligenhaus</option>
   <option id="hilden" value="Hilden">Hilden</option>
    <option id="langenfeld" value="Langenfeld">Langenfeld</option>
     <option id="mettman" value="Mettmann">Mettmann</option>
      <option id="monheim" value="Monheim am Rhein">Monheim am Rhein</option>
       <option id="ratingen" value="Ratingen">Ratingen</option>
        <option id="velbert" value="Velbert">Velbert</option>
         <option id="wulfrath" value="Wulfrath">Wülfrath</option>
    </select>
                </div>
                <div class="col-12 col-md-10">
                    <label for="andere">Andere</label>
                     <select class="select form-control" id="andere" name="AndereOrte">
                        <option value="" disabled selected>Wählen</option>
      <option id="duisburg" value="Duisburg">Duisburg</option>
 <option id="essen" value="Essen">Essen</option>
  <option id="mulheim" value="Mulheim an der Ruhr">Mülheim an der Ruhr</option>
   <option id="krefeld" value="Krefeld">Krefeld</option>
    <option id="meerbusch" value="Meerbusch">Meerbusch</option>
     <option id="neuss" value="Neuss">Neuss</option>
    </select>
                </div>
                <div class="col-12 col-md-2 d-flex">
                    <p class="text-right mt-auto ml-auto"><span class="secondary"><br/><br/>*</span> Pflichtfelder</p>
                </div>
            </div>          
           <div class="row mb-5">
                <div class="col">
                    <hr class="pt-4 pb-1">
                    <div class="custom-control custom-checkbox">
                      <input type="checkbox" class="custom-control-input" id="customCheck35" required>
                      <label class="custom-control-label" for="customCheck35">Ich habe die <a href="datenschutz" target="_blank">Datenschutzerklärung</a> zur Kenntnis genommen. Ich stimme zu,dass meine Angaben und Daten zur Beantwortung meiner Anfrage elektronisch erhoben und gespeichert werden.</label>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col">
                    <button type="submit" class="btn btn-primary w-100" name="submit" value="submit">Suchauftrag senden</button>
                </div>
            </div>
        </form>

php代码


$subject = 'Formular - Suchauftrag';

// form field names and their translations.
// array variable name => Text to appear in the email
$fields = array('name' => 'Name','email' => 'Email','street' => 'Street','city' => 'City','zipcode' => 'Zipcode','wohnung' => 'Wohnung','mietekaufen' => 'Miete/kaufen','gewerbe' => 'Gewerbeimmobilie','sonstige-gewerbe' => 'Sonstige Gewerbe','size_von' => 'Size von(qm)','size_bis' => 'Size bis(qm)','budget_miete' => 'Budget Miete(€/Monat)','budget_kauf' => 'Budget Kauf(€)','Stadtbezirk' => 'Stadtbezirk','Mettmann' => 'Mettmann','AndereOrte' => 'Andere Orte'); 

error_reporting(E_ALL & ~E_NOTICE);

try
{

    if(count($_POST) == 0) throw new \Exception('Das Formular ist leer');
            
    $emailText = "Sie haben eine neue Nachricht von Ihrem Terminvereinbarungsformular \n=============================\n";

    foreach ($_POST as $key => $value) {
        // If the field exists in the $fields array,include it in the email 
        if (isset($fields[$key])) {
            $emailText .= "$fields[$key]: $value\n";
        }
    }

    // All the necessary headers for the email.
    $headers = array('Content-Type: text/plain; charset="UTF-8";','From: ' . $from,'Reply-To: ' . $_POST['email'],'Return-Path: ' . $from,);
    
    // Send email
    mail($sendTo,$subject,$emailText,implode("\n",$headers));

    $responseArray = array('type' => 'success','message' => $okMessage);
}
catch (\Exception $e)
{
    $responseArray = array('type' => 'danger','message' => $errorMessage);
}


// if requested by AJAX request return JSON response
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    $encoded = json_encode($responseArray);

    header('Content-Type: application/json');

    echo $encoded;
}
// else just display the message
else {
    echo $responseArray['message'];
}


if(isset($_POST['submit']))
{
$xml = new SimpleXMLElement("<?xml version=\"1.0\" encoding=\"utf-8\" ?><miles></miles>");

    $xml->appendChild('name',$_POST['name']);
    $xml->appendChild('email',$_POST['email']);
    $xml->appendChild('street',$_POST['street']);
    $xml->appendChild('city',$_POST['city']);
    $xml->appendChild('zipcode',$_POST['zipcode']);
    $xml->appendChild('phone',$_POST['phone']);
    $xml->appendChild('Wohnung-Haus',$_POST['Wohnung']);
    $xml->appendChild('Miete-kaufen',$_POST['mietekaufen']);
    $xml->appendChild('Gewerbe',$_POST['Gewerbe']);
   $xml->appendChild('Sonstige-Gewerbe',$_POST['sonstige-gewerbe']);
    $xml->appendChild('size_von',$_POST['size_von']);
    $xml->appendChild('size_bis',$_POST['size_bis']);
    $xml->appendChild('budget_miete',$_POST['budget_miete']);
    $xml->appendChild('budget_kauf',$_POST['budget_kauf']);
    $xml->appendChild('Stadtbezirk',$_POST['Stadtbezirk']);
    $xml->appendChild('Mettmann',$_POST['Mettmann']);
    $xml->appendChild('AndereOrte',$_POST['AndereOrte']);

    $asXML = $xml->asXML();
    $file = fopen("data.xml","w+");
    fwrite($file,$asXML);
    fclose($file); 
    print_r(error_get_last());

    if(file_exists('./data.xml'))
    {
        $myXML = file_get_contents('./data.xml');
        $xml = new SimpleXMLElement($myXML);
        $xmlpretty = $xml->asXML();

        // pretty print the XML in browser
        header('content-type: text/xml');
        echo $xmlpretty;
    }

}
?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-