#1 2013-03-29 12:58:05

mirco
Endora uživatel
Registrován: 2011-04-23
Příspěvky: 28

Re: Změna chování funkce htmlspecialchars (vyřešeno)

Dobrý den.
Po zjištění, že se mi do návštěvní knihy ukládají prázdné příspěvky, jsem chvilku experimentoval a zjistil jsem toto: když se funkcí htmlspecialchars prožene řetězec obsahující znaky s českou diakritikou, je nahrazen prázdným řetězcem. Aby to nebylo tak jednoduché, tak určité kombinace znaků (třeba "ěšš") přežijí, ale to jsou jenom ojedinělé výjimky.

Jestli vám to nějak pomůže, tak:
- Na stránce mám nastavené kódování Windows-1250.
- Zrovna dneska jsem si rušil blokování POST ze zahraničí. Sice sedím v Praze, ale moje IP se asi tváří zahraničně (nejspíš proxy server). Nevím, jestli to může nějak souviset. Z jiných počítačů jsem to nezkoušel.
- S jistotou můžu říct, že 11. 12. 2012 všechno fungovalo. Z toho dne mám v návštěvní knize poslední příspěvek s diakritikou.
- Jsem v programu Lite.

Asi to nebude problém mojí domény, spíš bych to tipoval někam do jádra interpretu PHP. Neinstalovali jste v poslední době nějakou novou verzi?

Offline

#2 2013-03-29 13:40:07

kksmirice
Endora rádce
Místo: Vrchovnice
Registrován: 2011-11-20
Příspěvky: 6,023
Web

Re: Změna chování funkce htmlspecialchars (vyřešeno)

Byla instalována verze php 5.4.11.

Vzhledem k tomu, že netuším o jakou se jedná doménu ani použitý CMS mohu jen tipovat:
- mohlo by pomoci nastavení mb_internal_encoding().


1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!

stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM

Problémy spojené s provozem služeb Endora, řešte na tomto fóru.

Offline

#3 2013-03-29 14:41:09

mirco
Endora uživatel
Registrován: 2011-04-23
Příspěvky: 28

Re: Změna chování funkce htmlspecialchars (vyřešeno)

CMS nemám žádný.
Tady máte testovací skript: http://mircosoft.mzf.cz/pokus.php
Zdroják:

<html>
<head><meta http-equiv="Content-Type" content="text/html;charset=windows-1250"></head>
<body>
<form method="post">
Sem zadejte nejaky text a zmacknete cudlik napravo:<br>
<textarea name="textik"></textarea> <input type="submit" value="prechroustej">
</form>
<p>Vysledky:</p>
<p>
<?php
echo 'zadany text: "'.$_POST['textik'].'"<br>';
echo 'zadany text po htmlspecialchars: "'.htmlspecialchars($_POST['textik']).'"';
?>
</p>
<p>Pokud text obsahuje diakritiku, htmlspecialchars ho sezere.</p>
</body></html>

Když strčím text do funkce a vypadne mi z ní nesmysl, nemůže být chyba jinde než v té funkci, ne?

Offline

#4 2013-03-29 14:45:42

kksmirice
Endora rádce
Místo: Vrchovnice
Registrován: 2011-11-20
Příspěvky: 6,023
Web

Re: Změna chování funkce htmlspecialchars (vyřešeno)

Používejte jinou znakovou sadu než cp1250 - tu funkce nepodporuje.
V kódování UTF-8 soubor funguje.


1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!

stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM

Problémy spojené s provozem služeb Endora, řešte na tomto fóru.

Offline

#5 2013-03-29 15:01:47

mirco
Endora uživatel
Registrován: 2011-04-23
Příspěvky: 28

Re: Změna chování funkce htmlspecialchars (vyřešeno)

Díky za pomoc, vyřešeno:

vystup=htmlspecialchars(vstup,ENT_COMPAT|ENT_HTML401,'ISO-8859-1');

Bylo to tím, že se default změnil z ASCII na Unicode. Stačilo vybrat znakovou sadu s jednobytovým kódováním a už to jede.
Ach jo, tak zase přepisování zdrojáků...

Offline

Zápatí

Založeno na FluxBB | CZ a SK