Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zawartosc pliku w zmiennej i kod php
Forum PHP.pl > Forum > PHP
paBlas16
Witam. Może trochę to głupie co robię ale to będzie używane przez laików winksmiley.jpg

Mam plik content.php i np. kontakt.php

content.php

  1. <?php
  2. $default_url = encode_url("newsy/index.php");
  3.  
  4. $file = $_GET['u'];
  5. if(empty($file)){ $file = $default_url; }
  6. $file = decode_url($file);
  7. $file = sprawdz_plik($file);
  8. $file = file_get_contents($file);
  9. $cala = explode('@all_content@',$file);
  10. $ile_cala = count($cala);
  11.  
  12. if ($ile_cala == 2){
  13.  
  14. $ac = 1;
  15. $tresc = '
  16. <div class="column_all">
  17. '.$cala[1].'
  18. </div>
  19. ';
  20.  
  21. } else {
  22.  
  23. $lewa = explode('@left_content@',$text);
  24. $ile_lewa = count($lewa);
  25.  
  26. if ($ile_lewa == 2){
  27.  
  28. $prawa = explode('@right_content@',$lewa[1]);
  29. $ile_prawa = count($prawa);
  30.  
  31. if ($ile_prawa == 2){
  32.  
  33. $lewa[1] = str_replace('@right_content@'.$prawa[1], " ", $lewa[1]);
  34.  
  35. }
  36.  
  37. $lc = 1;
  38. $tresc = '
  39. <div class="column">
  40. '.$lewa[1].'
  41. </div>
  42. ';
  43.  
  44. if ($ile_prawa == 2){
  45.  
  46. $tresc .= '
  47. <div class="column2"><br><br>
  48. '.$prawa[1].'
  49. </div>
  50. ';
  51.  
  52. }
  53. }
  54. }
  55. ?>


kontakt.php

  1.  
  2. @left_content@
  3.  
  4. coś tak związane z kontaktem z firma
  5.  
  6. @right_content@
  7.  
  8. nasza firma zajmuje sie produkcja wszelakiego dziadostwa
  9.  


i teraz jeżeli w pliku kontakt.php znajduje się sam html to jest ok ale jeśli pojawi tam się jakakolwiek wstawka php to jest ona interpretowana jak zwykły tekst, nie wykonuje się. Czy da się to jakoś zrobić. Mój sposób wydaje się dosyć fajny ale niestety. Czekam na szybkie odpowiedzi. W $_GET['u'] - jest przesyłany adres pliku który ma się otworzyć jako zawartość. To @all , left , right _content@ jest gdyż cała strona jest zrobiona tak że zawartość można wyświetlać albo na całej szerokości w jednej kolumnie albo w dwóch. Mam nadzieję że zrozumieliście ;p
Spawnm
zobacz funkcję eval()
paBlas16
No ale właśnie czy mógłbyś mi pokazać jak tego uzyc w sensie w moim kodzie. Jak go przerobić. Byłbym bardzo wdzięczny.

Czy ktoś może mi pomóc?

Nikt nie jest w stanie mi pomóc? ;o
Proszę..
P4vl0
Czy oby na pewno otwierasz i zamykasz znacznik php(<? ?>) w pliku kontakt.php? A funkcja eval() zamienia string na kod php. Pokaż kontakt.php ze wstawką php.
paBlas16
  1.  
  2. @left_content@
  3. ul. Łyskowskiego 28,
  4. 87 - 100 Toruń
  5. tel./fax (0-56) 648 56 70tel. (0-56) 648 09 47 &nbsp;, (0-56) 648 09 47<br>
  6. e-mail: szkola8@szkola8.torun.pl
  7. Dojazd autobusami nr: 15, 16, 19, 20, 26, 30, 33, 34, 40 <? echo "125"; ?>
  8.  
  9. @right_content@
  10. treść prawej kolumny <? show_date(); ?>
  11.  
  12.  


