Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Includowanie juz wykonanego skryptu, ob_start()?
bodzio16
post 11.05.2015, 06:02:45
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.05.2015

Ostrzeżenie: (0%)
-----


Witam!

Mam wordpress, chcę wstawić jego nagłowek i stopkę do templatów innych skryptów, które używam. Najprościej byłoby skopiować kod html z wyniku, i wkleić, ale wtedy stracę dynamikę - modyfikowanie menu itp.

Wordpress daje możliwość wstawienia nagłówka i stopki poprzez kod:

  1. <?
  2. require('wp-load.php');
  3. include('wp-content/themes/theme/header.php');
  4. ?>



Niestety powstaje wtedy u mnie konflikt skyptów, nazw funkcji, i takie wstawienie nie działa. Do tego mam jeszcze powiązane bazodanowo phpBB z Wordpressem stąd szukam innego rozwiązania.

Wymyśliłem, że wykonam "na boku", w osobnym pliku (test.php) to powyższe, a potem wynik już jako czysty HTML+CSS, dodam do header templatki mojego skryptu (header.html) i będzie działało. Zrobiłem to tak:

test.php
  1. <?
  2. require('wp-load.php');
  3. include('wp-content/themes/theme/header.php');
  4. $header_output = ob_get_contents();
  5. ?>



Całość includuję tak do header.html (templatka z obługą php):

  1. <?
  2. include('test.php');
  3. echo($header_output);
  4. ?>



Niestety znowu powstaje konflikt, czyli nie includuję wyniku, tylko jednak skrypt.

Potem wpadłem na pomysł, że przecież konflikty biorą się z wp-load.php, zatem trzeba go includować do bufora, by nie trafił do header.html. Zrobiłem tak:

test.php
  1. <?
  2. require('wp-load.php');
  3. include('wp-content/themes/theme/header.php');
  4. $header_output = ob_get_contents();
  5. ?>


Niestety nic to nie zmieniło.

Przetestowałem sam plik test.php tak jak poniżej, i działa. Po includzie do header.html niestety nie błąd redeklarowanej funkcji.

test.php
  1. <?
  2. require_once('wp-load.php');
  3. include_once('wp-content/themes/theme/header.php');
  4. $header_output = ob_get_contents();
  5.  
  6. echo($header_output);
  7. ?>


Dla testu zapisałem zawartość (przez fwrite()) $header_output do pliku tekstowego - wygenerował się właśnie czysty html, bez zawartości plików php. Zatem wydaje się, że coś jednak jest nie tak z includami...
W teorii mógłbym teraz includować zawartość tego pliku textowego, ale uważam za niewydaje za każdym razem generowanie pliku textowego?

Czy ktoś może mi poradzić gdzie popełniam błąd, ewentualnie inne rozwiązanie? Co zrobić, by zawartość wp-load.php nie trafiała do templatki?
Go to the top of the page
+Quote Post
KsaR
post 12.05.2015, 00:27:06
Post #2





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


include* i require* służą aby dołączyć kod do skryptu.
Jeśli chcesz dołączyć sam wynik bez skryptu skojrzystaj z file_get_contents();

Czyli.. jak próbowałeś tak:
Cytat
  1. require_once('wp-load.php');
  2. include_once('wp-content/themes/theme/header.php');
  3. $header_output = ob_get_contents();
  4.  
  5. echo($header_output);


Żeby działało musisz tak:
  1. $headers=file_get_contents('wp-load.php');
  2. $headers.=file_get_contents('wp-content/themes/theme/header.php');
  3. // lub
  4. $headers=file_get_contents('wp-load.php').file_get_contents('wp-content/themes/theme/header.php');


Ten post edytował Ksar 12.05.2015, 00:28:31


--------------------
Go to the top of the page
+Quote Post
bodzio16
post 12.05.2015, 06:43:55
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.05.2015

Ostrzeżenie: (0%)
-----


Nie rozumie, get_file_contents zapisuje przecież zawartośc do zmiennej - a ja chcę wyonać wszystko to, co się dzieje w wp-load.php i header.php.

