PDA

Επιστροφή στο Forum : PHP redirect



teslafun
14-09-07, 19:39
Καλησπέρα,

Έχω δημιουργήσει σε ένα HTML μία φόρμα και κάνοντας κλικ στο κουμπί καλώ ένα αρχείο PHP απ'όπου συλλέγω τα στοιχεία και τα στέλνω σε ένα email.

Μετά από αυτό χρησιμοποιώ την Header() με αυτόν τον τρόπο:

header("Location: http://www.example.com/");

παρ'ολο που το PHP εκτελείται κανονικά δε μου κάνει redirect, αλλά μου εμφανίζει μια λευκή σελίδα.

Καμιά ιδέα;

mpardsu
14-09-07, 23:10
Pίξε μια ματιά εδώ (http://php.about.com/od/learnphp/ht/phpredirection.htm), λέει πως δεν γίνεται να κάνεις redirect αν έχεις στείλει ήδη κάτι στον browser (πχ html)

Ναι, όντως το αναφέρει και στο manual (http://de3.php.net/header)

teslafun
14-09-07, 23:19
Ευχαριστώ για την απάντηση, τα έχω διαβάσει αυτά αλλά και πάλι δε βγάζω άκρη.

Το έλυσα το πρόβλημα ύστερα από βοήθεια ενός φίλου, αλλά με meta.

alexandrozz
15-09-07, 18:55
Αν φτιάχνεις θες να κάνεις redirect μια σελίδα επειδή πχ ο χρήστης δεν έχει κάνει login η λύση του ΜΕΤΑ είναι ανασφαλής. Θα σου πρότεινα να κοιτάξεις να βρείς λύση με τη header() και επίσης να ξανακοιτάξεις το php αρχείο σου να δεις αν έχει κενά πριν το <?php ?> section. Αν έχει κάποιο κενό θα το στείλει στο browser και η header() δεν θα παίξει.

teslafun
15-09-07, 20:16
@alexandrozz

Απλώς μια φόρμα για email έκανα.
Τελικά ήταν αυτό που έλεγες, είχε ένα κενό πριν το [<?]

Υπάρχει δυνατότητα χρονοκαθυστέρησης όπως στη λύση του META;
Γιατί αν δεν υπάρχει αυτή η δυνατότητα, με βολεύει περισσότερο το ΜΕΤΑ.

Με το που στέλνει το email ο επισκέπτης τον στέλνω σε μία σελίδα που λέει ευχαριστούμε και μπλα μπλα....
και μετά από 3 δευτερόλεπτα τον στέλνω στην κεντρική σελίδα. Αυτό με τα ΜΕΤΑ γίνεται, με το header?

Ξέχασα να πω ευχαριστώ ε; :)

shaq141a
15-09-07, 23:59
Φαντάζομαι ότι χρονοκαθυστέρηση θα κάνεις με javascript/DHTML.

teslafun
16-09-07, 01:57
Φαντάζομαι ότι χρονοκαθυστέρηση θα κάνεις με javascript/DHTML.

Όχι, γίνεται με τα META απ'ευθείας.

Τώρα όμως έχω άλλο πρόβλημα. Πως θα κάνω ένα back button; έστω και σαν link.
Θέλω δλδ όταν κάτι πάει στραβά , να ενημερώνει τον επισκέπτη και κάνοντας κλικ ΕΔΩ να εκτελεί ενέργεια ίδια σαν να πατούσε το back του browser, έτσι ώστε να γυρίζει πίσω στη φόρμα χωρίς να έχουν χαθεί αυτά που έγραψε.

alexandrozz
16-09-07, 22:33
@alexandrozz

Απλώς μια φόρμα για email έκανα.
Τελικά ήταν αυτό που έλεγες, είχε ένα κενό πριν το [<?]

Υπάρχει δυνατότητα χρονοκαθυστέρησης όπως στη λύση του META;
Γιατί αν δεν υπάρχει αυτή η δυνατότητα, με βολεύει περισσότερο το ΜΕΤΑ.

Με το που στέλνει το email ο επισκέπτης τον στέλνω σε μία σελίδα που λέει ευχαριστούμε και μπλα μπλα....
και μετά από 3 δευτερόλεπτα τον στέλνω στην κεντρική σελίδα. Αυτό με τα ΜΕΤΑ γίνεται, με το header?

Ξέχασα να πω ευχαριστώ ε; :)

Η καθυστέρηση στη php γίνεται με sleep(δευτερόλεπτα)
Αλλά αυτό που ζητάς επειδή έχει ήδη στείλει δεδομένα η php ας πούμε, γίνεται με META/Javascript

vosk
18-09-07, 00:09
η καθυστερηση που ζητας ειναι στο client side, οχι στην php... δεν θες να καθυστερησει η φορτωση της σελιδας, θες να καθυστερησει ο browser.
μπορεις να γινει (και) με javascript....

@ ADSLgr.com All rights reserved.