Autor Zpráva
Sho
Profil
Zdravim, neviem kam zaradit tak radím sem :D snad nevadi.

Formular mi stale vracia string, aj ked dam do neho cislo tak mi vrati napriklad string '5'

Robia toto bezne formulare?
xROAL
Profil
PHP nemá pevne stanovené dátové typy.
Môžeš si konkrétny dátový typ vynútiť tzv. type castingom, v tejto kapitole je aj opísané ako sa PHP a jeho "automatické určovanie dátového typu" správa pri rôznych operáciach. Hádam ti to pomôže trošku viac pochopiť problematiku.
Sho
Profil
Idem pozret, zatial dakujem za odkaz.

P.S.: Aby som len ujasnil problematiku, ked potrebujem heslo alebo uzivatelske meno, moze mi to byt jedno! Ale ked potrebujem len urcity dat. typ napriklad pre tel. cislo alebo cislo pre osetrenie vstupu ci nezadal co nemal :) teda ci nezadal string
if ( string(var) ) echo "Chyba!";
napriklad.... ak chapes :)

Edit: No pozrel som odkaz a dodam len, že toto mi je davno zname.
Ano ked dam priamo nieco do premmenej tak mi to pekne automaticky priradi.... lenze ako nahle pouzijem formular tak mi nejako vzdy vrati len string napriklad:
$premena = $_POST['cislo'];   // zadam 5 vrati: string '5'
To je ten problem.
xROAL
Profil
Ak chceš mať istotu že užívateľ zadal číslo, zrejme hľadáš funkciu is_numeric(), prípadne si môžeš nasilu zobať len celočíselnú časť toho, čo zadal: $premenna = (int)$_POST['cislo'];.

Formulár ti vždy bude dávať string, ale ak ti tento string prejde funkciou is_numeric(), tak máš istotu že sa skladá len z čísiel (alebo iného platného zápisu čísla).
To že ti var_dump() bude aj tak stále hlásiť string nemá pre PHP veľkú váhu. Pri porovnávaní alebo inej matematickej operácii bude v konečnom dôsledku PHP ten string považovať za číslo.
Sho
Profil
Aha, tak to sa mi potom ulavilo, lebo som nevedel ci som nahodu nieco neposral ked som rucne instaloval php na pc a nastavoval ho :D

A vlastne este doteraz ma ani nenapadlo sa zaujimat o to co vracia formular tak ma to zarazilo. Ale hlavne dakujem za krasnu a rozvitu odpoved :)

Ďakujem!

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0