首先打開網址是:
這段php代碼的意思是,通過get方法得到a和b的值,然后如果$a==0 並且$a為真,得到flag1,如果b是整數或者數字字符串,就退出,然后如果$b>1234就得到flag2.
本題考查的是php的弱類型比較。
雖然 PHP 是弱類型語言,但也需要明白變量類型及它們的意義,因為我們經常需要對 PHP 變量進行比較,包含松散和嚴格比較。
- 松散比較:使用兩個等號 == 比較,只比較值,不比較類型。
- 嚴格比較:用三個等號 === 比較,除了比較值,也比較類型。
例如,"42" 是一個字符串而 42 是一個整數。FALSE 是一個布爾值而 "false" 是一個字符串。
掌握php弱類型比較 php中其中兩種比較符號: ==:先將字符串類型轉化成相同,再比較 ===:先判斷兩種字符串的類型是否相等,再比較 字符串和數字比較使用==時,字符串會先轉換為數字類型再比較 var_dump('a' == 0);//true,此時a字符串類型轉化成數字,因為a字符串開頭中沒有找到數字,所以轉換為0 var_dump('123a' == 123);//true,這里'123a'會被轉換為123 var_dump('a123' == 123);//false,因為php中有這樣一個規定:字符串的開始部分決定了它的值,如果該字符串以合法的數字開始,則使用該數字至和它連續的最后一個數字結束,否則其比較時整體值為0。 舉例: var_dump('123a1' == 123);//true var_dump('1233a' == 123);//false
首先對於a的話,我們可以直接傳一個字母a進去,因為a是沒有賦值的,所以通過比較,字符串'a'==0是true的。並且a也是true的。
對於b的話,我們可以給他傳1235a,這樣b就不是數字串了,而1235a會自動轉換成1235再去和1234來比較為true。
得到flag: