Autor Zpráva
Joker
Profil
O problému se zpětnými lomítky vím, ale dnes jsem zjistil další jeho následek. Pokud to tu už někdo psal, tak se omlouvám, našel jsem akorát témata o tom problému požírání zpětných lomítek.

Pravděpodobně související problém bude, že pokud je jedno zpětné lomítko, nebo lichý počet zpětných lomítek, úplně na konci příspěvku, je výsledkem odeslání příspěvku chybová hláška MySQL:
a1You have an error in your SQL syntax; (...)
nejspíš se odescapuje ukončovací uvozovka příspěvku.

Přemýšlel jsem, jestli by to dokonce nešlo zneužít pro SQL injection, ale nejspíš ne.
Yuhů
Profil
co doporučuješ? Můžeš vyzkoušet, jestli podobný problém dělá i druhá verze miniBB?
DJ Miky
Profil
Můžeš vyzkoušet, jestli podobný problém dělá i druhá verze miniBB?

V náhledové verzi, která je na oficiálních stránkách miniBB, se ten problém nevyskytuje, takže by měl být ve dvojce opraven.


co doporučuješ?

Možná addslashes().
Kajman_
Profil *
co doporučuješ?

Nepomůže do .htaccess přidat
php_flag magic_quotes_gpc on
?
DoubleThink
Profil *
Nepomůže do .htaccess přidat php_flag
Zatím neznám hosting, který by tuto direktivu explicitně povoloval.

Zkoušel jsem přidat do hlavičky pear compat třídu pro emulování magic quotes, ale zdá se, že to nefunguje.
Kajman_
Profil *
A tohle by nestačilo přidat třeba k definici databáze?

http://www.silverarm.ie/items_php_addslashes_to_an_array.php
Joker
Profil
Co jsem vyrozuměl, je problém s magic quotes, nešel by někam co se načítá vždycky přidat nějaký kód na jejich odstranění/přidání tak, aby to fungovalo?
Něco jako http://php.vrana.cz/vypnuti-magic_quotes_gpc.php
Kajman_
Profil *
Zkoušel jsem přidat do hlavičky pear compat třídu
Ale při postu se tuším hlavička nevypíše. Data se uloží a přesměruje se, ne?

Opravdu by nestačilo přidat např. k definici konfigurace databáze toto?

function reslash_multi(&$val,$key)
{
if (is_array($val)) array_walk($val,'reslash_multi',$new);
else $val = reslash($val);
}
function reslash($string)
{
if (!get_magic_quotes_gpc()) return addslashes($string);
return $string;
}
if (isset($_POST))
array_walk($_POST, 'reslash_multi');

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0