比如我表單post過來了sha1('1')這個加密後的字串356a192b7913b04c54574d18c28d46e6395428ab。
然後我if($_POST['s']=='356a192b7913b04c54574d18c28d46e6395428ab')
為什麼判斷為false?
echo $_POST['s']也是356a192b7913b04c54574d18c28d46e6395428ab啊。。
回複討論(解決方案)
仔細檢查一下 $_POST['s'] 是不是那個值
仔細檢查一下 $_POST['s'] 是不是那個值 我對過的沒錯阿。。。我在BAE試的。。一直不明白為什麼。。。
你不如用 var_dump() 看看是否包含了空格換行什麼的
你不如用 var_dump() 看看是否包含了空格換行什麼的
沒有的。。而且我也用trim()過濾了的說。。你能不能幫我看看呢。http://hole.icnu.me/t1.php
我複製他的var_dump()輸出的引號+值就可以是true。
自己手打引號就是false。。。這是為什麼啊??
貼出你的代碼,可能不是你說的原因
貼出你的代碼,可能不是你說的原因
t.php的代碼。。
';var_dump($_POST['set']);if($_POST['set']=="f45918a75f152c9ce0b58043d5e5d7f22358665c")echo 'qw';?>
就是if裡面那個雙引號手打就false。。不知為什麼。。。
http://hole.icnu.me/t1.php 這裡post到t.php
貼出你的代碼,可能不是你說的原因
應該是編碼問題了。轉換編碼可以了。。
貼出你的代碼,可能不是你說的原因
應該是編碼問題了。轉換編碼可以了。。
錯了錯了。。。我也不知道為什麼了。。。
我要重新描述一下了。。。
sha1加密後的字元應該是40個的
post過來後的怎麼就變成43個字元了。。。?
在後面的頁面重新加密的也是40個字元的。。
但是如果直接把指標指定一個那個加密後的字串也是43個字元。。。
為什嗎?
var_dump()post過來的資料
string(43) "?356a192b7913b04c54574d18c28d46e6395428ab"
var_dump(sha1('1'))
string(40) "356a192b7913b04c54574d18c28d46e6395428ab"
var_dump('356a192b7913b04c54574d18c28d46e6395428ab')
string(43) "?356a192b7913b04c54574d18c28d46e6395428ab"
你 echo pack('H*', $_POST['set']); 看一下結果
你 echo pack('H*', $_POST['set']); 看一下結果
不好意思,我弄錯了!
這樣:
print_r(unpack('H*', $_POST['set']));
不好意思,我弄錯了!
這樣:
print_r(unpack('H*', $_POST['set']));
Array ( [1] => efbbbf33353661313932623739313362303463353435373464313863323864343665363339353432386162 )
Array ( [1] => efbbbf33353661313932623739313362303463353435373464313863323864343665363339353432386162 )
這個 efbbbf 是 utf-8 的 BOM 頭
你去掉相關檔案的 BOM 頭就可以了
Array ( [1] => efbbbf33353661313932623739313362303463353435373464313863323864343665363339353432386162 )
這個 efbbbf 是 utf-8 的 BOM 頭
你去掉相關檔案的 BOM 頭就可以了
謝了~~