Autor Zpráva
Hele
Profil *
        <form>
            <input type="text" maxlength="50" name="name">
             <input type="submit">
        </form>
        
         if(true == ($name=filter_input(INPUT_GET, 'name', FILTER_SANITIZE_STRING)) {
           var_dump($name);
         }

Čekal sem, že mi to po vyplnění Muf vypíše string 'Muf' (length=3), ale ono to vrací bool(true).
Jak správně ověřit, že uživatel vyplnil string a odstranit ze stringu bordel (tagy, uvozovky)?
lionel messi
Profil
Hele:
Jak správně ověřit, že uživatel vyplnil string a odstranit ze stringu bordel (tagy, uvozovky)?
PHP má funkciu is_string.

V praxi sa „bordel“ nemaže, ale ošetruje. V prípade výpisu do stránky funckiou htmlsepecialchars, v prípade uloženia do db sa dáta escapujú: mysql_real_escape_string. V prípade potreby ale odstráni tagy funkcia strip_tags (pozor, nie je plnohodnotným zabezpečením pred XSS!) a úvodzovky odstráni toto:
<?php 
$name = str_replace('""', '', $_GET["name"]); 
?>
Hele
Profil *
Díky.
A když se v manuálu píše Value of the requested variable on success, FALSE if the filter fails, or NULL if the variable_name variable is not set. If the flag FILTER_NULL_ON_FAILURE is used, it returns FALSE if the variable is not set and NULL if the filter fails. chápu to špatně? Kdy to teda vrátí true?
Davex
Profil
Po doplnění značky <?php a uzavírající závorky to funguje úplně normálně.

string(3) "Muf"

V čem je problém?
Pleca
Profil
Hele:
Kdy to teda vrátí true?

Nevraci to TRUE, pokud je to uspesne vrati to obsah 'name', pokud to neni uspesne vrati FALSE, jestli je 'name' prazdne vrati to NULL. Pri nastaveni spravneho filtru u filter_input nahradi to htmlsepecialchars a strip_tags (Sanitize Filters). Nepouzivej mysql_real_escape_string tato funkce je zastarala, radsi pouzij mysqli mysqli_real_escape_string, nebo jeste lepe kdyz pouzijes PDO. Tady je PDO tutorial na MySQL.

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:

0