PHP - PHPMailer

 
Vista:

PHPMailer

Publicado por federico (2 intervenciones) el 23/08/2019 21:26:21
Estimados, buenas tardes:

mi humilde conocimiento, despues de busquedas y pruebas de error, arme un formulario de inscripcion para un evento, cuando completas en el sitio web el formulario, la logica es la siguiente:

- El formulario se divide en dos; Datos Personales y Datos de Vuelo
- Datos personales es obligatorio para todos los que se inscriban
- Datos del vuelo no es obligatorio, por eso escondi los campos en un desplegable tipo accordion.
- Cuando completas el formulario y lo envias, le llega un correo al usuario con la confirmacion, y los campos que completo, como les comento muchos usuarios no completan los datos del vuelo por que no lo necesitan, pero a ellos les llega a su mail de todos modos esos campos vacios.

por mas que busco no encuentro la vuelta para ocultar esos campos vacios en el mail que se envia a los usuarios si es que no los completaron.

ademas, se genera un listado en .csv en el servidor con todos los inscriptos, eso es lo menos importante, por que no importa si llegan campos vacios, por que es algo para la gente de la administracion del evento, el tema es que no queda bien que al usuario le lleguen los campos vacios.

Gracias por su tiempo amigos.

Este es mi codigo PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
$domain = "http://".$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], "/") + 1);
$file = "inscripciones.csv";
 
if(!file_exists($file)) {
	$txt = "Nombre y apellido;Empresa;Cargo;Pais;Direccion;Pasaporte;Telefono;E-mail;Forma de Pago; Facturacion;Acompanante;Nombre de acompanante;Traslados;Fecha de vuelo de llegada;Numero de vuelo de llegada;Hora de vuelo de llegada;Fecha de vuelo de salida;Numero de vuelo de salida;Hora de vuelo de salida;Solicitud especial;Hospedaje;\r\n";
	file_put_contents($file, $txt, FILE_APPEND | LOCK_EX);
}
 
// Datos personales
 
