<? Header("Content-type:image/png"); //定義header,聲明圖片檔案,最好是png,無著作權之擾; //產生新的四位整數驗證碼 session_start();//開啟session; authnum_session = ''; str = 'abcdefghijkmnpqrstuvwxyz1234567890'; //定義用來顯示在圖片上的數字和字母; l = strlen(str); //得到字串的長度; //迴圈隨機抽取四位前面定義的字母和數字; for(i=1;i<=4;i++) { num=rand(0,l-1); //每次隨機抽取一位元字;從第一個字到該字串最大長度, //減1是因為截取字元是從0開始起算;這樣34字元任意都有可能排在其中; authnum_session.= str[num]; //將通過數字得來的字元連起來一共是四位; } session_register("authnum_session"); //用session來做驗證也不錯;註冊session,名稱為authnum_session, //其它頁面只要包含了該圖片 //即可以通過_SESSION["authnum_session"]來調用 //產生驗證碼圖片, srand((double)microtime()*1000000); im = imagecreate(50,20);//圖片寬與高; //主要用到黑白灰三種色; black = ImageColorAllocate(im, 0,0,0); white = ImageColorAllocate(im, 255,255,255); gray = ImageColorAllocate(im, 200,200,200); //將四位整數驗證碼繪入圖片 imagefill(im,68,30,gray); //如不用幹擾線,注釋就行了; li = ImageColorAllocate(im, 220,220,220); for(i=0;i<3;i++) {//加入3條幹擾線;也可以不要;視情況而定,因為可能影響使用者輸入; imageline(im,rand(0,30),rand(0,21),rand(20,40),rand(0,21),li); } //字元在圖片的位置; imagestring(im, 5, 8, 2, authnum_session, white); for(i=0;i<90;i++) {//加入幹擾象素 imagesetpixel(im, rand()%70 , rand()%30 , gray); } ImagePNG(im); ImageDestroy(im); ?> |