Umleiten zu angegebene URL auf PHP-Skript Abschluss?

stimmen
31

Wie kann ich eine PHP-Funktion auf eine bestimmte Website gehen bekommen, wenn es ausgeführt wird getan?

Beispielsweise:

<?php
  //SOMETHING DONE
  GOTO(http://example.com/thankyou.php);
?>

Ich würde wirklich gerne die folgende ...

<?php
  //SOMETHING DONE
  GOTO($url);
?>

Ich möchte so etwas wie dies zu tun:

<?php
  //SOMETHING DONE THAT SETS $url
  header('Location: $url');  
?>
Veröffentlicht am 09/12/2008 um 19:50
quelle vom benutzer
In anderen Sprachen...                            


7 antworten

stimmen
61

<?
ob_start(); // ensures anything dumped out will be caught

// do stuff here
$url = 'http://example.com/thankyou.php'; // this can be set based on whatever

// clear out the output buffer
while (ob_get_status()) 
{
    ob_end_clean();
}

// no redirect
header( "Location: $url" );
?>
Beantwortet am 09/12/2008 um 20:05
quelle vom benutzer

stimmen
28

Man könnte immer benutzen Sie einfach den Tag, um die Seite zu aktualisieren - oder vielleicht fällt nur die notwendige Javascript in der Seite am Ende, dass die Seite zu umleiten verursachen würde. Man könnte sogar, dass in einer onload Funktion werfen, so dass, sobald seine fertig, wird die Seite umgeleitet

<?php

  echo $htmlHeader;
  while($stuff){
    echo $stuff;
  }
  echo "<script>window.location = 'http://www.yourdomain.com'</script>";
?>
Beantwortet am 10/12/2008 um 05:44
quelle vom benutzer

stimmen
13

Wenn „etwas getan“ hat invovle keine Ausgabe über echo / print / etc, dann gilt:

<?php
   // SOMETHING DONE

   header('Location: http://stackoverflow.com');
?>
Beantwortet am 09/12/2008 um 20:02
quelle vom benutzer

stimmen
5

Beachten Sie, dass dies nicht funktionieren wird:

header('Location: $url');

Sie müssen dies tun (für variable Expansion):

header("Location: $url");
Beantwortet am 09/12/2008 um 20:40
quelle vom benutzer

stimmen
3
<?php

// do something here

header("Location: http://example.com/thankyou.php");
?>
Beantwortet am 09/12/2008 um 20:03
quelle vom benutzer

stimmen
0

Hier ist eine Lösung für das Problem „Header bereits gesendet“. Angenommen, Sie sind zu validieren und ein Formular per E-Mail. Stellen Sie sicher, dass der PHP-Code das erste, was auf Ihrer Seite ist ... bevor Sie einen der Doctype und Kopf-Tags und alles, was Jazz. Dann, wenn der POST an der Seite kommt wieder der PHP-Code wird an erster Stelle und nicht die Header stoßen bereits Problem geschickt.

Beantwortet am 21/05/2014 um 10:43
quelle vom benutzer

stimmen
0

vergessen Sie nicht, einen ‚Chip‘ nach Ihrem Anruf zu setzen, um die Umleitung passieren, bevor der Rest des Codes auf der Seite warf laufen. ein. wenn Sie Funktionen weiter unten in dem Seitenkopf haben, werden sie diejenigen außer Kraft setzen weiter den Code auf.

b: im vorausgesetzt, Sie nicht wollen, den Rest des Codes auf der Seite ausgeführt werden soll und das, warum Ihr Putting diese Umleitung in in erster Linie [vielleicht].

Beispiel:

<?php

// do something here

header("Location: http://example.com/thankyou.php");
die();

//code down here now wont get run

?>
Beantwortet am 11/06/2013 um 15:22
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more