2012-03-29 45 views
0

我已經page?vesion=1.0.1

我怎樣才能使$ _GET [「版本」]安全保障的財產以後像

$version = (float) $_GET['version']; 

但這會工作,如果它1.2或1.0如果它的1.0.1

回答

3

使用一個正則表達式,如/[0-9]+(\.[0-9]+){0,3}/來驗證它。 preg_match是你的朋友:

if (preg_match('/[0-9]+(\.[0-9]+){0,3}/', $_GET['version'], $match)) { 
    // $match[0] contains the validated version number 
} 

,如果我知道你想要什麼,接受什麼拒絕,我可以幫你。

編輯:用輔助版本號的數目替換正則表達式中的3;與3 0.1.2.3是允許的,但0.1.2.3.4不是

+0

不要忘記'^'和'$'錨! '2.5.0' ; DROP TABLE ...'不是允許的好版本號。 ;-) – Wiseguy 2012-03-29 18:06:52

+0

就像php版本5.3.0 – 2012-03-29 18:08:14

+0

@Wiseguy無論如何,你真的應該通過mysql_real_escape_query傳遞你的數據,即使你完全確定你的變量持有 – CAFxX 2012-03-29 18:10:43