To jest kontakt.php a czy mógłby ktoś wgl pokazać jak go użyć bo jak zrobiłem tak jak na stronach innych pisalło to wywalało mi błąd : Parse error: syntax error, unexpected '@' in /var/www/sites/yoyo.pl/p/a/panelwebmastera/content.php(11) : eval()'d code on line 2 . Ten kontakt to taki przykładowy kod. Funkcja show_date() istnieje.
mortus
Zapewne chodzi o to, że @ w php to operator kontroli błędów. eval musiałbyś wykonywać na zmiennej $tresc. Możesz też zmienić @ na inny znak lub ciąg znaków np. znak HTML-owego komentarza.
paBlas16
Ale czy mógłby to pokazać na kodzie. Jaki przykład działania eval i jak go stosować na przykładzie pliku kontakt.php?
mortus
Zasada działania eval.
Załóżmy, że mamy plik:
[PHP] data.php - pobierz, plaintext
[PHP] data.php - pobierz, plaintext
Jego zawartość pobieramy za pomocą funkcji file_get_contents('data.php') i zapisujemy ją jako $content. Następnie poddajemy zmienną $content działaniu eval
  1. <?php eval($content); ?>
co jest równoważne z
  1. <?php echo time(); ?>
Jedynie takie rozwiązanie jest prawidłowe i działa.
Załóżmy teraz, że nasz plik data.php wygląda nieco inaczej, a mianowicie
[PHP] data.php - pobierz, plaintext
  1. <?php echo time(); ?> DANE
[PHP] data.php - pobierz, plaintext
Wczytujemy ponownie plik za pomocą file_get_contents() i zapisujemy pod zmienną $content. Zmienna $content zawiera teraz łańcuch znaków "<?php echo time(); ?> DANE". Jako, że funkcja eval wykonuje się w ciele skryptu php (tzn. pomiędzy znacznikami <?php i ?>), wywołanie eval($content) spowoduje błąd, ponieważ będzie równoważne zagnieżdżeniu skryptu w skrypcie
  1. <?php eval($content); ?>
to w tym przypadku
  1. <?php <?php echo time(); ?> DANE ?>
Zatem znak < będzie nieoczekiwanym (unexpected).
Ale plik data.php możemy jeszcze inaczej zapisać:
[PHP] data.php - pobierz, plaintext
  1. echo time(); DANE
[PHP] data.php - pobierz, plaintext
Jednak to również spowoduje błąd, ponieważ
  1. <?php eval($content); ?>
będzie w tym przypadku oznaczać
  1. <?php echo time(); DANE ?>
gdzie słowo "DANE" jest najzwyklejszym łańcuchem znaków, który do tego miejsca nijak nie pasuje.


Jak zatem wczytać plik kontakt.php? Po prostu z serwera. Przy czym plik najpierw powinien zostać przetworzony przez PHP, a później zwrócony przez file_get_contents(). Jak to się robi? Zamiast pobierać plik z katalogu
  1. <?php
  2. $content = file_get_contents('kontakt.php');
  3. ?>
pobieramy go z lokalizacji sieciowej
  1. <?php
  2. $content = file_get_contents('http://localhost/htdocs/sciezka/do/pliku/kontakt.php');
  3. ?>
I problem z głowy.
@paBlas16 Dla Ciebie oznacza to, że musisz jedynie zmienić linijkę 8 na odpowiednią. W stylu
  1. $file = file_get_contents('http://domena.ext/sciezka/do/pliku/' . $file);
paBlas16
Witam zrobiłem tak jak mi kazał kolega mortus któremu bardzo dziękuję za pomoc lecz nic z tego nie wyszło. dopisałem do file_get_content po prostu adres i jak odpaliłem to błąd: Warning: file_get_contents(http://panelwebmastera.yoyo.pl/left_content/kontakt.php) [function.file-get-contents]: failed to open stream: Connection refused in /var/www/sites/yoyo.pl/p/a/panelwebmastera/content.php on line 17

POMOCY. Może chodzi o to ze do darmowy hosting?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.