Autor | Zpráva | ||
---|---|---|---|
Radim24 Profil * |
#1 · Zasláno: 21. 7. 2008, 18:03:48
Zdravím. Nastal mi neobvyklý problém.
Měl jsem script který se načítal přes require()... V tomto skryptu funkce, která provádí kontrolu vstupních řetězců. Uvnitř této fnc spouštím funkci filtr. Spouštím ji třikrát s různými parametry. Do nedávna vše fungovalo bezvadně, akorád, když jsem fo fnc filtr() přidal další argumenty (celkem jsou 4), pár podmínek navíc do části, která již měla nalezený hotový výsledek, a začal jsem ji volat čtyřikrát z té předchozí funkce ... nastal problém. Na výstupu se mi nezobrazilo to co by měla fnc zpracovat, ale samotný kód scriptu. nejhorší ale je, že i když jsem celou fnc vymazal a nechal prázdný requirovaný soubor jen s uvedením tagu php scriptu, a dokonce ani po restartu apache nebo celého počítače a dokonce ani po přejmenování souboru s funkcí a soubouru requirovaného, se nepovedlo problém vyřešit. Mám před sebou funkční formulář, odesílám data, ale výstup hází podivné věci. Jediná logická věc, která tu platí je ta, že když jsem onu fnc smazal, vracelo to již jen toto: 戼㸯㰊㹢慆慴牥潲㱲戯㨾†慃汬琠湵敤楦敮畦据楴湯›挠敨正楟灮瑵⡳ 湩㰠㹢㩃獜牥敶屲敳湺浡慫獜獹整屭潦浲屳湩汣摵履獵牥ㅜ损敨正湟损慨杮 桰㱰戯‾湯氠湩戼㐾㰰戯㰾牢⼠ਾ Ale html zdroj je takovýto: <?php ?> ?????????????†?????????????›?????????????????????????????????????????? ???????????????? V tom requirovaném souboru není žádný znak za "?>", je tam konec souboru. |
||
Radim24 Profil * |
#2 · Zasláno: 22. 7. 2008, 07:21:17
Ahoj, nikdo tady netuší čím by to mohlo být?
|
||
WertriK Profil |
#3 · Zasláno: 22. 7. 2008, 08:15:47
Nezkoušel jsi místo require použít fci include ? Zkus to a potom napiš.
|
||
Radim24 Profil * |
#4 · Zasláno: 22. 7. 2008, 08:47:23
Jo, vidíš, to jsem chtěl zkusit
|
||
Radim24 Profil * |
#5 · Zasláno: 22. 7. 2008, 08:56:01
Hele, vypadá to, že je to něčím jiným, přihlašovací fnc
|
||
Radim24 Profil * |
#6 · Zasláno: 22. 7. 2008, 09:03:01
Tak znova. zamotal jsem se v tom. Došel jsem zpět k souboru
check_n_change.php z toho mám zpouštět tu filtrovací fnc. Jenže soubor check_n_change.php nereaguje na změnu obsahu a vyhazuje ten divný řetězec. Include (check_n_change.php) nepomůže |
||
Radim24 Profil * |
#7 · Zasláno: 22. 7. 2008, 09:08:47
Asi bych tě s tím už neměl obtěžovat, protože teď jsem zjistil, že vlastně v nastavení jsem změnil jméno souboru na 1_check_n_change.php a tam mě to směřuje na
require($elsedir.$links["filter_fnc"]); // načte filtr Takže teď zkusím něco s tím souborem, třeba bude stačit to přejmenovat |
||
Radim24 Profil * |
#8 · Zasláno: 22. 7. 2008, 09:18:58
Obsah toho filtru:
<?php function check_inputs() { die("hi"); } check_inputs(); ?> výstup html: <?php function check_inputs() { die("hi"); } check_inputs(); ?> |
||
Radim24 Profil * |
#9 · Zasláno: 22. 7. 2008, 09:21:59
Takže závěr:
Po odeslání <FORM name='MyForm' action='http://localhost/seznamka/system/forms/index.php?action=u_edit &user=43&id=2' method='POST'> to vrací html výstup php souboru, čili php jako html |
||
Jack Finger Profil |
#10 · Zasláno: 22. 7. 2008, 09:24:07
Radim24
něco mi říká, že se ti neparsuje PHP. |
||
Radim24 Profil * |
Co to znamená?
Dá se něco vyčíst z logu apache? Chyba žádná, a co access log? Nějaký článek o tomto problému? Slyším to porpvé, ale není to porpvé co jsem na internetu viděl obsah svého php. Ve filtru jsem načítal soubory s koncovkou lst (jako seznam), vadí to? Tady je rada o nainstalování nějakého modulu, jenže http://www.cestiny.megazin.cz/68-mozne-problemy-s-instalaci-apache-na- linuxu libapache2-mod-php5 jenže, co když to hodím na web a bude to dělat ten samý problém... Chtěl bych raději najít příčinu Ještě jsem našel tohle, ale nerozumím k čemu to je. http://pvc.boolean.cz/?section=docs&page=konfigurace — Moderátor (Ch): Sloučeno do jednoho příspěvku. Toto není chat! — |
||
Jack Finger Profil |
#12 · Zasláno: 22. 7. 2008, 09:39:08 · Upravil/a: Jack Finger
Radim24
to znamená, že ti PHP parser (modul Apache) nepřeloží PHP kód (nebo PHP není spuštěno), protože ho z nějakého důvodu nepozná, třeba ho nemáš v <?php ?>, nebo to může být i tím, že máš příponu LST, protože když je v souboru LST nějaký PHP kód, ty načteš obsah souboru do proměnné a pak ji vypíšeš, tak je logické, že se neprovede. Krom toho PHP kód v souboru LST je dost výzývavý pro hackery. Doporučuji ti nejprve si přečíst Základy v PHP a Základy slušného chování na fórech. mimochodem: pokud rozjedeš echo();, tak to asi nebude parserem... |
||
Radim24 Profil * |
#13 · Zasláno: 22. 7. 2008, 09:39:52
Jak to že všechny scripty běží a ten jeden ne?
|
||
Jack Finger Profil |
#14 · Zasláno: 22. 7. 2008, 09:42:40
tak to bude obsluhou.
co ti to vypisuje? nějakej aktuální kód? |
||
Radim24 Profil * |
#15 · Zasláno: 22. 7. 2008, 09:54:08
access.log
127.0.0.1 - - [22/Jul/2008:09:15:45 +0200] "GET /seznamka/system/forms/index.php?action=form&file=u_edit&user=43&id=2 HTTP/1.1" 200 5941 127.0.0.1 - - [22/Jul/2008:09:15:46 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 24 127.0.0.1 - - [22/Jul/2008:09:16:28 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 370 127.0.0.1 - - [22/Jul/2008:09:17:13 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 220 127.0.0.1 - - [22/Jul/2008:09:17:40 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 144 127.0.0.1 - - [22/Jul/2008:09:17:57 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 2 127.0.0.1 - - [22/Jul/2008:09:18:02 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 144 127.0.0.1 - - [22/Jul/2008:09:18:18 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 22 127.0.0.1 - - [22/Jul/2008:09:18:45 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 22 127.0.0.1 - - [22/Jul/2008:09:18:48 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 144 127.0.0.1 - - [22/Jul/2008:09:19:52 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 146 127.0.0.1 - - [22/Jul/2008:09:20:45 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 3184 127.0.0.1 - - [22/Jul/2008:09:20:47 +0200] "GET /seznamka/system/forms/index.php?action=logout HTTP/1.1" 200 3234 127.0.0.1 - - [22/Jul/2008:09:20:47 +0200] "GET /seznamka/system/forms/index.php?action=form&file=access HTTP/1.1" 200 4288 127.0.0.1 - - [22/Jul/2008:09:20:54 +0200] "POST /seznamka/system/forms/index.php?action=access HTTP/1.1" 200 4459 127.0.0.1 - - [22/Jul/2008:09:20:57 +0200] "GET /seznamka/system/forms/index.php?action=form&file=u_edit&user=43&id=2 HTTP/1.1" 200 5941 127.0.0.1 - - [22/Jul/2008:09:21:14 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 142 127.0.0.1 - - [22/Jul/2008:09:21:17 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 142 127.0.0.1 - - [22/Jul/2008:09:21:27 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 138 127.0.0.1 - - [22/Jul/2008:09:21:32 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 142 127.0.0.1 - - [22/Jul/2008:09:23:38 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 2 127.0.0.1 - - [22/Jul/2008:09:24:19 +0200] "POST /seznamka/system/forms/index.php?action=u_edit&user=43&id=2 HTTP/1.1" 200 142 |
||
Radim24 Profil * |
#16 · Zasláno: 22. 7. 2008, 09:54:42
Co to znamená obsluhou, jako servrem, že?
|
||
Jack Finger Profil |
#17 · Zasláno: 22. 7. 2008, 10:17:23
Radim24
access.log myslel jsem PHP kód, kterej se vypisuje do prohlížeče a neparsuje Co to znamená obsluhou, jako servrem, že? ne, tebou |
||
nightfish Profil |
#18 · Zasláno: 22. 7. 2008, 11:38:04
Radim24
1) tohle není chat, takže psát jednořádkové příspěvky každých pár minut není preferované chování 2) zmatený popis problému 3) toto by se nejlépe řešilo s ukázkou kódu, který je do problému zapleten (tzn. index.php + všechny z něj includované/requirované relevantní soubory) |
||
Radim24 Profil * |
#19 · Zasláno: 22. 7. 2008, 12:01:48
Dej mi právo mazat svoje příspěvky a já je smažu.
|
||
Radim24 Profil * |
#20 · Zasláno: 22. 7. 2008, 12:05:34
To Jack:
V tom lst je pouze seznam slov, obyčejný, neškodný texťák. <?PHP ?> Tam samozřejmě mám, a soubor je náležitě označen jako .php. Jde o to, že ono to předtím celé krásně běželo, až jak jsem přidal pár argumentů do fnc, pár podmínek, a volal jsem ji 4x za sebou s různými parametry. Nastaly problémy. Poté jsem to celé smazal (funkci), ale nic se tím nevyřešilo. |
||
nightfish Profil |
#21 · Zasláno: 22. 7. 2008, 12:55:14
Radim24
Dej mi právo mazat svoje příspěvky a já je smažu. bohužel nemohu, nedisponuji právem udělování práv Nastaly problémy. Poté jsem to celé smazal (funkci), ale nic se tím nevyřešilo. takže to vypadá, že to s tvou úpravou a voláním nemělo mnoho společného... takhle to opravdu nemá smysl - je potřeba lokalizovat problém (třeba postupným odmazáváním částí skriptů do doby, než problém zmizí - pak budeš vědět, která část kódu způsobuje problém) každopádně bych prošel všechny includované soubory v nějakém rozumném editoru a vyzkoušel, jestli někde není něco navíc + bych přidal nějaké výpisy - např. echo "soubor neco.php, ted se chystam includovat soubor xyz.php";... chce to prostě vyvinout systematickou snahu a ne jen bezhlavě editovat/mazat |
||
Radim24 Profil * |
#22 · Zasláno: 22. 7. 2008, 15:57:46
Budu zkoušet.
|
||
BetaCam Profil |
#23 · Zasláno: 22. 7. 2008, 18:28:31
No nejjednoduší by asi bylo sehnat si nejaký pokročilejší editor nastavit breakpointy a odkrokovat si to.
|
||
Radim24 Profil * |
#24 · Zasláno: 22. 7. 2008, 21:34:14
BetaCam
Už mi doporučovali PHPEclipse, ale nešlo mi to stáhnout, nepochopil jsem jak. |
||
Jack Finger Profil |
#25 · Zasláno: 22. 7. 2008, 21:42:30
nejjednodušší by bylo myslet.
|
||
Chamurappi Profil |
#26 · Zasláno: 22. 7. 2008, 22:17:08 · Upravil/a: Chamurappi
Reaguji na Radima24:
„vracelo to již jen toto“ Po převodu z UTF-16 do ASCII: „<br />(znak 0)<b>Fatal error</b>: Call to undefined function: check_inputs() in <b>C:\server\seznamka\system\forms\include\user\1_check_n_change. (znak 0)php</b> on line <b>40</b><br />“ |
||
Radim24 Profil * |
#27 · Zasláno: 22. 7. 2008, 22:43:07
Díky moc Chamurappi :-)
|
||
Radim24 Profil * |
#28 · Zasláno: 22. 7. 2008, 23:09:31
Až na to, že jsem už trochu dál...
Toto je url adresa, která zpracovává odeslaný formulář: http://localhost/seznamka/system/forms/index.php?action=u_edit&user=43 &id=2 hned na začátku index.php uvádím: require("pokus.php"); die(); Toto je obsah pokus.php: <PHP die("OK"); ?> A toto je html výstup: <PHP die("OK"); ?> |
||
Radim24 Profil * |
#29 · Zasláno: 24. 7. 2008, 15:53:44
Tak pánové, myslím, že problém byl vyřešen.
Nepochopím, jak mohlo něco takového nastat. Problém byl v tom, že jsem celou dobu kopíroval jeden soubor - ten s tím filtrem. I když jsem vymazal jeho obsah a nechal jen banální fnc, tak to házelo chybný výstup. No a nakonec jsem založil nový soubor, se stejnou fnc a stejným obsahem a světe div se, ono to jede. To snad byl nějaký problém ve filesystému nebo co? |
||
Joker Profil |
#30 · Zasláno: 24. 7. 2008, 16:50:21
Tipnul bych, že to bude blbé kódování, BOM nebo tak něco, nebo ten soubor zmršilo něco při přenosu.
|
||
Téma pokračuje na další straně.
|
0