課程
/后端開發
/PHP
/PHP實現驗證碼制作
substr($data,rand(0,strlen($data)),1);這個函數的解釋? ?? 這樣取值是隨機多少個?
還有的地方看到最后是-1?? 這又是什么意思?
2017-03-22
源自:PHP實現驗證碼制作 1-6
正在回答
這是PHP中的代碼,我們從括號里往外看:
strlen()用于返回字符串$data的長度,假設$data字符串長度為10;
rand(0,strlen($data))生成0~10中的一個隨機整數并返回,假設返回6;
substr($data,rand(0,strlen($data)),1);先簡化為:
substr($data,6,1);就是返回$data字符串中從下標為6的字符開始截取1個字符并返回;
假設$data="一二三四五六七八九十";
就是先用strlen()得到這個字符串的長度10,然后用rand()從0~10中取一個隨機整數6,然后用這個整數6做下標用substr()取出字符串中對應的字符"七"。
這串代碼應該有點問題,因為字符串的長度會比字符串的最大下標大1,所以應該是strlen($data)-1。
修正后的代碼可以在PHP中用于在若干個自定義字符中隨機選取若干個生成驗證碼
$data = 'abcdefghijkmnpqrstuvwxyQWERTYUIOPLKJHGFDSAZXCVBNM3456789';
? $code = ""; //定義一個空字符串
? for ($i = 0; $i < 4; $i++) { //循環四次
? ? $code .= substr($data, rand(0, strlen($data)-1), 1); //將隨機取出的字符拼入字符串$code中
? }?
上述代碼就是在所有大小寫字母和數字中隨機選取4個字符(除了小寫l,z,o,數字1,2)當成驗證碼保存在$code中。
-1反方向開始長度1
舉報
各種形態驗證碼核心原理與實現技巧,講解實現過程中的技術難點
1 回答代碼解釋一下可以嗎
2 回答$index = rand(0,count($strdb));這個函數
1 回答為什么要rand()這個函數呢
3 回答用iconv函數講驗證碼轉彎utf-8,結果$_SESSION存放的值變亂碼了,不解
2 回答一直說輸入錯誤
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-09-23
這是PHP中的代碼,我們從括號里往外看:
strlen()用于返回字符串$data的長度,假設$data字符串長度為10;
rand(0,strlen($data))生成0~10中的一個隨機整數并返回,假設返回6;
substr($data,rand(0,strlen($data)),1);先簡化為:
substr($data,6,1);就是返回$data字符串中從下標為6的字符開始截取1個字符并返回;
假設$data="一二三四五六七八九十";
就是先用strlen()得到這個字符串的長度10,然后用rand()從0~10中取一個隨機整數6,然后用這個整數6做下標用substr()取出字符串中對應的字符"七"。
這串代碼應該有點問題,因為字符串的長度會比字符串的最大下標大1,所以應該是strlen($data)-1。
修正后的代碼可以在PHP中用于在若干個自定義字符中隨機選取若干個生成驗證碼
$data = 'abcdefghijkmnpqrstuvwxyQWERTYUIOPLKJHGFDSAZXCVBNM3456789';
? $code = ""; //定義一個空字符串
? for ($i = 0; $i < 4; $i++) { //循環四次
? ? $code .= substr($data, rand(0, strlen($data)-1), 1); //將隨機取出的字符拼入字符串$code中
? }?
上述代碼就是在所有大小寫字母和數字中隨機選取4個字符(除了小寫l,z,o,數字1,2)當成驗證碼保存在$code中。
2017-03-22
-1反方向開始長度1