Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zawartosc pliku w zmiennej i kod php
paBlas16
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 3
Dołączył: 27.09.2009
Skąd: Toruń

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


Witam. Może trochę to głupie co robię ale to będzie używane przez laików (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




zobacz funkcję eval()
Go to the top of the page
+Quote Post
paBlas16
post
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 3
Dołączył: 27.09.2009
Skąd: Toruń

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


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ę..
Go to the top of the page
+Quote Post
P4vl0
post
Post #4





Grupa: Zarejestrowani
Postów: 17
Pomógł: 2
Dołączył: 13.04.2010

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


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.
Go to the top of the page
+Quote Post
paBlas16
post
Post #5





Grupa: Zarejestrowani
Postów: 45
Pomógł: 3
Dołączył: 27.09.2009
Skąd: Toruń

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


  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.
Go to the top of the page
+Quote Post
mortus
post
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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.
Go to the top of the page
+Quote Post
paBlas16
post
Post #7





Grupa: Zarejestrowani
Postów: 45
Pomógł: 3
Dołączył: 27.09.2009
Skąd: Toruń

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


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?
Go to the top of the page
+Quote Post
mortus
post
Post #8





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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);
Go to the top of the page
+Quote Post
paBlas16
post
Post #9





Grupa: Zarejestrowani
Postów: 45
Pomógł: 3
Dołączył: 27.09.2009
Skąd: Toruń

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


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?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 27.09.2025 - 01:54