Mam textarea1 (ta1), kam vlozite text, kliknete odeslat, prevezme to php, zpracuje a vrati k zobrazeni textarea2 (ta1).
Pokud zpracovani nic neudela, je vsechno o, pocet znaku na leve (ta1) strane, i na prave (ta2) souhlasi.
Pokud ten program znaky rekneme nahodne promicha, roztrhne to kombinaci hex 0D0A, cili enter, zalomeni radku A textara samostatny 0D nebo 0A interpretuje jinak, jednou znak smaze, podruhe doplni zalomeni. To je naprosto nezadouci, protoze zpetne to neni kompatibilni a kdybych to ted tal odesla ke zpetnemu promichani, tak nedostanu stejny vstup v ta1.
Provizorne to ted resim pres
$slashes_chars = "\\\n\r\t";
$data['out'] = addcslashes($data['out'],$slashes_chars);
$data['out'] = stripcslashes($data['out']);
Testovaci kod muze vypadat treba takto
<?php
//function escapeHtml($str) {return htmlspecialchars($str);}
function escapeHtml($str) {return htmlspecialchars($str,ENT_COMPAT | ENT_NOQUOTES);} //bez quotes
function escapePost($str)
{
//return urldecode(stripslashes($str));
//return stripslashes($str);
//return urldecode($str);
//if (get_magic_quotes_gpc() || version_compare(PHP_VERSION, '5.4.0', '>') )
// {
// $str = stripslashes($str);
// }
return $str;
}
header("Content-Type: text/html; charset=windows-1250");
$str = isset($_POST['str_in']) ? $_POST['str_in'] : '';
$str = escapePost($str);
echo strlen($str);
?>
<fieldset>
<legend>BWT transformation</legend>
<form name="form1" method="post" enctype="multipart/form-data"> <!-- -->
<table><tr><td>
-- 1 --<br>
<textarea name="str_in" cols="40" rows="7"><?php echo escapeHtml($str); ?></textarea><br>
</td><td>
</td></tr></table>
<p>
<input type="submit" name="decode" value=" bwtDecode "/> (2+key to 1)
</p>
</form>
</fieldset>
Kdyz tady date 5x po sobe odeslat, tak je vsechno ok. Ale zkuste tam pridat nahodne promichani nebo jen reverzi strrev();. Do textarea zkopirujte napr kod celeho programu.