« 1 2 »
Autor Zpráva
Radim24
Profil *
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 *
Ahoj, nikdo tady netuší čím by to mohlo být?
WertriK
Profil
Nezkoušel jsi místo require použít fci include ? Zkus to a potom napiš.
Radim24
Profil *
Jo, vidíš, to jsem chtěl zkusit
Radim24
Profil *
Hele, vypadá to, že je to něčím jiným, přihlašovací fnc
Radim24
Profil *
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 *
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 *
Obsah toho filtru:

<?php
function check_inputs()
{
die("hi");
}
check_inputs();
?>

výstup html:

<?php
function check_inputs()
{
die("hi");
}
check_inputs();
?>
Radim24
Profil *
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
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
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 *
Jak to že všechny scripty běží a ten jeden ne?
Jack Finger
Profil
tak to bude obsluhou.
co ti to vypisuje? nějakej aktuální kód?
Radim24
Profil *
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 *
Co to znamená obsluhou, jako servrem, že?
Jack Finger
Profil
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
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 *
Dej mi právo mazat svoje příspěvky a já je smažu.
Radim24
Profil *
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
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 *
Budu zkoušet.
BetaCam
Profil
No nejjednoduší by asi bylo sehnat si nejaký pokročilejší editor nastavit breakpointy a odkrokovat si to.
Radim24
Profil *
BetaCam
Už mi doporučovali PHPEclipse, ale nešlo mi to stáhnout, nepochopil jsem jak.
Jack Finger
Profil
nejjednodušší by bylo myslet.
Chamurappi
Profil
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 *
Díky moc Chamurappi :-)
Radim24
Profil *
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 *
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
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.
« 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:

0