PHP繪圖函數產生圖片驗證碼

來源:互聯網
上載者:User
PHP繪圖函數產生圖片驗證碼

// Set some important CAPTCHA constants  define('CAPTCHA_NUMCHARS', 6);  // number of characters in pass-phrase  define('CAPTCHA_WIDTH', 100);   // width of image  define('CAPTCHA_HEIGHT', 25);   // height of image// Generate the random pass-phrase$pass_phrase = "";  for ($i = 0; $i < CAPTCHA_NUMCHARS; $i++) {    $pass_phrase .= chr(rand(97, 122));  }  // Store the encrypted pass-phrase in a session variable$_SESSION['pass_phrase'] = SHA($pass_phrase);  // Create the image$img = imagecreatetruecolor(CAPTCHA_WIDTH, CAPTCHA_HEIGHT);  // Set a white background with black text and gray graphics$bg_color = imagecolorallocate($img, 255, 255, 255);     // white$text_color = imagecolorallocate($img, 0, 0, 0);         // black$graphic_color = imagecolorallocate($img, 64, 64, 64);   // dark gray// Fill the background  imagefilledrectangle($img, 0, 0, CAPTCHA_WIDTH, CAPTCHA_HEIGHT, $bg_color);  // Draw some random linesfor ($i = 0; $i < 5; $i++) {    imageline($img, 0, rand() % CAPTCHA_HEIGHT, CAPTCHA_WIDTH, rand() % CAPTCHA_HEIGHT, $graphic_color);  }  // Sprinkle in some random dotsfor ($i = 0; $i < 50; $i++) {    imagesetpixel($img, rand() % CAPTCHA_WIDTH, rand() % CAPTCHA_HEIGHT, $graphic_color);  }  // Draw the pass-phrase string  imagettftext($img, 18, 0, 5, CAPTCHA_HEIGHT - 5, $text_color, 'Courier New Bold.ttf', $pass_phrase);  // Output the image as a PNG using a header  header("Content-type: image/png");  imagepng($img);  // Clean up  imagedestroy($img);?>

在頁面中使用這個產生驗證碼的指令碼

  session_start();?><htmlxmlns="http://www.w3.org/1999/xhtml"xml:lang="en"lang="en"><head><metahttp-equiv="Content-Type"content="text/html; charset=utf-8" /><title>Guitar Wars - Add Your High Scoretitle><linkrel="stylesheet"type="text/css"href="style.css" />head><body><h2>Guitar Wars - Add Your High Scoreh2>require_once('appvars.php');  require_once('connectvars.php');  if (isset($_POST['submit'])) {    // Connect to the database$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);    // Grab the score data from the POST$name = mysqli_real_escape_string($dbc, trim($_POST['name']));    $score = mysqli_real_escape_string($dbc, trim($_POST['score']));    $screenshot = mysqli_real_escape_string($dbc, trim($_FILES['screenshot']['name']));    $screenshot_type = $_FILES['screenshot']['type'];    $screenshot_size = $_FILES['screenshot']['size'];     // Check the CAPTCHA pass-phrase for verification$user_pass_phrase = SHA($_POST['verify']);    if ($_SESSION['pass_phrase'] == $user_pass_phrase) {      if (!empty($name) && is_numeric($score) && !empty($screenshot)) {        if ((($screenshot_type == 'image/gif') || ($screenshot_type == 'image/jpeg') || ($screenshot_type == 'image/pjpeg') || ($screenshot_type == 'image/png'))          && ($screenshot_size > 0) && ($screenshot_size <= GW_MAXFILESIZE)) {          if ($_FILES['screenshot']['error'] == 0) {            // Move the file to the target upload folder$target = GW_UPLOADPATH . $screenshot;            if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) {              // Write the data to the database$query = "INSERT INTO guitarwars (date, name, score, screenshot) VALUES (NOW(), '$name', '$score', '$screenshot')";              mysqli_query($dbc, $query);              // Confirm success with the userecho'

Thanks for adding your new high score! It will be reviewed and added to the high score list as soon as possible.

'
; echo'

Name: ' . $name . '
'
; echo'Score: ' . $score . '
'
; echo' . GW_UPLOADPATH . $screenshot . '" alt="PHP繪圖函數產生圖片驗證碼" />

'
; echo'

<< Back to high scores

'
; // Clear the score data to clear the form$name = ""; $score = ""; $screenshot = ""; mysqli_close($dbc); } else { echo'

Sorry, there was a problem uploading your screen shot image.

'
; } } } else { echo'

The screen shot must be a GIF, JPEG, or PNG image file no greater than ' . (GW_MAXFILESIZE / 1024) . ' KB in size.

'
; } // Try to delete the temporary screen shot image file @unlink($_FILES['screenshot']['tmp_name']); } else { echo'

Please enter all of the information to add your high score.

'
; } } else { echo'

Please enter the verification pass-phrase exactly as shown.

'
; } }?>
<hr /><formenctype="multipart/form-data"method="post"action=""><inputtype="hidden"name="MAX_FILE_SIZE"value="" /><labelfor="name">Name:label>
<inputtype="text"id="name"name="name"value="" /><br /><labelfor="score">Score:label><inputtype="text"id="score"name="score"value="" /><br /><labelfor="screenshot">Screen shot:label><inputtype="file"id="screenshot"name="screenshot" /><br /><labelfor="verify">Verification:label><inputtype="text"id="verify"name="verify"value="Enter the pass-phrase." /><imgsrc="captcha.php"alt="Verification pass-phrase" /><hr /><inputtype="submit"value="Add"name="submit" />form>body>html>

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介紹了PHP繪圖函數產生圖片驗證碼,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.