Autor | Zpráva | ||
---|---|---|---|
_fantomas Profil |
#1 · Zasláno: 24. 3. 2015, 17:45:29
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 * |
#3 · Zasláno: 24. 3. 2015, 18:03:12
File_get_contents
Readdir by po otevreni adresare vracel jmena souboru v adresari. |
||
Juraj Hajdúch Profil |
#4 · Zasláno: 24. 3. 2015, 18:05:29
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 |
#5 · Zasláno: 24. 3. 2015, 18:07:19
juriad:
Pardon, myslel som readfile() .
|
||
_fantomas Profil |
#6 · Zasláno: 24. 3. 2015, 20:02:15
[#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')); <?php vyhodnotit jako pocessing instruction, kterou nezná, a tedy ji zahodí.
|
||
Juraj Hajdúch Profil |
#8 · Zasláno: 24. 3. 2015, 20:08:56
_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 |
#9 · Zasláno: 24. 3. 2015, 20:11:11
[#8] Juraj Hajdúch tak mi pošlite ten váš kód. Ak je to možné.
|
||
Juraj Hajdúch Profil |
#10 · Zasláno: 24. 3. 2015, 20:12:38
_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 |
#11 · Zasláno: 24. 3. 2015, 20:14:34
No a index.php obsahuje?
|
||
Juraj Hajdúch Profil |
#12 · Zasláno: 24. 3. 2015, 20:16:56
Ak je možné, zverejnite ten kód, ktorý ste použili, možno je niekde nejaká záludnosť
|
||
juriad Profil |
#13 · Zasláno: 24. 3. 2015, 20:18:12
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 |
#14 · Zasláno: 24. 3. 2015, 20:18:35
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 |
#15 · Zasláno: 24. 3. 2015, 20:20:10
_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 |
#16 · Zasláno: 24. 3. 2015, 20:23:23
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 |
#18 · Zasláno: 24. 3. 2015, 20:27:49
Juraj Hajdúch:
Snad opačně: echo "<pre>".nl2br(htmlspecialchars($content))."</pre>"; <br> stalo <br> .
|
||
_fantomas Profil |
#19 · Zasláno: 24. 3. 2015, 20:29:17
[#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 |
#20 · Zasláno: 24. 3. 2015, 20:29:54
juriad:
Díky, samozrejme, že opačne, som nepozorný :o). |
||
Keeehi Profil |
_fantomas:
Není možné aby toto nefungovalo. |
||
_fantomas Profil |
#22 · Zasláno: 24. 3. 2015, 21:19:30
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 |
#23 · Zasláno: 24. 3. 2015, 21:27:46
_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><?php session_start(); ?> <!DOCTYPE HTML></pre> <?php session_start(); ?> <!DOCTYPE HTML> |
||
Juraj Hajdúch Profil |
#24 · Zasláno: 24. 3. 2015, 21:34:07
Keeehi:
Potvrdzujem, teraz som to odskúšal. Uff, toto začína byť záhada. :( |
||
Alphard Profil |
#25 · Zasláno: 24. 3. 2015, 21:40:59
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 |
#27 · Zasláno: 25. 3. 2015, 16:04:11
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 |
#28 · Zasláno: 25. 3. 2015, 16:12:53
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ď. file_get_contents("c:/server/htdocs/<vas_root>/..."); 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 |
||
Keeehi Profil |
#30 · Zasláno: 25. 3. 2015, 16:55:56
Juraj Hajdúch:
To poslední nebude fungovat nikdy. |
||
Téma pokračuje na další straně.
|
0