[php] problem z include

Odpowiedz Nowy wątek
2006-11-01 11:48
ŁATATA
0

witam!
mam taki problem. skrypt odczytuje z bazy jakis tam tekst i chce aby wyswietlił ten tekst, a w miejsce wszystkich łańcuchów znaków: {links} w tym tekście włożył includa.

proszę o pomoc

Pozostało 580 znaków

2006-11-01 12:50
0

Najpierw funkcjami obróbki stringów podmień {links}'y na funkcje include, a potem użyć eval, by ten kod wykonać. Pamiętaj jednak, że oznaczać to może, iż nieupoważniony kod (stworzony przez twórcę skryptu z bazy - pewnie to jakieś skórki czy coś takiego), wykona się na takich samych prawach dostępu do systemu co skrypt PHP! Musisz się przed tym zabezpieczyć.


<font color="red">Konto porzucone</span>

Dzięki wszystkim forumowiczom za lata wspólnych dyskusji; miłej zabawy w programowanie!
Sławomir 'Szczawik' Włodkowski

Pozostało 580 znaków

2006-11-01 20:29
0

jak się przed tym zabezpieczyć?


It's not just about livin' forever Johny.
The trick is livin' with yourself forever.

Pozostało 580 znaków

2006-11-01 20:59
0

jeśli w tym includowanym pliku nie zmieniasz danych ale są zawsze takie same to po prostu raz je sobie wykonaj a potem podmień {links} z wynikiem, np:

$tekst = str_replace('{links}',
      eval('?' . '>' . file_get_contents('plik_includowany') . '<?php '),
      $tekst);
ob_start();
include('plik_includowany');
$zamien = ob_get_clean();
$tekst = str_replace('{links}', $zamien, $tekst);

jeśli się dane aktualizują to za każdym razem wykonujesz znowu kod, pozwoli ci na to np preg_replace


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2006-11-02 00:01
0

Może chodzi Ci o to, żeby dane były w pliku txt i łatwe do zmiany (np jak chcesz często uaktualniać dane a masz niezbyt szybkie łącze z ftp)?

function zwrocplik($plik){
$linijki=file($plik);
$zmienna='';
foreach($linijki as $linijka){
$zmienna.=$linijka."\n";
};
return $zmienna;
};

bardzo prosty skrypt w działaniu (specjalnie nie utrudniałem zbytnio tego :P)

do zamiany tekstu z tym jest prosty str_replace -

$tekst str_replace('{links}',zwrocplik('localhost/odczyty_z_bazy.php?user=ja&pass=haselko',$tekst);

zaletą tego jest to, że CAŁA zawartość pliku odczyty_z_bazy.php ze zmiennymi $_GET user=ja i pass=haselko jest przekazywana do strony.

PS. napisanie dokładnie o co ci chodzi przydało by się, ponieważ niezbyt mam pojęcie o co ci właściwie chodzi.


Stopki brak.

Pozostało 580 znaków

2006-11-02 09:38
0

hmm... czy w tych postach zawiera się odpowiedź na moje pytanie?


It's not just about livin' forever Johny.
The trick is livin' with yourself forever.

Pozostało 580 znaków

2006-11-02 14:55
0
voldenet napisał(a)
foreach($linijki as $linijka){
$zmienna.=$linijka."\n";
};

Od czego jest implode()? I po co stawiasz średnik po zamykającej klamrze?

@ciapek888: nie, to są inne rozwiązania problemu postawionego w pierwszym poście :P

można zamienić wszystkie „<?” na „<?php echo '<?'; ?>” (i „<%” na „<?php echo '<%'; ?>”, jeśli jest włączone asp_tags), a następnie „{links}” na include'a. Następnie dopisać na początku „?>”, na końcu „<?php ” (koniecznie ze spacją!) i eval()-nąć.


php if ($crazy) sqrt() or die;

Pozostało 580 znaków

2006-11-04 01:53
0

skrypt został na siłę uproszczony (chociaż... może by było prościej)
a średnik po zamykającej klamrze to taki nawyk :D


Stopki brak.

Pozostało 580 znaków

2006-11-12 13:08
ŁATATA
0

udało mi się to zrobić tylko wykorzystując ten kod:

ob_start();
include('plik_includowany');
$zamien = ob_get_clean();
$tekst = str_replace('{links}', $zamien, $tekst);

Ale gdy próbowałem zrobić to dla kilku róznych {xxx} to nie działo. Jak powinien wygladac kod dla kilku róznych {xxx}?

Z góry dzięki

Pozostało 580 znaków

2006-11-12 14:04
0

str_replace(Array('{links}', '{xxx}', '{jakiestam}'), Array($zamienlinks, $zamienxxx, $zamienjakiestam), $tekst);


Grunt to uziemienie...

Pozostało 580 znaków

2006-11-12 14:53
ŁATATA
0

Mógłbyś napisać jak to w całości ma wyglądac? Niepotrafię tego zrobić...

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0