2011-07-31 15 views
6

tarafından AJAX numaralı çağrıyla sayfa içeriklerini almaya çalışıyorum. Bir sayfa sarıcı içinde bir dizi bağlantım var. Bir bağlantıyı tıkladığımda, sayfa içeriğini bir php komut dosyasından alan bir JavaScript işlevi yükler. Bu durumda, localhost üzerinde geliştiriyorum, ancak üretimde betik, AJAX numaralı çağrıyı yapan dosya ile aynı kök klasör ve etki alanı içinde olacaktır. Yanıtı, bir div için içerik olarak kullanıyorum. İçerik tamamen PHP değildir ve bu, php tarafından oluşturulduğu zamans ves gibi geniş bir alana sahip olduğu anlamına gelir. Temel olarak açılış ve kapanış gövde etiketleri arasında gidip gelen şeyler. Bu nedenle, json_encode'u kullanabileceğime emin değilim. Bunun yerine div içerik yüklemeWrapper, sunucu yapılandırmasında allow_url_include = 0

, ben şu hatayı alıyorum: allow_url_include üzerinde okuduktan sonra

Warning: require_once() [function.require-once]: http:// wrapper is disabled in the server configuration by allow_url_include=0

genellikle varsayılan olarak devre dışıdır gibi görünüyor. Bu özelliğin bazı ciddi site saldırılarına izin verdiğini varsayıyorum. Bu durum böyle mi? Öyleyse, içeriği başka bir dosyadan nasıl alabilirim?

Ben JQuery yük fonksiyonu kullanılarak çalıştı:
$('#content').load('pages/test_page.php'); 

ama tam aynı sonuçlarla

.

Bu beni deli ediyor! TIA.

EDIT: Sanırım problemi bulmuş olabilirim; AJAX içeriğinin aldığı php dosya içeriği require_once kullanıyor. Gereksinim duyduğu dosya aynı kök klasörde aynı sunucuda, ancak bir dizin yukarı oldu. HOWEVER, bu yeni bir sorun yaratıyor: İçeriği alıyorum, tam olarak değil. Örneğin, dosyada bu var:

Title: <?php echo $details['title']; ?> 

Ben sadece ilk harfi alıyorum ve bu diğer php içeriğin ben echo için de geçerlidir.

cevap

8

allow_url_include sadece include() ve require(), hala web sayfalarını almak için ARMUT HTTP_Request2 modül veya curl işlevleri kullanabilirsiniz etkiler. Uzak web sayfaları için include()'u kullanmak, "kötü uygulama" olarak kabul edilir ve güvenlik riski oluşturabilir. Eğer include($var); kullanıp Örneğin, bazı saldırgan tam o sırada içeriği ile belgelerinizin yeni bir dosya yazma file_get_contents() kullanın ... http://hacksite.tld o/o "enjekte" bir kod ile

1

yok endişeleri $ var değiştirmek için yönetir sen Dosyanızda dosya bulundu, include. Şu anda dahil ettiğiniz dosya, css, javascript vb. kullanarak istediğiniz herhangi bir değişiklik için hazırdır. Bu temelde bir sarmalayıcıdır. Tam bir url kullandığınız için

-2

. yerine aşağıdakileri deneyin:

$('#content').load('test_page.php'); 
İlgili konular