| 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