PHP yönlendirme kodunun yürütülmesinden sonra

5 Cevap

Ben url parametreleri bir demet alır ve bir e-posta gönderen bir php sayfası var. Posta gönderildikten sonra ben, bu sayfa aynı url parametreleri kullanarak başka bir web sayfasını aramak için çalışıyorum. Ben şunları yaparsanız, benim e-posta güvenilir gönderilir? Ben gerçekten ne yapmak istediğinizi bir yönlendirme mi?


Güncelleme: ipuçları için teşekkürler. Eğer + benim kullanımı ile gördüğünüz gibi, herhangi bir php bilmiyorum. Kadar tüm cevapları okuduktan sonra ben bu ile geldi:

Random code to send email...

file_get_contents('http://www.othersite.com/' . $_SERVER["REQUEST_URI"]. "?". $_SERVER["QUERY_STRING"]);

Bu ben tam olarak ne istediğinizi tüm mevcut parametreleri ile diğer sitede bir GET başlatmak gerektiğine inanıyoruz. Bu şekilde ben yönlendirmeleri ile uğraşmak zorunda değilsiniz. Bu çözüm için herhangi bir sorun var mı?


2 güncellemek: my url https olduğundan, file_get_contents bana bazı sorunlara neden oldu. Orada bu aşmanın yolu vardır ama ben sadece bir yönlendirme için başlık kullanılan ve her şey iyi çalıştı. Herkese teşekkürler!

5 Cevap

Temel yaklaşım ne istediğinizi gerçekten olup olmadığını diğer yanıtlar kaldırdı soru geçerlidir - ilk olmadığını kontrol edin. Neyse, gerçekten yapmak istediğiniz ne varsa (size konum birine gerçekten aynı hedef URL mi?) Eğer gerçekten kullanabilirsiniz

header('Location: http://www.othersite.com/' . $_SERVER["REQUEST_URI"]);

Sadece +, sen PHP bunu yapamazsınız yerine dizeyi bağlamak için . kullanımına dikkat.

Gerçekten düzgün yapmak için, http_build_url geçerli GET diziden tam geçerli bir URL oluşturmak için kullanabilirsiniz. Manuel kod, biraz değiştirilmiş:

<?php
echo http_build_url("http://user@www.example.com/pub/index.php",
    $_GET,
    HTTP_URL_STRIP_AUTH | HTTP_URL_JOIN_PATH | HTTP_URL_JOIN_QUERY 
);
?>

Bu e-posta etkilemez böylece başlığı konum çağrı sadece posta kodundan sonra çağrılır.

Lütfen başlık konum aramadan sonra exit () aramak için unutma.

Ayrıca dize concatı operatör bulunuyor + değildir. (Nokta).

Sadece o sayfayı vurmak istiyorsan neden kullanmayın file_get_contents

$data = file_get_contents('http://www.othersite.com/' . $_SERVER["REQUEST_URI"]); 
echo $data; 

Bu ile yararı size diğer sitede komut kontrol eğer, eşit üzerinize kontrol edilebilir HTML bir doğru veya yanlış dönebilirdi etmek istemiyorsanız fiziksel diğer siteye gitmek zorunda değilsiniz döndürür.

Tam uyum için (bazen Chrome sadece bir konumu ile çalışmak olmaz: header)

header( "HTTP/1.0 302 Found" );
header( "Status: 302" ); # this is for chrome compliance
header( "Location: http://www.othersite.com/' . $_SERVER["REQUEST_URI"] );

Başka bir seçenek HTML etiketini yankı etmektir:

<meta http-equiv="Refresh" content="1;url=http://www.othersite.com/<?php echo $_SERVER['REQUEST_URI']; ?>">

Bu kullanıcı içeriğinin bir flaş ile karışık hale gelmez ki bazı durumlarda iyi yönlendirme için bir gecikme süresi (genellikle 1s), ayarlamanızı sağlar. Eğer 'biz sizi yönlendirmek ise Stand by' mesajı veya benzer koyabilirsiniz.