Nejste přihlášeni
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
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
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
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
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