Ανακατεύθυνση σε καθορισμένη διεύθυνση URL για την ολοκλήρωση σενάριο PHP;

ψήφοι
31

Πώς μπορώ να πάρετε μια συνάρτηση της PHP να πάει σε μια συγκεκριμένη ιστοσελίδα, όταν γίνεται τρέχει;

Για παράδειγμα:

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

Θα ήθελα πραγματικά την επόμενη ...

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

Θέλω να κάνω κάτι σαν αυτό:

<?php
  //SOMETHING DONE THAT SETS $url
  header('Location: $url');  
?>
Δημοσιεύθηκε 09/12/2008 στις 19:50
πηγή χρήστη
Σε άλλες γλώσσες...                            


7 απαντήσεις

ψήφοι
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" );
?>
Απαντήθηκε 09/12/2008 στις 20:05
πηγή χρήστη

ψήφοι
28

Θα μπορούσατε πάντα απλά χρησιμοποιήστε την ετικέτα για να ανανεώσετε τη σελίδα - ή ίσως απλά ρίχνετε την απαραίτητη javascript στον σελίδας στο τέλος που θα προκαλέσει η σελίδα να ανακατευθύνει. Θα μπορούσατε ακόμη και να ρίξει ότι σε μια λειτουργία onload, έτσι ώστε όταν τελειώσει, η σελίδα ανακατευθύνεται

<?php

  echo $htmlHeader;
  while($stuff){
    echo $stuff;
  }
  echo "<script>window.location = 'http://www.yourdomain.com'</script>";
?>
Απαντήθηκε 10/12/2008 στις 05:44
πηγή χρήστη

ψήφοι
13

Αν «ΚΑΤΙ ΕΓΙΝΕ» δεν invovle κανένα έξοδο μέσω echo / εκτύπωση / κλπ, τότε:

<?php
   // SOMETHING DONE

   header('Location: http://stackoverflow.com');
?>
Απαντήθηκε 09/12/2008 στις 20:02
πηγή χρήστη

ψήφοι
5

Σημειώστε ότι αυτό δεν θα λειτουργήσει:

header('Location: $url');

Θα πρέπει να το κάνετε αυτό (για τη μεταβλητή επέκταση):

header("Location: $url");
Απαντήθηκε 09/12/2008 στις 20:40
πηγή χρήστη

ψήφοι
3
<?php

// do something here

header("Location: http://example.com/thankyou.php");
?>
Απαντήθηκε 09/12/2008 στις 20:03
πηγή χρήστη

ψήφοι
0

Εδώ είναι μια λύση για τα «κεφαλίδες έχουν ήδη σταλεί» το πρόβλημα. Ας υποθέσουμε ότι είστε επικύρωση και ηλεκτρονικού ταχυδρομείου μια φόρμα. Βεβαιωθείτε ότι ο κωδικός php είναι το πρώτο πράγμα στη σελίδα σας ... πριν από οποιαδήποτε από τις ετικέτες τύπο εγγράφου και το κεφάλι και όλα αυτά τζαζ. Στη συνέχεια, όταν το POST φτάνει πίσω στην σελίδα του κώδικα php θα έρθει πρώτο και δεν αντιμετωπίζουν τις κεφαλίδες που έχουν ήδη αποσταλεί πρόβλημα.

Απαντήθηκε 21/05/2014 στις 10:43
πηγή χρήστη

ψήφοι
0

μην ξεχάσετε να βάλετε ένα «καλούπι» μετά την κλήση σας για να κάνετε την ανακατεύθυνση συμβεί πριν από το υπόλοιπο του κώδικα στη σελίδα λειτουργεί έριξε. ένα. αν έχετε header λειτουργίες πιο κάτω στη σελίδα που θα αντικαταστήσει αυτά πιο πάνω κώδικα.

β: im υποθέτοντας ότι δεν θέλετε το υπόλοιπο του κώδικα στη σελίδα για να τρέξει και αυτό γιατί τη θέση σας αυτή ανακατευθύνει στην στην πρώτη θέση [ίσως].

παράδειγμα:

<?php

// do something here

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

//code down here now wont get run

?>
Απαντήθηκε 11/06/2013 στις 15:22
πηγή χρήστη

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