Autor Zpráva
Fisak
Profil
Dobrý den. Mám editor který dává obsah na stránku. Tento editor je dělaný pomocí tinymce a do DB se obsah ukládá pomocí dibi. Problém nastává když odřádkuji. Místo řádku se napíše "\r\n". Dá se toto nějak vypnout ??
Tori
Profil
zapnuté magic quotes?
Fisak
Profil
ini_set("magic_quotes_runtime", "0");
Kajman
Profil
Vypněte si to dříve než v php - to už je pozdě.
Fisak
Profil
Kajman:
a dá se to nějak vypnout např. v .htaccessu ?? já totiž koukám na http://php.net/manual/en/security.magicquotes.disabling.php a tady to je dělaný také v php...


Dal sem uplně na začátek všech skriptů:
<?php
if (get_magic_quotes_gpc()) {
    $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
    while (list($key, $val) = each($process)) {
        foreach ($val as $k => $v) {
            unset($process[$key][$k]);
            if (is_array($v)) {
                $process[$key][stripslashes($k)] = $v;
                $process[] = &$process[$key][stripslashes($k)];
            } else {
                $process[$key][stripslashes($k)] = stripslashes($v);
            }
        }
    }
    unset($process);
}
ini_set('magic_quotes_gpc', false);
ini_set('magic_quotes_runtime', false);
ini_set('magic_quotes_sybase', false);
a stejně to nefunguje.. i na dále to píše \r \n
Kajman
Profil
dá se to nějak vypnout např. v .htaccessu?
Pokud je to povolené přenastavit, tak ano dá, viz. Vámi uvedený odkaz.
Fisak
Profil
Kajman:
ok dal sem do .htaccess
<IfModule mod_php5.c>
php_flag magic_quotes_gpc Off
</IfModule>
a stejně to \r \n tam dává při zápisu do DB
Kajman
Profil
A proměnná, kterou dibi dáváte už má \n v sobě? Pak si zkuste najít, jak se tam dostala.
Fisak
Profil
Kajman:
if (!DB::query('UPDATE [:pref:page] SET [description] = %s', mysql_real_escape_string($_POST["text"]), ' WHERE [page]=%s', mypage("run"))) {
    
        echo "Úprava proběhla neúspěšně.<br>";
        
      }
toto je můj kod na zápis ... je tam i mysql_real_escape_string takže to nenechávam na magic qoutes ... takže to musí způsobovat dibi..


samozřejmě když vynecham mysql_real_escape_string a dam tam jen $_POST["text"] tak se tam žádné \r\n nevpíše..
Tori
Profil
Fisak:
Koukněte, co se děje uvnitř dibi, když použijete modifikátor %s: DibiTranslator->formatValue > DibiDriver->escape. Smyslem modifikátorů je mj. i to, aby se vkládaná hodnota správně escapovala bez ohledu na použitý typ databáze, aniž byste musel cokoli měnit v kódu když změníte driver z mysql na třeba sqlite.
Fisak
Profil
Tori:
takže už není potřeba tam dávat mysql_real_escape_string? a co mam dát místo %s aby to nevypisovalo \r\n ??
Tori
Profil
Nechte %s, dejte pryč mysql_real_escape_string, to je vše. Ano, když si vypíšete dotaz, tak se tam zobrazí \r\n, ale když to uložíte do DB a načtete z ní nazpět, dostanete normální zalomení řádku. (viz manuál)
Fisak
Profil
Tori:
Dobře. Konečně vyřešeno. Děkuji všem za pomoc.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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