Diskuze: JavaScript kód vložený do textarea
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Chyba bude ve tvém skriptu, který ukládá data do databáze. Ukaž nám ho.
I bez ukazky je celkem jasny, ze neosetrujes vlozeni retezce s uvozovkama
{
$title = $_POST["title"];
$content = $_POST["content"];
if ($title == "") {
echo "<script>location.href = 'PridatClanek.php#centerform';</script> Nebyl vyplněn nadpis!";
return;}
else if ($content == "") {
echo "<script>location.href = 'PridatClanek.php#centerform';</script> Nebyl vyplněn obsah!";
return;}
else {
$sql = mysqli_query($spojeni, "INSERT INTO clanek VALUES ('id','$title','$content')") or die (mysqli_error($spojeni));
echo "Článek byl úspěšně uložen";
exit();
}
}
Btw. kód je cíleně napsán,aby nebyl ošetřen proti injection apod. Když zadávam jakýkoliv řetezec do pole title a content,tak vše funguje. Jakmile chci vložít script,tak to nejde.
Pročpak asi? Když zadáš text, který obsahuje jednoduchou uvozovku ' tak ti to naruší strukturu SQL příkazu. Řekněme, že obsah článku bude
text před ' text za
pak by se ti spustil takovýto SQL kód
INSERT INTO clanek VALUES (12,'Ukázka','text před ' text za')
Pokud se podíváš na uvozovky, tak ti to udělalo nepořádek, proto musíš použít mysqli_real_escape_string ( mysqli $link , string $escapestr ).
Problem je u
... '$content' ...
kde vznikne konflikt presne tady "... LANGUAGE='Java ... "
delas query value v jednoduchych uvozovkach, nikde neescapujes ty, co jsou v content a pak to samozrejme skonci chybou. To same udela urcite i retezec napr
Lorem 'ipsum' dolor
sorry za duplikat fredep - mel jsem moc dlouho otevrenou stranku bez refreshe
Zobrazeno 7 zpráv z 7.