php ile harici bir siteye yönlendirmek için çalışıyor

2 Cevap php

Ben mobil kullanıcıların ve aşağıdaki çalışılıyor yönlendirmek çalışıyorum, ama aslında hiç yönlendirmek değil ...

$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
//print $ua;

$search = array('windows ce', 'avantgo', 'mazingo', 'mobile', 'iphone', 't68', 'syncalot', 'blazer');

foreach($search as $sk => $sv) {
    if(preg_match('/\b'.$sv.'\b/i', $ua)) {
        header("Location: http://m.example.com");
        exit;
    }

}

2 Cevap

Önce sadece Attempting to Redirect başlığında yerine yankılanan denemek isteyebilirsiniz, bu nedenle birini yönlendirmek için çalışıyor eğer o zaman görebilirsiniz. Fonksiyonunun ilk yarısı çalışır eğer bu şekilde kontrol edebilirsiniz.

İşte blog post ne yapıyorsun çok benzer bir şey hakkında, muhtemelen daha kolay olduğu, bunun yerine preg_match strpos kullanır.

Bu 'yönlendirme' değilse, AKA, header fonksiyonu bütün diğer bir sorun var, çalışıyor gibi görünmüyor.


header fonksiyonu çalışmıyorsa, yönlendirmek için tarayıcılarının listesine Firefox eklemeyi deneyin ve sonra tarayıcıya gönderilen başlıklarını kontrol etmek Firebug kullanın.

PHP ve Apache etkileşimde nasıl bir sorun olabilir.

Eğer error_reporting kapalı olması bir şans var. Bunu yaparsanız, PHP çıktı boşluk senin başlık komutundan önce oraya gönderilir diyor bir hata çalışıyor olabilirsiniz.

header() komutundan önce, error_reporting(E_ALL); ayar ve bunun boşuna bir hata mesajı verirse kontrol denedikten

Headers could not be sent. Headers have already been sent on file.php line 1. 

Herhangi bir HTML, boşluk, ya da hemen hemen header() komutundan önce çıkışı her türlü gönderirseniz başlıkları sayfanın içeriği önce gönderilmesi gerekir Temel olarak, PHP hata olur. İlk boşluk gönderildikten sonra, başlıklar gönderilir ve artık gönderemezsiniz

Başlıkları kullanılarak gönderilen eğer header_sent() kontrol edebilirsiniz

if(headers_sent()){ echo "Headers Sent"; }

Bu başlık arama yapmadan önce yanıtı henüz geçerli sayfaya taahhüt değil emin olun. Herhangi bir metin zaten çıktı akışı ... metin, boşluklarla, vb yazılı olması durumunda, bu olur