Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

154
Views
La redirección de PHP a una URL diferente usando el encabezado ("Ubicación:") no funciona

Soy bastante nuevo en php, investigué un poco y probé la solución de otra persona, pero no funcionó para mí. Quiero redirigir a los usuarios a otra página después de que se haya ejecutado cierto código. Me di cuenta de que no hay mensajes de error y el sitio no cambia. Así que eliminé casi todo del código y lo puse en un pequeño archivo test.php. El mismo problema persiste.

 <!DOCTYPE html> <html> <body> <h1>Tes2</h1> <?php // Execute some code here sleep(10); // Give the user 10 seconds to read the output of my code // redirect the user with php or trigger a JS script to do that header("Window-target: _parent"); header("Location: https://www.w3schools.com/"); ?> </body> </html>

Expectativa: la página debe ejecutar el script php principal (visualizado por el comentario) y activar un temporizador. Cuando termine el temporizador, debería redirigirme a "www.w3schools.com". No debe haber errores u otros mensajes. La redirección debe realizarse mediante el código php, si es posible (JS sería una forma posible de resolver esto, pero aún necesitaría iniciar el código JS después de que se haya ejecutado mi código php).

Resultado: la página aparece y carga el código html. El sitio permanece y no cambia. No hay errores.

Entorno: se ejecuta en Chromium versión 96.0.4664.45 (compilación de Offizieller) para Linux Mint (64 bits) El sitio web es funcional y ejecutó el código PHP como se esperaba, pero no este.

¿Existe una solución ligera y universal (para los navegadores más populares) que redirija a los usuarios a otra página?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Los encabezados deben configurarse antes de que se transmitan los datos, por lo que no puede simplemente pegarlos en el medio de un archivo. Citando el manual :

Recuerde que se debe llamar a header() antes de enviar cualquier salida real, ya sea mediante etiquetas HTML normales, líneas en blanco en un archivo o desde PHP.

Entonces, como mínimo, deberá volver a escribir su archivo para:

 <?php header("Window-target: _parent"); header("Location: https://www.w3schools.com/"); ?> <!doctype html> ...

Además, nunca sleep() en una respuesta http(s): esa respuesta debería terminar lo más rápido posible, sin importar el contenido que necesite generar. El sueño no tiene cabida en (realmente ningún) código PHP.

about 4 years ago · Juan Pablo Isaza Report

0

Una combinación de PHP y JS parece ser la solución más fácil. Pero eso podría ser sólo mi opinión. Traté de documentar el código lo mejor posible, para que otros puedan entenderlo:

 <?php function redirect() { // Create some JS code which will pause for 3 seconds and execute the move function afterwards. This Function will redirect the user echo "<script>"; echo "function move() {window.location.replace('http://www.w3schools.com');}"; echo "setTimeout(move, 3000);"; echo "</script>"; } ?> <!DOCTYPE html> <html> <head> </head> <body> <h1>Test2</h1> <?php echo "<p>You will be redirected after the code has been executed!</p>"; // Run actual code redirect(); // Redirect using JS code ?> </body> </html>
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!