js生成十六進制隨機數(驗證碼)
阿新 • • 發佈:2018-03-31
png 生成隨機數 資源 傳遞 all 循環輸出 ima ring 語句
使用JavaScript也可以生成十六進制隨機數,但是稍有些復雜。JavaScript中不能直接將十進制數轉為十六進制,需要手動進行轉換。首先使用Math.random()函數生成0~15之間的隨機數,然後使用Math.ceil()函數將隨機數取整,接下來就要逐次判斷該值,如果該值大於9,那麽將10~15的數一一對應轉換為a、b…,一直到f。轉換完成後,將值累加,最後傳給valcode.php頁。
使用JavaScript生成十六進制隨機數的完整代碼如下:
//生成隨機數
function showval(){ num = ‘‘; for(i=0;i<4;i++){//循環輸出四位驗證碼 tmp = Math.ceil((Math.random() * 15));//取出一位十六進制的整數 if(tmp > 9){//依次判斷隨機數 switch(tmp){ case(10)://如果隨機數等於10,換為a num += ‘a‘; break; case(11): num+= ‘b‘;//如果隨機數等於11,換為b break; case(12): num += ‘c‘;//如果隨機數等於12,換為c break; case(13): num += ‘d‘;//如果隨機數等於13,換為d break;case(14): num += ‘e‘;//如果隨機數等於14,換為e break; case(15): num += ‘f‘;//如果隨機數等於15,換為f break; } }else{ num += tmp; } } $(‘chkid‘).src=‘valcode.php?num=‘+num;//將生成的隨機數傳給圖像生成頁 $(‘chknm‘).value = num;//將隨機數的值保存到頁面的隱藏域中 }
附上圖像生成頁代碼(實現的功能是驗證碼)
<?php header("content-type:image/png"); //設置頁面編碼 $num = $_GET[‘num‘]; //獲取超級鏈接傳遞的隨機數 $imagewidth=60; //定義畫布的寬 $imageheight=18; //定義畫布的高 $numimage = imagecreate($imagewidth,$imageheight); //創建畫布 imagecolorallocate($numimage,240,240,240); //設置畫布顏色分別是紅,綠,黃 for($i=0;$i<strlen($num);$i++){ //循環讀取隨機數 $x = mt_rand(1,8)+$imagewidth*$i/4; $y = mt_rand(1,$imageheight/4); $color=imagecolorallocate($numimage,mt_rand(0,150),mt_rand(0,150),mt_rand(0,150)); //定義圖像的顏色 imagestring($numimage,5,$x,$y,$num[$i],$color); //將隨機數寫入到畫布中 } for($i=0;$i<200;$i++){ //for循環語句生成幹擾線 $randcolor=imagecolorallocate($numimage,rand(200,255),rand(200,255),rand(200,255)); //定義顏色 imagesetpixel($numimage,rand()%70,rand()%20,$randcolor); //生成幹擾線 } imagepng($numimage); //生成圖像 imagedestroy($numimage); //釋放資源 ?>
js生成十六進制隨機數(驗證碼)