1

我不确定我是否完全理解这是如何工作的。对于网站表单,我想生成一个随机验证图像并将其与表单一起显示。所以理想情况下,我想要一些类似的东西:

<form action="post.php" method="post">
  ...
  <?php create_captcha(); ?>
</form>

虽然我确实有一个在 PHP 中创建图像资源的函数(链接

function create_captcha() {
  $w = 60; $h = 30;
  $img = imagecreatetruecolor($w, $h);
  ...
  //header("Content-Type: image/jpeg");
  imagejpeg($img);
}

我不太清楚如何将该图像作为 HTML 表单的一部分直接输出到网站上。我怀疑我必须将它保存到一个临时文件中captcha.jpg,然后<img src="captcha.jpg" />在网站中生成一个。

有没有更优雅的方式不使用临时图像?

4

2 回答 2

3

使用您的验证码生成文件路径作为 IMG 标签的来源

<img src="http://domain.com/your-captcha_generating-file-path" />
于 2013-07-11T13:20:13.713 回答
3

你可以这样做:

function getCaptcha() {

    // Begin output buffering
    ob_start();

    // generate the captcha image in some magic way
    $w = 60; $h = 30;
    $img = imagecreatetruecolor($w, $h);
    imagejpeg($img);

    // and finally retrieve the byte stream
    $rawImageBytes = ob_get_clean();

    return "<img src='data:image/jpeg;base64," . base64_encode( $rawImageBytes ) . "' />";
}

通过在 img 标签中使用 Base64 编码的数据源,您根本不需要存储任何临时文件。

于 2013-07-11T13:24:20.813 回答