PHP - No redirecciona a pagina gracias php, después de enviar datos. Les agradeceré su ayuda.

 
Vista:

No redirecciona a pagina gracias php, después de enviar datos. Les agradeceré su ayuda.

Publicado por Alfonso (1 intervención) el 03/09/2023 09:48:43
Archivo funciones.DB
<!-- Documento --><?php

$conexion ='';

function conectar() {
global $conexion;

$servidor = 'localhost';
$usuario = 'root';
$contraseña = '';
$basedatos = 'clientes';

$conexion = new mysqli($servidor, $usuario, $contraseña, $basedatos);
$conexion->select_db($basedatos);

if ($conexion->connect_error) {
die('<p>Error al conectar con servidor: '. $conexion->connect_error .'</p>');
} else {
echo '<p>Se ha establecido la conexión al servidor con éxito.</p>';
}

function desconectar(){
global $conexion;

mysqli_close ($conexion);
}
}
?>



Archivo procesar.php
<?php
include_once ('includes/funcionesDB.php');

if (isset($_POST) && !empty ($_POST)){

$nombre = $_POST['nombre'];
$apellidos = $_POST['apellidos'];
$email = $_POST['email'];
$mensaje = $_POST['mensaje'];

$nombre = addslashes($nombre);
$email = addslashes($email);

if($nombre != ''){
conectar();

$sql = "INSERT INTO contactos (nombre, apellidos, email, mensaje)
VALUES ('".$nombre."','".$apellidos."','".$email."','".$mensaje."')";

$inserta = mysqli_query($conexion, $sql);
if(!$inserta) echo 'Sá jodio la conexión';

// desde aqui envio este contacto a los email de la variable $para

if (!isset($_POST['email'])) {

}else{


$mensaje="DESDE EL FORMULARIO DE CONTACTO DE MI WEB";
$mensaje.= "\nNombre: ". $_POST['nombre'];
$mensaje.= "\nApellidos: ". $_POST['apellidos'];
$mensaje.= "\nEmail: ".$_POST['email'];
$mensaje.= "\nMensaje: \n".$_POST['mensaje'];
$para= "[email protected]";
$remitente = $_POST['email'];
$asunto = "Mensaje enviado por: ".$_POST['nombre'];

mail($para, $asunto, $remitente, utf8_decode($mensaje));
header("Location: gracias.php");
}
}
desconectar();
}

?>

En localhost funciona perfectamente, pero en mi hosting de pago ocurre lo que les comento. Muchas gracias.
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 Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

No redirecciona a pagina gracias php, después de enviar datos. Les agradeceré su ayuda.

Publicado por Alejandro (839 intervenciones) el 04/09/2023 19:25:06
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Date una vuelta por acá: Como formular UNA BUENA PREGUNTA para obtener ayuda más rápido en LWP

En los servidores de producción es normal que este deshabilitado el mostrar errores, es probable que se genera algún error y se interrumpa la ejecución del script, pudiera ser la configuración de mail().
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

No redirecciona a pagina gracias php, después de enviar datos. Les agradeceré su ayuda.

Publicado por Mauro (1036 intervenciones) el 05/09/2023 08:27:01
Hola Alfonso:

Primera pregunta: al ejecutar este script llegas a ver alguno de estos mensajes?

"Error al conectar con servidor:"

o

"Se ha establecido la conexión al servidor con éxito."
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

No redirecciona a pagina gracias php, después de enviar datos. Les agradeceré su ayuda.

Publicado por Alfonso (5 intervenciones) el 05/09/2023 16:12:29
Hola y gracias por responder.
Recibía: "Se ha establecido la conexión con éxito".
Ocurría que se quedaba colgado en página procesar.php.
He podido solucionarlo, poniendo el header de rediccionamiento al principio del código y tb al final del código.
Suena raro pero así me esta funcionando el envío de datos a BD y a email.
Seguro no tengo vuestros conocimientos, pero si os sirve para ayudar a zoquetes como yo, me alegraré de haber aportado algo que no entiendo.
Reitero mi agradecimiento. Saludos.
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

