ColdFusion 9: int and type=“numeric” nasty bug?

前端 未结 2 1124
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-07 11:30

I\'ve just experienced a behaviour that defies any logic and could potentially lead to serious issues and was wondering if it was a bug or if the behaviour was itend

相关标签:
2条回答
  • 2021-01-07 11:41

    You can use regular expressions to find out if there are any non numeric characters in a given form field:

    reFind( "[^\d-]", "1 2")
    

    That will match any character that is not a number, not a -

    If you want to check only positive numbers, you can use

    reFind( "[^\d]", "1 2")    
    

    If this returns true, you do not have an integer.

    0 讨论(0)
  • 2021-01-07 11:51

    This is a variation on that theme from the other question. See this code (or run it on cflive.net):

    <cfscript>
    s = "1 2";
    i = int(s);
    v = isValid("numeric", s);
    d = createOdbcDate(s);
    writeDump([s,i,v,d]);
    </cfscript>
    

    s converts to 41276 when calling int(), and when using it as an input for createOdbcDate(), we get:

    January, 02 2013 00:00:00 +0000
    

    So "1 2" is being interpreted as "m d", with an implied year of the current year.

    Which is utterly stupid. But there you go.

    0 讨论(0)
提交回复
热议问题