Jak zrobiłem

  1. <?
  2. //require_once('wp-load.php');
  3. //include_once('wp-content/themes/remix/header.php');
  4. //$header_output = ob_get_contents();
  5.  
  6. $header=file_get_contents('/wp-content/themes/header/header.php');
  7. $wpload=file_get_contents('/wp-load.php');
  8. echo($header);
  9. echo($wpload);
  10. $header_output = ob_get_contents();
  11. ?>


To i tak to nie zadziała, a jak dam bez echo - podobnie, nie wykona się...
Go to the top of the page
+Quote Post
Pyton_000
post 12.05.2015, 07:27:56
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


zawsze możesz dać

  1. $header=file_get_contents('http://domena.pl/wp-content/themes/header/header.php');
Go to the top of the page
+Quote Post
IProSoft
post 12.05.2015, 07:55:48
Post #5





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

Ostrzeżenie: (0%)
-----


Utwórz sobie plik, np: header-custom.php i wklej do niego:

  1. <?php
  2. require_once('wp-load.php');
  3. include_once('wp-content/themes/theme/header.php');
  4. ?>


A w miejscu gdzie chcesz wstawić jego efekt, dodaj:

  1. echo file_get_contents('http://domena.pl/header-custom.php');


Ten post edytował IProSoft 12.05.2015, 07:56:11


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
bodzio16
post 12.05.2015, 11:37:49
Post #6





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.05.2015

Ostrzeżenie: (0%)
-----


Niestety tak nie działa. Zamiast tego wstawia mi po prostu zawartość custom-header.php, czyli:

<?php
require_once('wp-load.php');
include_once('wp-content/themes/theme/header.php');
?>

a nie wykonany skrypt...
Go to the top of the page
+Quote Post
Pyton_000
post 12.05.2015, 12:11:29
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Pokaż kod bo mi się wierzyć nie chce
Go to the top of the page
+Quote Post
lukasz1985
post 12.05.2015, 12:36:32
Post #8





Grupa: Zarejestrowani
Postów: 205
Pomógł: 43
Dołączył: 5.03.2012

Ostrzeżenie: (0%)
-----


Lepiej rozwiąż konflikty nazw. Nie ma nic gorszego niż takie głupie triki jak ten z file_get_contents.
Go to the top of the page
+Quote Post
Pyton_000
post 12.05.2015, 14:01:08
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Cytat
Nie ma nic gorszego niż takie głupie triki

Są, uwierz mi na słowo wink.gif
Go to the top of the page
+Quote Post
bodzio16
post 12.05.2015, 17:51:16
Post #10





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.05.2015

Ostrzeżenie: (0%)
-----


zawartosc test.php

<?
require_once('wp-load.php');
include_once('wp-content/themes/theme/header.php');
?>

zawartość header.html

  1. <?php
  2.  
  3. echo(file_get_contents('/home/public_html/wp/test.php'));
  4.  
  5.  
  6. ?>