No redirecciona a pagina gracias php, después de enviar datos. Les agradeceré su ayuda.

Publicado por Mauro (1036 intervenciones) el 06/09/2023 09:19:17
Me alegra que lo hayas solucionado. Sólo un detalle para aclarar: estás usando un código tipo:

1
header('Location: otra_pagina.php')

Dentro de tu script? Porque de ser así, ten en cuenta que la función header, para ser efectiva, tiene que ser invocada sí o sí antes de enviar contenido al cliente (Antes de hacer echo o similar), esto es así por el diseño del protocolo HTTTP, precisamente, lo que estás haciendo cuando usas la función header es enviar meta-información al cliente como parte de la negociación inicial.

Es un poco técnico el tema, no quiero aburrir pero si quieres ver más detalles escribí esto al respecto.

Saludos!
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

No redirecciona a pagina gracias php, después de enviar datos. Les agradeceré su ayuda.

Publicado por Alfonso (5 intervenciones) el 06/09/2023 17:01:27
<?php
header("Location: https://alfonsomarias.es/gracias.php");
require_once ('conexion.php');

if (isset($_POST) && !empty ($_POST)){

$nombre = $_POST['nombre'];
$apellidos = $_POST['apellidos'];
$email = $_POST['email'];
$mensaje = $_POST['mensaje'];

$nombre = addslashes($nombre);
$email = addslashes($email);

if($nombre != ''){
conectar();

$sql = "INSERT INTO contactos (nombre, apellidos, email, mensaje)
VALUES ('".$nombre."','".$apellidos."','".$email."','".$mensaje."')";

$inserta = mysqli_query($conexion, $sql);
if(!$inserta) echo 'Sá jodio la conexíon';

// desde aqui envio este contacto a los email de la variable $para

if (!isset($_POST['email'])) {

}else{

$mensaje="DESDE EL FORMULARIO DE CONTACTO DE MI WEB";
$mensaje.= "\nNombre: ". $_POST['nombre'];
$mensaje.= "\nApellidos: ". $_POST['apellidos'];
$mensaje.= "\nEmail: ".$_POST['email'];
$mensaje.= "\nMensaje: \n".$_POST['mensaje'];
$para= "[email protected]";
$remitente = $_POST['email'];
$asunto = "Mensaje enviado por: ".$_POST['nombre'];

mail($para, $asunto, $remitente, utf8_decode($mensaje));
}
}
desconectar();
}
header("Location: https://alfonsomarias.es/gracias.php");
exit();
?>
Hola de nuevo y gracias por su interés.
Desearía observara que tengo dos header, uno en primera linea de código y otro al final de código. Éste último con cierre exit.
Si quito cualquiera de los dos, no rula o la DB o el mail, o redireccionamiento a gracias.php.
Reitero que es la única manera de que me funcione el envió a BD, mail y gracias.php.

No lo entiendo, pero es así.
Cosas de la informática, supongo.
Tb he ojeado su vinculo al respecto, lo entiendo y he preservado ese proceder, pero...naranjas de la china.

Mi página: alfonsomarias.es. Por si quiere comprobar mis torpezas en la realización de la web... o mis dedicaciones.

De nuevo gracias.
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 Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

No redirecciona a pagina gracias php, después de enviar datos. Les agradeceré su ayuda.

Publicado por Alejandro (839 intervenciones) el 06/09/2023 17:13:10
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Esto evidencia que no has leído lo que se te ha recomendado.
Como formular UNA BUENA PREGUNTA para obtener ayuda más rápido en LWP
Detalles del protocolo HTTP que todo desarrollador PHP debe conocer - muy buenas tus respuestas Mauro y que paciencia :)

Básicamente no puedes utilizar un header después de crear contenido
1
2
3
4
5
6
7
if ($conexion->connect_error) {
    die('<p>Error al conectar con servidor: '. $conexion->connect_error .'</p>');
} else {
    echo '<p>Se ha establecido la conexión al servidor con éxito.</p>';
}
...
header("Location: https://alfonsomarias.es/gracias.php");
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