php弱類型比較 simple_php wp


打開是一小段php的代碼:

 

考點是php的弱口令比較,分析一下:

掌握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

<、>、<=、>=都存在和==相同的弱類型

<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
    echo $flag1;
}
if(is_numeric($b)){
    exit();
}
if($b>1234){
    echo $flag2;
}
?> 

(1)這里包含了config.php
(2)url接收參數a和b的值
(3)如果$a等於0 and $a,輸出$flag1
(4)如果$b是數字或者字符串那么退出當前腳本
(5)如果$b>1234,輸出$flag2

if(true and true){ //這里$a==0 and $a,==為弱類型比較,字符串開頭都為0,所以0==0 and 'b',因為字符串c存在,所以and后面也為true,所以雙true,最后if括號里為true,執行if下面的語句
echo $flag1;
}
if(is_numeric(2222a)){
exit();
}
if(2222a>1234){
echo $flag2;

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM