Ben "return;" kullanmalısınız

5 Cevap

Hızlı bir soru, ben başlık işlenmiş iken benim başlık yönetmenlerin bazı bazı lag almak olduğunu fark. Başlıklarını kullandıktan sonra iade standardını kullanarak mı? Ayrıca bu tür işleme sayfaları gibi doğrudan erişilen istemediğiniz sayfalar, bir başlık kullanırsanız dönecektir; Bu işlemi durdurmak sayfaya doğrudan erişilen olmasa bile? Dönüş iyi bir fikir olup olmadığını çıkış kullanmak daha iyi olacaktır () olurdu?

5 Cevap

header("Location: ......"); exit; oldukça yaygın bir kalıptır.

Bu need çağrıldıktan sonra return; tedarik yoktur header but I know some people use the convention of supply exit; header, aşağıdaki kod sağlamak için çağırmak sonra Bir yönlendirme sırasında yürütmek değil.

Yönlendirir: Eğer header() Yer dışında başka şeyler için kullanabilirsiniz aklınızda tutun:

header("Content-type: image/jpeg"); // for example

The reason you would exit after a header redirect is, any content output after a header() redirect, will (most likely) not be seen by the browser. More importantly you wouldn't want any code to be executed after a header() redirect, so calling exit() after a redirect is good practice.

Eğer başlık göndermek zaman, onlar yerine başka bir url istemek gerektiğini düşünüyorum istemci (tarayıcı) için sadece danışmanlık ama. Ancak, hiçbir şey sizin tavsiye aşağıdaki değil onları durduramaz. Sunucu onlara besleme tutar Onlar, mevcut url fazla veri okumaya devam edebilirsiniz. Genellikle daha fazla veri çıktısı durdurmak eğer onları okumak için, bir şey yok, çünkü) bir yönlendirme başlığı gönderdikten sonra (çıkış çağıran php kodunu görmek nedeni budur.

Kenara istenmeyen veri okuma onları tutarak, başka nedenler var:

Belki senaryonun kalanı kaynakları israf, yürütme devam etmek için sadece düz anlamsız.

Komut devam ederse belki çalışma zamanı hataları oluşacak (eski, orada eksik değişkenler vardı, ya da bir db bağlantısı başarısız).

Betik (ex, kullanıcı giriş doğrulama / kimlik doğrulaması başarısız) devam ederse belki mantık hataları oluşacak.

Bir header("Location: ...") sonra ne yapılacağını belirlemek için müşteriye kalmış.

Sonra herhangi bir kod header() bakılmaksızın idam edilecek. Bir exit(); sadece başlığından sonra bir teminattır ve site güvenliğini sağlamak için gerekli koymak.

Eğer header("Location: ...") sonra biraz şeker varsa, tarayıcı yapmak zorunda tek şey isteği göz ardı etmektir. Sonra gün gibi açık olacak. exit(); sayfanın yürütülmesini ve hopefully duruyoruz ile app başka saldırı vektörleri vardır!