1. 程式人生 > >js生成十六進制隨機數(驗證碼)

js生成十六進制隨機數(驗證碼)

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生成十六進制隨機數(驗證碼)