Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: PHP - bug function is_int [vyřešeno]  (Přečteno 2504 krát)

{V} P $ y c h o {V}

  • Návštěvník
  • Příspěvků: 72
PHP - bug function is_int [vyřešeno]
« kdy: 28 Března 2012, 17:20:09 »
Nazdar, mám problém, mám kód:
Kód: [Vybrat]
if(!is_int($_POST['ID_Process']))
{
echo('<script type="text/javascript">alert("Musíte zadat pouze číslo!");</script>');
return;
}
jenže je problém že ať už tam zadám text nebo číslo, tak mi to furt vypíše ,,Musíte zadat ...''.
Nevím v čem je problém, dřív mi na PHP 5.2 fungovala, ale od verze 5.3 jsou skoro všechny funkce úplně jinak dělaný :/
« Poslední změna: 28 Března 2012, 17:48:40 od {V} P $ y c h o {V} »

Martin - ViPEr*CZ*

Re:PHP - bug function is_int
« Odpověď #1 kdy: 28 Března 2012, 17:42:06 »
Podle mě todle $_POST['ID_Process'] vrací vždy řetězec. Tj. zadáte číslo 5 jenže $_POST['ID_Process'] = "5"; Ověříte to jednoduše a to tak, že si uděláte var_dump($_POST['ID_Process']);
Možná bude hezčí si udělat regulárek a testovat $_POST['ID_Process'] jestli obsahuje [0-9].
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

{V} P $ y c h o {V}

  • Návštěvník
  • Příspěvků: 72
Re:PHP - bug function is_int
« Odpověď #2 kdy: 28 Března 2012, 17:48:22 »
Podle mě todle $_POST['ID_Process'] vrací vždy řetězec. Tj. zadáte číslo 5 jenže $_POST['ID_Process'] = "5"; Ověříte to jednoduše a to tak, že si uděláte var_dump($_POST['ID_Process']);
Možná bude hezčí si udělat regulárek a testovat $_POST['ID_Process'] jestli obsahuje [0-9].
Ano, děkuji. Problém je již vyřešen a vyřešil sem to následovnou jednoduchou funkcí po svém ...
Kód: [Vybrat]
function _int($int)
{
if(is_numeric($int) === TRUE)
{
if((int)$int == $int) return TRUE;
else return FALSE;
}else return FALSE;
}

Martin - ViPEr*CZ*

Re:PHP - bug function is_int [vyřešeno]
« Odpověď #3 kdy: 28 Března 2012, 17:52:33 »
is_numeric je určitě náhrada za regulár... navíc rovnou otestuje i kdyby šlo o typ integer. Jen teď nechápu tu kombinaci? Proč rovnou nepoužijete pouze is_numeric??? To je zbytečný to ifování co tam máte.
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

{V} P $ y c h o {V}

  • Návštěvník
  • Příspěvků: 72
Re:PHP - bug function is_int [vyřešeno]
« Odpověď #4 kdy: 28 Března 2012, 19:07:06 »
is_numeric je určitě náhrada za regulár... navíc rovnou otestuje i kdyby šlo o typ integer. Jen teď nechápu tu kombinaci? Proč rovnou nepoužijete pouze is_numeric??? To je zbytečný to ifování co tam máte.
Pokud bych použil pouze jen funkci is_numeric() tak by mi to vzalo i ,,1e4'' ale já potřebuju čistě jen integer a to ,ifování'' sem ještě zkrátil, takže momentálně vypadá takto:
Kód: [Vybrat]
function _int($int)
{
if(is_numeric($int) === TRUE && (int)$int == $int) return true;
else return false;
}

Martin - ViPEr*CZ*

Re:PHP - bug function is_int [vyřešeno]
« Odpověď #5 kdy: 28 Března 2012, 19:17:05 »
1e4 je opravdu číslo... no možná by pak hezčí zápis měl opravdu regulární výraz... neboť (int)$int == $int se mi moc nezamlouvá.
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

{V} P $ y c h o {V}

  • Návštěvník
  • Příspěvků: 72
Re:PHP - bug function is_int [vyřešeno]
« Odpověď #6 kdy: 28 Března 2012, 20:18:43 »
1e4 je opravdu číslo... no možná by pak hezčí zápis měl opravdu regulární výraz... neboť (int)$int == $int se mi moc nezamlouvá.
Zde je už správná:
Kód: [Vybrat]
function _int($int)
{
if(is_numeric($int) === TRUE && intVal($int) == $int) return true;
else return false;
}

Martin - ViPEr*CZ*

Re:PHP - bug function is_int [vyřešeno]
« Odpověď #7 kdy: 28 Března 2012, 21:59:29 »
Todle je možná ještě hezčí
Kód: [Vybrat]
function _int($int) {
   return preg_match("/^[0-9]/", (string)$int);
}
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

starenka

  • Stálý člen
  • **
  • Příspěvků: 1276
  • Karma: plynová [zapalovač] [hasičák]
    • /home/starenka
Re:PHP - bug function is_int [vyřešeno]
« Odpověď #8 kdy: 30 Března 2012, 00:05:54 »
Todle je možná ještě hezčí
Kód: [Vybrat]
function _int($int) {
   return preg_match("/^[0-9]/", (string)$int);
}
cely zaporny cisla nejsou int?  8)
mojenka | blozinek v2 | starej blozinek | krotim hady za penize | UJ! Kalužátor

Debian testing vrní v Thinkpadu X200/bedně/EEE 900a, MasoX Tiger v lampe

Martin - ViPEr*CZ*

Re:PHP - bug function is_int [vyřešeno]
« Odpověď #9 kdy: 30 Března 2012, 09:39:37 »
No jo pravda... ani jsem v tu chvíli nepomyslel... je pravda, že se snažím spíš tlačit než psát to přesně za někoho... se mnou se taky nikdo nemaže. Ale máš pravda todle je takový unsigned int.
Tak mu to trochu vylepšíme:

Kód: [Vybrat]
function _int($int) {
   return preg_match("/^-?[0-9]/", (string)$int);
}
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

ETNyx

  • Aktivní člen
  • *
  • Příspěvků: 425
Re:PHP - bug function is_int [vyřešeno]
« Odpověď #10 kdy: 30 Března 2012, 11:03:42 »
Ještě bych to trošku poupravil, ten pattern by měl vypadat spíše /^-?[0-9]+$/, ten původní by pustil nechtěné číslo 1e3 a spoustu dalších stringů která čísla ani vzdáleně nepřipomínají. btw záleží od požadavků programátora, ale tohle se nebude mít rádo ani s desetinejma číslama,...
jabber: etnyx@jabbim.cz

Martin - ViPEr*CZ*

Re:PHP - bug function is_int [vyřešeno]
« Odpověď #11 kdy: 30 Března 2012, 11:24:47 »
Ještě bych to trošku poupravil, ten pattern by měl vypadat spíše /^-?[0-9]+$/, ten původní by pustil nechtěné číslo 1e3 a spoustu dalších stringů která čísla ani vzdáleně nepřipomínají. btw záleží od požadavků programátora, ale tohle se nebude mít rádo ani s desetinejma číslama,...
Ano nebude to brát desetinný čísla, ale to ani ta původní funkce autora vlákna, kdy dochází k přetypování string na integer a tím se určitě desetinná část zahodí. Ta funkce by měla kontrolovat, zda-li je číslo typu integer co jsem pochopil. Samozřejmě +$ je určitě ještě lepší dát na konec, ale to už záleží na požadavcích jak jsi psal.
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

 

Provoz zaštiťuje spolek OpenAlt.