Keresés

Új hozzászólás Aktív témák

  • fordfairlane

    veterán

    válasz vakondka #1208 üzenetére

    Bizonyára ez történt. A magic_quotes_gpc szerverenként változó, jellemzően a PHP 5-ben nincs bekapcsolva, így ide a bevitel során kell az addslashes, régebbieknél PHP 3 - 4 pedig általában be van kapcsolva, így ide fölösleges. Kiírásnál levő felesleges stripslashes (tehát addslashes bevitelnél, stripslashes kiírásnál, magic_quotes_gpc off) nem feltűnő, csak akkor okoz problémát, ha a szövegben szerepel backslash, például elérési út, ilyenkor eltűnik a backslash a tartalomból.

    Ha portábilis kódra törekszem, akkor én így szoktam csinálni:
    Mivel a form submit adatai nem feltétlenül kerül bele egyből az adattáblába, mert pl. nincs kitöltve egy kötelezően kitöltendő mező, ezért én úgy szoktam kezdeni, hogy a $_POST tömböt átmásolom egy másik tömbbe, és ha a magic_quotes_gpc be van kapcsolva, akkor kiszedem az általa beillesztett backslasheket.

    function n_slashes($p) {
    foreach($p as $pkey => $pvalue) {
    if(get_magic_quotes_gpc()) $post[$pkey] = stripslashes($p[$pkey]);
    else $post[$pkey] = $p[$pkey];
    }
    return $post;
    }


    if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $p = n_slashes($_POST);
    ...
    }

    Form submit esetén meghívom ezt a függvényt, azután eldöntöm, hogy beleírom-e az adattáblába vagy sem. Ha beleírom, mert minden adat megfelelő, akkor minden mezőre egyenként addslashes-t alkalmazok, ha nem, akkor kirakom újra a formot, és visszaírom a bevitt adatokat. Ez a módszer mindenféle beállítással működik.

Új hozzászólás Aktív témák

Hirdetés