PHP - Redireccionar después de ejecutar código.

 
Vista:

Redireccionar después de ejecutar código.

Publicado por Pablo (43 intervenciones) el 13/05/2019 00:12:38
Buenas noches,

He ralizado una aplicación para registrar visitantes.

Muy simple, nombre, empresa, a quién viene a visitar, hora entrada y hora salida (que se toma del servidor).

Hasta ahí bien.

Por temas legales y de protección de datos me pide la responsable que el visitante firme la conformidad de que sus datos serán tratados según la legislación vigente.

Aprovechando el objeto <canvas> de html5, he creado un pad dónde el visitante puede firmar.

La información procedente del canvas la proceso en un archivo javascript y se la paso a un php, que me guarda en el servidor el contenido del pad en formato png.

Hasta ahí bien también.

el problema que tengo ahora es redireccionar a la página de inicio después de que el visitante firme, para que deje la aplicación lista para el siguiente.

He puesto este código (header("location: http://localhost/");), pero no funciona: Es decir, el código se ejecuta, pero la página permanece estática.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$data = file_get_contents("php://input");
 
$filteredData=substr($data, strpos($data, ",")+1);
$decodedData=base64_decode($filteredData);
 
function genera_random_string($longitud = 12){
	return substr(str_shuffle("qwertyuioplkjhgfdsazxcvbnm0123456789MNBVCXZASDFGHJKLPOIUYTREWQ"), 0, $longitud);
}
	$palabro = genera_random_string();
 
	$fic_name = $palabro .'.png';
 
	$fp = fopen('../Firmas/'.$fic_name, 'wb');
	$ok = fwrite( $fp, $decodedData);
	fclose( $fp );
 
	header("location: http://localhost/");
	exit;

El archivo png se genera y se guarda en la carpeta apropiada. En la Base de Datos almaceno su nombre.

También he intentado poner un
1
window.locationf="../../index.html";
en el javascript después de enviar los datos al php, pero tampoco funciona.
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 Mauro
Val: 1.636
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Redireccionar después de ejecutar código.

Publicado por Mauro (454 intervenciones) el 13/05/2019 02:26:25
Haz una prueba desde la línea de comandos (o verifica con tu navegador) si te devuelve un código HTTP 301 (o 2). A ver si es un problema del php o no.
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: 1.600
Plata
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Redireccionar después de ejecutar código.

Publicado por Kathyu (432 intervenciones) el 13/05/2019 17:21:50
Porque?
1
header("location: http://localhost/");

Cuando lo puede hacer por archivo
1
header("location:index.php");

También pruebe esto
1
2
3
4
5
6
echo"<script language='JavaScript'>
         alert('Sera redirigido !!!');
         window.history.back();
</script>";
 
echo"<script language='JavaScript'>window.location = ('../../index.php');</script>";

PD: el alert es solo si usted quiere
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

Redireccionar después de ejecutar código.

Publicado por Pablo (43 intervenciones) el 13/05/2019 21:39:44
¡Muchas gracias Kathyu!, ¡Muchas gracias Mauro!

He leído por ahí que el servidor podía seguir ejecutando el php sin preocuparse de lo que estuviera haciendo el navegador.

Solo tenía que tener la precaución de poner un exit(); al final de la ejecución php para asegurarme que terminaba.

Así es que al final de la función javascript que me procesa el contenido del canvas y lo envía al php, he puesto un window.location.replace('http://localhost/'); que funciona como esperaba, entrego el proyecto, y ya en una segunda fase trato de pulir ese escollo.

El hecho de poner las direcciones absolutas en lugar de las relativas es porque he organizado los archivos por carpetas y después de horas batallando con el canvas, ya no sabía si tenía que subir un nivel o bajar dos.
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