$txt = str_replace(";", ",", utf8_decode($_POST['nombre'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['empresa'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['cargo'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['pais'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['direccion'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['pasaporte'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['telefono'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['email'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['pago'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['facturacion'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['radioInline'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['nombreacomp'])).";";
 
//Datos de vuelo no obligatorios - los que quiero ocultar del email de confirmacion si no se completaron en el formulario
 
$txt .= str_replace(";", ",", utf8_decode($_POST['radioInlinetraslados'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['fechavuelollegada'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['vuelonumerollegada'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['vuelohorallegada'])).";";
 
$txt .= str_replace(";", ",", utf8_decode($_POST['fechavuelosalida'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['vuelonumerosalida'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['vuelohorasalida'])).";";
 
$txt .= str_replace(";", ",", utf8_decode($_POST['solicitudespecial'])).";";
$txt .= str_replace(";", ",", utf8_decode($_POST['hotel'])).";";
$txt .= "\r\n";
 
file_put_contents($file, $txt, FILE_APPEND | LOCK_EX);
 
$cc = 'inscripciones@federicotosi.me';
$to = $_POST['email'];
 
$subject = "Inscripción FT 2019";
 
$message .= "<img src='".$domain."img/lg-mail.png'><br/><br/>";
$message .= "<b>Gracias por tu inscripción, un representante se pondrá en contacto para gestionar el pago.</b><br/><br/>IMPORTANTE: La cancelación de inscripciones se recibirá únicamente hasta el 30 de septiembre del 2019 y se procederá al reembolso descontando los cargos administrativos. Después de esa fecha no habrá lugar a devoluciones.<br><br>.";
$message .= "Estos son tu datos:<br/><br/>";
$message .= "<b>Nombre y apellido:</b> ".utf8_decode($_POST['nombre'])."<br/>";
$message .= "<b>Empresa:</b> ".utf8_decode($_POST['empresa'])."<br/>";
$message .= "<b>Cargo:</b> ".utf8_decode($_POST['cargo'])."<br/>";
$message .= "<b>Pais:</b> ".utf8_decode($_POST['pais'])."<br/>";
$message .= "<b>Direccion:</b> ".utf8_decode($_POST['direccion'])."<br/>";
$message .= "<b>Pasaporte:</b> ".utf8_decode($_POST['pasaporte'])."<br/>";
$message .= "<b>Teléfono:</b> ".utf8_decode($_POST['telefono'])."<br/>";
$message .= "<b>E-mail:</b> ".utf8_decode($_POST['email'])."<br/>";
$message .= "<b>Forma de pago:</b> ".utf8_decode($_POST['pago'])."<br/>";
$message .= "<b>Facturación:</b> ".utf8_decode($_POST['facturacion'])."<br/>";
$message .= "<b>Acompañante:</b> ".utf8_decode($_POST['radioInline'])."<br/>";
$message .= "<b>Nombre del acompañante:</b> ".utf8_decode($_POST['nombreacomp'])."<br/>";
$message .= "<b>Traslados:</b> ".utf8_decode($_POST['radioInlinetraslados'])."<br/>";
$message .= "<b>Fecha de vuelo de llegada:</b> ".utf8_decode($_POST['fechavuelollegada'])."<br/>";
$message .= "<b>Número de vuelo de llegada:</b> ".utf8_decode($_POST['vuelonumerollegada'])."<br/>";
$message .= "<b>Hora de vuelo de llegada:</b> ".utf8_decode($_POST['vuelohorallegada'])."<br/>";
$message .= "<b>Fecha de vuelo de salida:</b> ".utf8_decode($_POST['fechavuelosalida'])."<br/>";
$message .= "<b>Número de vuelo de salida:</b> ".utf8_decode($_POST['vuelonumerosalida'])."<br/>";
$message .= "<b>Hora de vuelo de salida:</b> ".utf8_decode($_POST['vuelohorasalida'])."<br/>";
$message .= "<b>Solicitud especial:</b> ".utf8_decode($_POST['solicitudespecial'])."<br/>";
$message .= "<b>Hotel:</b> ".utf8_decode($_POST['hotel'])."<br/>";
$message .= "<br/>";
$message .= $domain;
 
$from = "inscripciones@federicotosi.me";
$headers = "From:" . $from . "\r\n";
$headers .= "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "Cc: ".$cc;
 
mail($to,$subject,$message,$headers);
 
 
?>
<div class="exito text-center">
	<h4>Gracias por participar del evento.</h4>
    <p>Un email de confirmación llegara a tu casilla de correo.</p>
</div>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
<div id="form-1-res">
    <div class="col-md-12">
        <h4>Datos personales</h4>
        <hr>
    </div>
    <form method="POST" method="POST" action="inscripcion.php" id="form-1">
 
      <div class="col-md-4">
        <div class="form-group">
          <label class="control-label" for="nombre">Nombre y Apellido</label>
          <input name="nombre" class="form-control" type="text" placeholder="Nombre completo" required>
        </div>
      </div>
                <div class="col-md-4">
        <div class="form-group">
          <label class="control-label" for="empresa">Empresa</label>
          <input name="empresa" class="form-control" type="text" placeholder="Empresa" required>
        </div>
      </div>
                <div class="col-md-4">
        <div class="form-group">
          <label class="control-label" for="cargo">Cargo</label>
          <input name="cargo" class="form-control" type="text" placeholder="cargo" required>
        </div>
      </div>
                <div class="col-md-4">
        <div class="form-group">
          <label class="control-label" for="pais">País</label>
          <input name="pais" class="form-control" type="text" placeholder="País" required>
        </div>
      </div>
                <div class="col-md-4">
        <div class="form-group">
          <label class="control-label" for="direccion">Dirección</label>
          <input name="direccion" class="form-control" type="text" placeholder="Dirección" required>
        </div>
      </div>
                <div class="col-md-4">
        <div class="form-group">
          <label class="control-label" for="pasaporte">Pasaporte Nº</label>
          <input name="pasaporte" class="form-control" type="phone" pattern="[+]?[\.\s\-\(\)\*\#0-9]{3,}" placeholder="Pasaporte" required>
        </div>
      </div>
      <div class="col-md-4">
        <div class="form-group">
          <label class="control-label" for="telefono">Teléfono móvil</label>
          <input name="telefono" data-toggle="tooltip" data-placement="top" title="[Cód.Área] + [Núm.Teléfono]" type="phone" pattern="[+]?[\.\s\-\(\)\*\#0-9]{3,}" class="form-control" placeholder="Teléfono móvil">
        </div>
      </div>
      <div class="col-md-4">
        <div class="form-group">
          <label class="control-label" for="email">E-mail</label>
          <input name="email" class="form-control" type="email" placeholder="Email" required>
        </div>
      </div>
            <div class="col-md-4">
                <div class="form-group">
                    <label class="control-label" for="pago">Forma de pago</label>
                    <select id="pago" name="pago" class="form-control" required type="text">
                        <option>Seleccionar</option>
                        <option>TARJETA DE CREDITO</option>
                        <option>TRANSFERENCIA BANCARIA</option>
                    </select>
                </div>
            </div>
                <div class="col-md-4">
        <div class="form-group">
          <label class="control-label" for="facturacion">Datos de facturación</label>
          <input name="facturacion" class="form-control" type="text" placeholder="Datos de facturación" required>
        </div>
      </div>
                <div class="col-md-4">
                <div class="form-group">
                        <label class="control-label" for="acomp">¿Asistirás con acompañante?</label><br>
                        <div class="radio-inline">
              <input type="radio" value="No" name="radioInline" checked>
              <label for="acomp-no"> No</label>
            </div>
                        <div class="radio-inline">
          <input type="radio" value="Si" name="radioInline">
          <label for="acomp-si"> Si</label>
        </div>
                </div>
            </div>
            <div class="col-md-4">
                <div class="form-group">
                    <label class="control-label" for="nombre">Nombre del acompañante</label>
                    <input name="nombreacomp" class="form-control" type="text" placeholder="Nombre completo">
                </div>
            </div>
                <div class="clearfix"></div>
 
 
                <div class="col-md-12">
                    <div class="row">
 
                <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
                    <div class="panel panel-default">
                            <div class="panel-heading" role="tab" id="headingOne">
                                <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
                                <h4 class="panel-title blue">
                                        ¿Llegas a Buenos Aires en avión? <i class="fas fa-plane"></i>
                                        <br>¡click acá!
                                </h4>
                                </a>
                            </div>
                            <div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
                                <div class="panel-body">
 
                                    <div class="col-md-12">
                                        <h4>¿Necesitas tralados? <br class="visible-xs">Aeropuerto - Hotel - Aeropuerto</h4>
                                        <hr>
 
                                        <div class="form-group">
                                                <label class="control-label" for="acomp">¿Requiere contratar 1 o 2 traslados?</label><br>
                                                <div class="radio-inline">
                                      <input type="radio" value="1 pasajero" name="radioInlinetraslados">
                                      <label for="trasladosuno"> 1 pasajero <span class="small">USD</span> <span class="price">40</span></label>
                                    </div>
                                                <div class="radio-inline">
                                  <input type="radio" value="2 a 4 pasajeros" name="radioInlinetraslados">
                                  <label for="trasladosdos"> 2 a 4 pasajeros <span class="small">USD</span> <span class="price">20</span></label>
                                </div>
                                        </div>
                                    </div>
 
                                    <div class="col-md-12">
                                        <h4>Datos de tu vuelo</h4>
                                        <hr>
                                    </div>
 
                                    <div class="col-md-4">
                            <div class="form-group">
                              <label class="control-label" for="fechavuelollegada">Fecha de vuelo de llegada</label>
                                            <input id="datepicker" name="fechavuelollegada" placeholder="Click acá" readonly size="12" class="form-control" type="text"/>
                            </div>
                          </div>
                                    <div class="col-md-4">
                                        <div class="form-group">
                              <label class="control-label" for="vuelonumerollegada">Nº de vuelo</label>
                              <input name="vuelonumerollegada" class="form-control" type="text" placeholder="Nº de vuelo">
                                        </div>
                          </div>
                                    <div class="col-md-4">
                                        <div class="form-group">
                                        <label class="control-label" for="vuelohorallegada">Hora del vuelo</label>
                                        <input name="vuelohorallegada" class="form-control" type="text" placeholder="ej: 18:15">
                                        </div>
                                    </div>
                                    <div class="clearfix"></div>
                                    <div class="col-md-4">
                            <div class="form-group">
                              <label class="control-label" for="fechavuelosalida">Fecha de vuelo de salida</label>
                              <input id="datepicker-salida" name="fechavuelosalida" placeholder="Click acá" readonly size="12" class="form-control" type="text"/>
                            </div>
                                    </div>
                                    <div class="col-md-4">
                                        <div class="form-group">
                              <label class="control-label" for="vuelonumerosalida">Nº de vuelo</label>
                              <input name="vuelonumerosalida" class="form-control" type="text" placeholder="Nº de vuelo">
                                        </div>
                            </div>
                                        <div class="col-md-4">
                                            <div class="form-group">
                                                <label class="control-label" for="vuelohorasalida">Hora del vuelo</label>
                                  <input name="vuelohorasalida" class="form-control" type="text" placeholder="ej: 18:15">
                                            </div>
                                            </div>
                                    <div class="col-md-4">
                                        <div class="form-group">
                                            <label class="control-label" for="solicitudespecial">Solicitud especial</label>
                                            <input name="solicitudespecial" class="form-control" type="text" placeholder="Solicitud especial">
                                        </div>
                                </div>
                                <div class="col-md-4">
                                    <div class="form-group">
                                        <label class="control-label" for="hotel">Hotel reservado</label>
                                        <input name="hotel" class="form-control" type="text" placeholder="Hotel reservado">
                                    </div>
                                </div>
 
 
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
 
      <div class="col-md-12">
                    <div class="alert alert-danger" style="display: none;" id="alert-captcha-1"> Verificá el captcha para continuar. </div>
                    <div class="pull-right" id="RecaptchaField1"></div>
                </div>
                <div class="col-md-12">
        <div class="form-group">
          <button class="btn btn-blue pull-right" type="submit">enviar correo</button>
        </div>
      </div>
    </form>
 
</div><!--#form-1-res-->
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kathyu
Val: 2.112
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

PHPMailer

Publicado por Kathyu (680 intervenciones) el 24/08/2019 00:05:53
No he revisado a totalidad el codigo, pero con un flag puede resolver.

1- Si su campo principal de vuelo (vuelo, reserva, o no se como le llame usted => pero vamos a usar el primero, el campo llamado radioInlinetraslados) lo llenan entonces hace algo tipo

Pseudo del archivo que procesa el correo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$vuelo = $_POST['radioInlinetraslados'];
if($vuelo){
   $message .= "<b>Acompañante:</b> ".utf8_decode($_POST['radioInline'])."<br/>";
   $message .= "<b>Nombre del acompañante:</b> ".utf8_decode($_POST['nombreacomp'])."<br/>";
   $message .= "<b>Traslados:</b> ".utf8_decode($_POST['radioInlinetraslados'])."<br/>";
   $message .= "<b>Fecha de vuelo de llegada:</b> ".utf8_decode($_POST['fechavuelollegada'])."<br/>";
   $message .= "<b>Número de vuelo de llegada:</b> ".utf8_decode($_POST['vuelonumerollegada'])."<br/>";
   $message .= "<b>Hora de vuelo de llegada:</b> ".utf8_decode($_POST['vuelohorallegada'])."<br/>";
   $message .= "<b>Fecha de vuelo de salida:</b> ".utf8_decode($_POST['fechavuelosalida'])."<br/>";
   $message .= "<b>Número de vuelo de salida:</b> ".utf8_decode($_POST['vuelonumerosalida'])."<br/>";
   $message .= "<b>Hora de vuelo de salida:</b> ".utf8_decode($_POST['vuelohorasalida'])."<br/>";
   $message .= "<b>Solicitud especial:</b> ".utf8_decode($_POST['solicitudespecial'])."<br/>";
  $message .= "<b>Hotel:</b> ".utf8_decode($_POST['hotel'])."<br/>";
}

Le explico, va a preguntar si viene informacion en el POST sobre el vuelo, si viene, solo si viene, es que va a "dibujar" en el HTML esa info, no se pone else porque es obvio que si no viene esa info no entra al condicional if.

Recuerde es Pseudocodigo, tome la lógica y resuelva, yo espero ver que lo logro el lunes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

PHPMailer

Publicado por federico (2 intervenciones) el 26/08/2019 19:16:51
Kathyu solo tengo aplausos para ti.
Valoro mucho tu aporte.
Ha funcionado de maravilla, no sabes cuanto me has ayudado.
Muchisimas gracias por tu tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 2.112
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

PHPMailer

Publicado por Kathyu (680 intervenciones) el 26/08/2019 19:38:42
jeje ya sabe, así inicia uno.

Como consejo le diría lo siguiente. Cree una variable $html o $correo donde usted haga un correo mas fino, mejor estilizado y mas profesional.

Puede buscar algún tuto o curso sobre mails html en la web
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar