« 1 2 »
Autor Zpráva
_fantomas
Profil
Ahoj, dalo by sa prečítať PHP súbor ako TXT? Napr bude subor.php
s obsahom <?php echo 'ahoj'; A ja ten skript pomocou niečoho
prečítam a niekde ho vypíšem ako celý tex takže
by bol výsledok <?php echo 'ahoj'; a nie len ahoj
Dúfam že sa chápeme.
Napadlo ma pomocou fopen otvoriť skript ale neviem ako to potom vypísať. Vdaka za rady
Tomáš123
Profil
_fantomas:
Myslím, že hľadáš funkciu readfile(). Teoreticky by šlo PHP kód uložiť ako HTML a malo by to rovnaký následok.
juriad_
Profil *
File_get_contents
Readdir by po otevreni adresare vracel jmena souboru v adresari.
Juraj Hajdúch
Profil
Normálne si načítate obsah daného súboru do premennej a vypíšete ju na stránke:

<?php
$content = file_get_contents("subor.php");
echo $content;
?>

poprípade ešte použijete funkciu nl2br() kvôli riadkovaniu
Tomáš123
Profil
juriad:
Pardon, myslel som readfile().
_fantomas
Profil
[#4] Juraj Hajdúch táto funkcia mi nevypíše cely php kód.
        $subor = file_get_contents("test.php");
        echo $subor;

v test.php je
<?php
echo 'test';

ak dám vypísať premennú $subor vypíše mi to normálne len test
ja potrebujem vypísať cely subor čiže výsledok by mal byť

<?php
echo 'test';

Trochu zlá rada
juriad
Profil
Musíš ještě použít htmlspecialchars.
echo htmlspecialchars(file_get_contents('test.php'));
Jinak se prohlížeč bude snažit <?php vyhodnotit jako pocessing instruction, kterou nezná, a tedy ji zahodí.
Juraj Hajdúch
Profil
_fantomas:
Trochu zlá rada
Nemožná vec. Ak dáte vypísať v PHP (echo, print) premennú, ktorá obsahuje php kód, tak neexistuje, aby bol spracovaný. To by ste museli použiť funkciu exec a pod.

Pred zverejnením odpovede som to na localhoste odskúšal, fungovalo, chyba bude niekde na vašej strane.
_fantomas
Profil
[#8] Juraj Hajdúch tak mi pošlite ten váš kód. Ak je to možné.
Juraj Hajdúch
Profil
_fantomas:
Ja som použil skutočne len toto: (mám FF 36)


<?php
$content = file_get_contents("index.php");
echo nl2br($content);
?>
_fantomas
Profil
No a index.php obsahuje?
Juraj Hajdúch
Profil
Ak je možné, zverejnite ten kód, ktorý ste použili, možno je niekde nejaká záludnosť
juriad
Profil
Problém bude s interpretací kódu v prohlížeči. Použij buď funkci zmíněnou v [#7] nebo některou z metod Výpis zdrojového kódu.
_fantomas
Profil
Asi sa nerozumieme. Potrebujem pomocou PHP prečítať iný php skript a zapísať ho do txt alebo proste len ho vypísať ako kebyl ten PHP kód bol v tagu
<code> Chápeme sa?
Joker
Profil
_fantomas:
No a index.php obsahuje?
Ten kód, který chcete zobrazit.

Potrebujem pomocou PHP prečítať iný php skript a zapísať ho do txt alebo proste len ho vypísať ako kebyl ten PHP kód bol v tagu
<code> Chápeme sa?
Uvedené rady by měly fungovat, ale pokud se kód má zobrazit v HTML prohlížeči, bude ještě nutné ho escapovat jako HTML, nebo možná odeslat s hlavičkou text/plain.
Viz co píší kolegové výše.
Keeehi
Profil
juriad [#7]:
_fantomas:
Kód ze [#4] opravdu vypíše obsah php souboru. To že to v prohlížeči nevidíte je dáno tím, že si myslí še je to html kód a proto se ho snaží tak interpretovat. Je několik možností jak to opravit:
1) zajistíte, aby se ve vypisovaném textu neobjevily znaky, které by prohlížeč mohl interpertovat jako html ([#7] pomůže)
2) má to spoustu nevýhod ale dá se použít Živé fosílie HTML 1/6 - XMP
3) ještě před výpisem odešlete hlavičku header("Content-Type: plain/text");, tím se prohlížeč dozví, že to nemá interpretovat jako html výstup ale jako prostý text.
Juraj Hajdúch
Profil
_fantomas:
Posledný pokus :), skúste ešte návrh od juriada, pretože ja už fakt netuším.

<?php
$content = file_get_contents("akykolvek.php");
echo "<pre>".nl2br(htmlspecialchars($content))."</pre>";
?>

EDIT: opravené podľa #18
juriad
Profil
Juraj Hajdúch:
Snad opačně:
echo "<pre>".nl2br(htmlspecialchars($content))."</pre>";
Nechceš, aby se z <br> stalo &lt;br&gt;.
_fantomas
Profil
[#17] Juraj Hajdúch v test.php mám

<?php
session_start();
?>
<!DOCTYPE HTML>

vypíše to však iba <!DOCTYPE HTML>
Juraj Hajdúch
Profil
juriad:
Díky, samozrejme, že opačne, som nepozorný :o).
Keeehi
Profil
_fantomas:
Není možné aby toto nefungovalo.
_fantomas
Profil
Ved to aj funguje ale vypíše to do <pre> len <!DOCTYPE HTML ja tam potrebujem napísať aj <?php session_start(); ?>
Neviem prečo to escapuje všetko čo je v <?php :S
Keeehi
Profil
_fantomas:
Ved to aj funguje ale vypíše to do <pre> len <!DOCTYPE HTML ja tam potrebujem napísať aj <?php session_start(); ?>
To není možné. Když to spustím, vygeneruje to tento zdrojový kód:
<pre>&lt;?php
session_start();
?&gt;
&lt;!DOCTYPE HTML&gt;</pre>
Což se v prohlížeči vykreslí jako
<?php
session_start();
?>
<!DOCTYPE HTML>
Juraj Hajdúch
Profil
Keeehi:
Potvrdzujem, teraz som to odskúšal.
Uff, toto začína byť záhada. :(
Alphard
Profil
Nedělejte z toho tady chat, je jasné, že Keeehiho kód musí fungovat, nemusíme se v tom ujišťovat.

_fantomas:
Dejte sem přesně ten kód, který používáte, včetně cesty k tomu souboru (kopírovat!, nepřepisovat a neupravovat). Můj tip je, že ten index taháte přes http wrapper.
Krakatoa
Profil
_fantomas:
Ahoj, dalo by sa prečítať PHP súbor ako TXT? Napr bude subor.php
Neodpovídá tomu nejlíp toto?
<?php
header('Content-Type: text/plain');
readfile('subor.php');
?>

Aha, tak Tomáš123 a Keeehi to tu už psali. Tu to máš jak na podnose.
_fantomas
Profil
Už mi to funguje. Problém bol v tom že súbor ktorý som chcel prečítať nebol v tej istej zložke a to je trochu problém.
Ak je index a súbor ktorý čitam pomocou indexu v tej istej zložke všetko ide ale ked to mám o jednu zložku von tak to už nechce spolupracovať.

echo "<pre>".htmlspecialchars(file_get_contents("./test.phtml"))."</pre>";

Error: Warning: file_get_contents(./test.phtml): failed to open stream: No such file or directory in C:\xampp\htdocs\develop\phantom\test\index.php on line 2
Keeehi
Profil
Toto pomůže. Pokud ne, tak nic. Jen změna konfigurace servru.
"./../test.phtml"
Juraj Hajdúch
Profil
_fantomas:
Ak je index a súbor ktorý čitam pomocou indexu v tej istej zložke všetko ide ale ked to mám o jednu zložku von tak to už nechce spolupracovať.
Na to si treba dávať pozor, relatívne cesty sa odvíjajú od skriptu, s ktorý sa práve spracováva.
file_get_contents("./test.phtml"); // aktuálny adresár
file_get_contents("../test.phtml"); // nadradený adresár
file_get_contents("../../test.phtml"); // o dva nadradené odresáre atď.
ak poznáte umiestnenie daného skriptu v FS serveru (dá sa zistiť, viz variables server), tak je možné použiť aj absolútnu adresu v rámci daného FS:
file_get_contents("c:/server/htdocs/<vas_root>/...");
alebo aj cez protokoly http(s) (a iné, záleží od podpory)
file_get_contents("http://localhost/..."); // EDIT: POZOR, u spustiteľných skriptov (*.php a pod.) vráti len výsledok skriptu, nie samotný zdrojový kód, u ostatných súboroch to funguje ako sa očakáva
Samozrejme nie všetko môže všade fungovať, tých nastavení serveru (xAMP) je veľké množstvo...
Keeehi
Profil
Juraj Hajdúch:
To poslední nebude fungovat nikdy.
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: