久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      PHP中“==”的一些坑

      PHP 是弱類型的語言,會(huì)自動(dòng)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,這無疑給我們的開發(fā)帶來了極大的方便??墒聦?shí)真是如此嗎?今天我們就從==說起。

      例子

      首先,看一下這段代碼。猜猜看結(jié)果會(huì)是什么

      <?php var_dump(md5('240610708') == md5('QNKCDZO')); var_dump(md5('aabg7XSs') == md5('aabC9RqS')); var_dump(sha1('aaroZmOk') == sha1('aaK1STfY')); var_dump(sha1('aaO8zKZF') == sha1('aa3OFF9m')); var_dump('0010e2' == '1e3'); var_dump('0x1234Ab' == '1193131'); var_dump('0xABCdef' == ' 0xABCdef'); var_dump(0 == 'abcdefg'); var_dump(1 == '1abcdef'); ?>

      一眼看過,很明顯肯定都是false吧,但運(yùn)行代碼后發(fā)現(xiàn)全是true!

      WTF!

      為什么會(huì)這樣?

      開頭我已經(jīng)說過了,PHP 是弱類型的語言。使用==對(duì)比兩個(gè)變量時(shí),當(dāng)有一個(gè)變量為整數(shù),另外一個(gè)變量也會(huì)轉(zhuǎn)換為整數(shù)。這也就解釋了,為什么0 == 'abcdefg'和1 == '1abcdef'會(huì)成立。

      但是,其他的代碼呢?字符串難道還會(huì)轉(zhuǎn)換?

      PHP 手冊(cè)上為我們提供了解釋說明。

      If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number and the comparison performed numerically.

      也就是說,如果你比較的兩個(gè)字符串涉及到數(shù)字(如:"0"),那么每個(gè)字符串都會(huì)轉(zhuǎn)換成數(shù)字。

      在這里,我不得不說:PHP是最好的語言!

      危害

      當(dāng)我們的網(wǎng)站是直接MD5或Sha1加密而沒有加鹽,碰巧某用戶密碼加密涉及到數(shù)字,那么就有可能被碰撞破解!

      解決

      1.在開發(fā)過程中盡可能避免使用==判斷兩個(gè)變量的值

      2.密碼加密最好使用password_hash()或者加鹽md5($pwd.$salt)

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)