Kod źródłowy juz w przeglądarce header.html:

  1. <?
  2.  
  3. require_once('wp-load.php');
  4. include_once('wp-content/themes/remix/header.php');
  5.  
  6. ?>
  7.  
  8. <script language="javascript" type="text/javascript">
  9. <!--
  10.  
  11. var captcha_reload_count = 0;
  12. var captcha_image_url = "./captcha.php";
  13. function new_captcha_image() {
  14. if (captcha_image_url.indexOf('?') == -1) {
  15. document.getElementById('captcha_image').src= captcha_image_url+'?c='+captcha_reload_count;
  16. } else {
  17. document.getElementById('captcha_image').src= captcha_image_url+'&c='+captcha_reload_count;
  18. }
  19.  
  20. //blablabla... i reszta zawartości header.html


Czyli, że wstawia mi treść test.php, a nie wynik zawartych w nim skryptów.
Go to the top of the page
+Quote Post
Wazniak96
post 12.05.2015, 18:19:26
Post #11





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

Ostrzeżenie: (0%)
-----


Masz podać pełen link z przeglądarki a nie ścieżka...
Go to the top of the page
+Quote Post
bodzio16
post 12.05.2015, 18:38:21
Post #12





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.05.2015

Ostrzeżenie: (0%)
-----


bez zmian, czy mam
  1. <?php
  2.  
  3. echo(file_get_contents('http://www.domena.pl/wp/test.php'));
  4.  
  5. ?>


czy ze ścieżką.. więc to nie to, mimo takiegho pewnego tonu.
Go to the top of the page
+Quote Post
IProSoft
post 12.05.2015, 20:00:56
Post #13





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

Ostrzeżenie: (0%)
-----


Otwiersz short tagiem w pliku test.php,
  1. <?

zamień na
  1. <?php


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
bodzio16
post 12.05.2015, 20:11:44
Post #14





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.05.2015

Ostrzeżenie: (0%)
-----


bez zmian, znowu treść test.php w header.html zamiast wykonanego header.php / wp-load.php
Go to the top of the page
+Quote Post
IProSoft
post 12.05.2015, 20:54:05
Post #15





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

Ostrzeżenie: (0%)
-----


A gdy odpalasz w przeglądarce plik http://www.domena.pl/wp/test.php pojawia się tekst ?

Jeśli tak to nie parsuje Ci pliku jako PHP


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
bodzio16
post 12.05.2015, 21:03:08
Post #16





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.05.2015

Ostrzeżenie: (0%)
-----


pojawia się, jak już pisałem, poprawnie, czyli to, czego oczekuję - grafika, rozwijane menu etc. zatem parsuje.
Go to the top of the page
+Quote Post
salfunglandyare
post 12.05.2015, 21:08:23
Post #17





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

Ostrzeżenie: (0%)
-----


A co pokazuje:
  1. echo file_get_contents('http://www.domena.pl/wp/test.php');
  2. var_dump($http_response_header);

?
Go to the top of the page
+Quote Post
bodzio16
post 13.05.2015, 04:05:51
Post #18





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.05.2015

Ostrzeżenie: (0%)
-----


W treści:

  1. <?php
  2. require_once('wp-load.php');
  3. include_once('wp-content/themes/theme/header.php');
  4. ?>NULL
Go to the top of the page
+Quote Post
IProSoft
post 13.05.2015, 07:52:00
Post #19





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

Ostrzeżenie: (0%)
-----


Kod w taki sposób pojawi się w wypadku użycia odwołania do pliku, np file_get_contents('/wp/test.php');, więc upewnij się, że wpisujesz też adres domeny.

lub

Spróbuj tak:
  1. function curl_download($Url){
  2.  
  3. // is cURL installed yet?
  4. if (!function_exists('curl_init')){
  5. die('Sorry cURL is not installed!');
  6. }
  7.  
  8. // OK cool - then let's create a new cURL resource handle
  9. $ch = curl_init();
  10.  
  11. // Now set some options (most are optional)
  12.  
  13. // Set URL to download
  14. curl_setopt($ch, CURLOPT_URL, $Url);
  15.  
  16. // Set a referer
  17. curl_setopt($ch, CURLOPT_REFERER, 'http://' . parse_url($Url, PHP_URL_HOST) );
  18.  
  19. // User agent
  20. curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
  21.  
  22. // Include header in result? (0 = yes, 1 = no)
  23. curl_setopt($ch, CURLOPT_HEADER, 0);
  24.  
  25. // Should cURL return or print out the data? (true = return, false = print)
  26. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  27.  
  28. // Timeout in seconds
  29. curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  30.  
  31. // Download the given URL, and return output
  32. $output = curl_exec($ch);
  33.  
  34. // Close the cURL resource, and free system resources
  35. curl_close($ch);
  36.  
  37. return $output;
  38. }
  39.  
  40. echo curl_download('http://www.domena.pl/wp/test.php');


Ten post edytował IProSoft 13.05.2015, 07:53:08


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
bodzio16
post 13.05.2015, 17:36:54
Post #20





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.05.2015

Ostrzeżenie: (0%)
-----


I tu ciekawostka: Forbidden 403, czyli coś po drodze jest "zabronione", chyba nie chmody... Może coś template jednak blokuje?

EDIT:

Kombinowałem - nie wiem dlaczego tak się dzieje. Może ktoś mi coś podpowiedzieć?

Ten post edytował bodzio16 13.05.2015, 18:52:01
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.06.2025 - 20:41