(dahil) Neden bunu kullanmak gerekir?

4 Cevap php

Ben 2003 yılında yazılmış bir eski php mysql kitap ile çalışıyorum. Yazar kullandığı vb header.inc, Footer.inc, main.inc dosyaları dahil ederek html sayfaları oluşturmak için () fonksiyonu vardır Şimdi bu olmadığını öğrenmek Ben sunucudan birçok uyarıları aldıktan sonra varsayılan ini ayarlarında izin, (allow_url_include Kapalı ayarlanır).

Ben parantez olmadan include kullanabileceğiniz da fark ettim. Ben bu denedim ve çalışıyor ve ben hiçbir hata iletileri veya uyarılar alıyorum. İki farklı mı? Yani, include dan include() farklıdır?

4 Cevap

Kullanımı () (SLP) veya Remote File Include(RFI) Vulnerably Dahil Yerel Dosya tanıtabilirsiniz içerir. Denemek ve örneğin, dahil kullanmaktan kaçınmalıdır if you are including HTML onun daha iyi print(file_get_contents($file)) yazmak için include($file). Ancak include() 'PHP dosyaları ing kod tekrarını azaltmak için en php uygulamalar gereklidir.

Uzaktan dosya dahil devre dışı bile onun hala Advanced LFI Attack kullanarak sistemi yararlanmaya possilbe.

Bir include() kullanıcı girişini kabul etmek gerek yoksa, o zaman bir beyaz listeye emin onun yapmak gerekir:

$good_includes=array("contact","home","view");
if(in_array($_GET[page],$good_includes)){
    include("inc/".$_GET[page].".php");
}

Bu bir yanlış anlaşılma. Sen (Bir URL http://www.example.com/include.php yerine bir dosya sistemi yolunu kullanarak) remote dosyaların dahil kapatabilirsiniz. Her zaman yerel dosyaları içerebilir.

include normal bir işlev değil, bir dil oluşumu çünkü ikincisi. Gibi die, bu parantez olan veya olmayan kullanılabilir. Source: Manual

() Özel bir dil yapıdır içerdiğinden, parantez içine gerekli değildir. Dönüş değeri karşılaştırırken dikkat edin.

Fonksiyon include dosyaların dinamik inckuding için iyidir. Biz döngüsünde dosyaları, bu çok iyi eklerseniz. Biz staticly dosyaları içerir Ama, eğer biz require kullanmalısınız. Ikinci işlev script başlamasını yapmak.

include / require_once ve require ile büyük bir fark var.

Temel fark, hata raporlama Eğer {[kullanıyorsanız, PHP dosyayı yüklemeye çalışacaktır ama o yoksa, o (komut dosyası durmayacaktır anlamında) olmayan ölümcül hata atmak olacaktır uygulamanızda dahil kullanırsanız (0)]} ardından komut durdurmak ve işleme duracaktır.

Bir hata varsa hatayı göstermek için değil belirtmek ve böylece kullanıcı bilmiyorum çünkü require uygulamanız için temel olan ve şablonları include kullandığınız dosyaları kullanmak onun değil birincil şablon olarak sürece fark gibi header.php olarak eklemek

Bu işlevler esas olarak uygulama alakalı dosyaları dahil etmek için kendi sunucusu üzerinde kullanılır.

Eğer sunucu dışından dosyaları da dahil olmak üzere eğer yüklü veya file_get_contents() eğer o zaman ben curl kullanmak istiyorsunuz.

Bu size yardımcı olur umarım.

require require_once, require_once dosya birden fazla dahil olmadığından emin olmak için mantık katacak, yani size bildirmek istemiyorum vs sadece bir not kereden fazla veritabanı bağlantı daha