PHP - Ayuda escolar: formulario con PHPMailer

 
Vista:
sin imagen de perfil
Val: 5
Ha disminuido su posición en 217 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ayuda escolar: formulario con PHPMailer

Publicado por Daniel (5 intervenciones) el 09/09/2022 02:21:37
Hola comunidad, gracias por leer. Soy nuevo en esto, estoy haciendo un proyecto para la escuela y logré que el formulario funcione bien, pero me gustaría capturar algunas estadísticas del usuario y que me sean enviadas por email (IP, sistema operativo, navegador, etc). Investigué en internet pero no encontré nada sobre este tema, la verdad que no se me ocurre. Si alguien tiene alguna info les agradecería un montón. Mil gracias de antemano!

Ah, el código que estoy usando es este:

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
<?php
 
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
 
    $myPersonalEmail = "xxxxx";
 
    $externalMailHost = "xxxxx";
    $externalMailAddress = "xxxxx";
    $externalMailSMTPAuth = true;
    $externalMailUsername = "xxxxx";
    $externalMailPassword = "xxxxx";
    $externalMailSMTPSecure = "tls";
    $externalMailPort = 587;
 
    require $_SERVER['DOCUMENT_ROOT'] . '/xxxxx/Exception.php';
    require $_SERVER['DOCUMENT_ROOT'] . '/xxxxx/PHPMailer.php';
    require $_SERVER['DOCUMENT_ROOT'] . '/xxxxx/SMTP.php';
 
    if(isset($_POST['submit'])) {
 
        $mail = new PHPMailer(true);
 
        $mail->SMTPDebug = 0;
        $mail->isSMTP();
 
        $mail->Host = $externalMailHost;
        $mail->SMTPAuth = $externalMailSMTPAuth;
        $mail->Username = $externalMailUsername;
        $mail->Password = $externalMailPassword;
        $mail->SMTPSecure = $externalMailSMTPSecure;
        $mail->Port = $externalMailPort;
 
        $mail->setFrom($externalMailAddress, 'Contacto');
        $mail->addAddress($myPersonalEmail);
        $mail->addReplyTo($_POST['email'], $_POST['nombre']);
 
        $mail->isHTML(false);
	$mail->CharSet = 'UTF-8';
		$mail->Body = <<<EOT
		Nombre: {$_POST['nombre']}
		Correo electrónico: {$_POST['email']}
		Pais: {$_POST['pais']}
		Ciudad: {$_POST['ciudad']}
		Mensaje: {$_POST['mensaje']}
		EOT;
 
        try {
    	$mail->send();
    	header('Location: /thankyou.html');
    	exit;
		} catch (Exception $e) {
    	header('Location: /error.html');
    	exit;
		}
   		} else {
        echo "Hay un problema con el documento contacto.html!";
    	}
 
?>
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 Ivan

Ayuda escolar: formulario con PHPMailer

Publicado por Ivan (118 intervenciones) el 09/09/2022 12:39:41
Hola,

antes de responder primero aclarar que es diferente la información que se puede obtener de un usuario según el lenguaje de programación. Javascript trabaja en el cliente y PHP trabaja en el servidor.

Dicho esto he encontrado los datos más interesantes que se podrían obtener en uno u otro:

En JavaScript:

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
var info={
 
    timeOpened:new Date(),
    timezone:(new Date()).getTimezoneOffset()/60,
 
    pageon(){return window.location.pathname},
    referrer(){return document.referrer},
    previousSites(){return history.length},
 
    browserName(){return navigator.appName},
    browserEngine(){return navigator.product},
    browserVersion1a(){return navigator.appVersion},
    browserVersion1b(){return navigator.userAgent},
    browserLanguage(){return navigator.language},
    browserOnline(){return navigator.onLine},
    browserPlatform(){return navigator.platform},
    javaEnabled(){return navigator.javaEnabled()},
    dataCookiesEnabled(){return navigator.cookieEnabled},
    dataCookies1(){return document.cookie},
    dataCookies2(){return decodeURIComponent(document.cookie.split(";"))},
    dataStorage(){return localStorage},
 
    sizeScreenW(){return screen.width},
    sizeScreenH(){return screen.height},
    sizeDocW(){return document.width},
    sizeDocH(){return document.height},
    sizeInW(){return innerWidth},
    sizeInH(){return innerHeight},
    sizeAvailW(){return screen.availWidth},
    sizeAvailH(){return screen.availHeight},
    scrColorDepth(){return screen.colorDepth},
    scrPixelDepth(){return screen.pixelDepth},
 
    latitude(){return position.coords.latitude},
    longitude(){return position.coords.longitude},
    accuracy(){return position.coords.accuracy},
    altitude(){return position.coords.altitude},
    altitudeAccuracy(){return position.coords.altitudeAccuracy},
    heading(){return position.coords.heading},
    speed(){return position.coords.speed},
    timestamp(){return position.timestamp},
    };

En PHP, mira todas las variables de $_SERVER[];

Los datos JavaScript los envias junto con tu formulario en uno o varios campos ocultos, los datos PHP los recopilas al tratar el email con phpMailer.

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 5
Ha disminuido su posición en 217 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ayuda escolar: formulario con PHPMailer

Publicado por Daniel (5 intervenciones) el 10/09/2022 07:31:43
Mil gracias por tu respuesta Ivan, me re sirve, voy a tener que estudiarlo un poco así que voy a aprovechar el fin de semana. Mil gracias nuevamente!
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