2011-07-31 32 views
6

Próbuję pobrać zawartość strony za pomocą wywołania AJAX. Mam serię linków w opakowaniu strony. Po kliknięciu łącza ładuje się funkcja JavaScript, która pobiera treść ze skryptu php. W tym przypadku rozwijam się na moim localhost, ale w produkcji skrypt będzie znajdować się w tym samym folderze głównym i domenie, co plik wywołujący wywołanie AJAX. Używam odpowiedzi jako treści dla div. Treść nie jest czysto PHP, a przez to mam na myśli, podczas gdy jest generowany przez php ma HTML elementów takich jak div s i przęsła. Zasadniczo chodzi o rzeczy, które przechodzą między otwierającymi i zamykającymi znacznikami ciała. Z tego powodu nie jestem pewien, czy mogę po prostu użyć json_encode.Opakowanie jest wyłączone w konfiguracji serwera przez: allow_url_include = 0

Zamiast ładowania treści w div, pojawia się następujący błąd:

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

Po czytania na allow_url_include wydaje się, że to jest zwykle domyślnie wyłączona. Zakładam, że ta funkcja pozwala na poważne ataki na strony. Czy tak jest w tym przypadku? Jeśli tak, jak mogę pobrać zawartość z innego pliku?

Próbowałem przy użyciu funkcji JQuery obciążenie:

$('#content').load('pages/test_page.php'); 

ale z dokładnie takich samych rezultatów.

To doprowadza mnie do szału! TIA.

EDIT: Myślę, że mogłem znaleźć problem; plik php, z którego pobierana jest treść, to require_once. Plik, którego wymaga, znajduje się na tym samym serwerze w tym samym folderze głównym, ale był to jeden katalog w górę. JEDNAK, tworzy to nowy problem: otrzymuję treść, ale nie w pełni. Na przykład w pliku mam to:

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

jestem tylko coraz pierwszą literę, a to odnosi się do drugiej php zawartości że echo.

Odpowiedz

8

allow_url_include wpływa tylko include() i require(), nadal można korzystać z modułu PEAR HTTP_Request2 lub funkcji curl pobrać stron internetowych.

Używanie do zdalnych stron internetowych jest uważane za "złe praktyki" i może stanowić zagrożenie bezpieczeństwa. Na przykład, jeśli używasz include($var); a niektórzy atakujący zdoła zastąpić $ var z http://hacksite.tld on/ona może „wstrzyknąć” Kod ...

1

nie ma obaw, wystarczy użyć file_get_contents() następnie napisać nowy plik w dokumentach z treścią ty pobrałem, a następnie include plik w twoim pliku. plik, który teraz zawierasz, jest gotowy na każdą zmianę, którą chcesz, używając css, javascript itd. to jest właściwie to, co robi otwieracz.

-2

ponieważ używasz pełnego adresu URL. spróbuj zamiast tego:

$('#content').load('test_page.php');