验证码没有出现在php中
我正在尝试创建一个captcha,它从我命名为dictionary.txt的文件中提取单词,并使用GD库将它们转换为captcha图像。但有点不对劲。我可以让字典中的短语显示为会话变量,但它们不会生成图像。所以它一定是GD库代码。有一个名为captcha_validate.php的最终目标文件,但现在这并不重要。我只是想让这个形象发挥作用 表单\u captcha.php验证码没有出现在php中,php,captcha,Php,Captcha,我正在尝试创建一个captcha,它从我命名为dictionary.txt的文件中提取单词,并使用GD库将它们转换为captcha图像。但有点不对劲。我可以让字典中的短语显示为会话变量,但它们不会生成图像。所以它一定是GD库代码。有一个名为captcha_validate.php的最终目标文件,但现在这并不重要。我只是想让这个形象发挥作用 表单\u captcha.php <form class="" action="captcha_validate.php" method="post"&
<form class="" action="captcha_validate.php" method="post">
Captcha Verify:
<input type="text" name="captcha" value="" /><br /><br />
<img src="captcha.php" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
<?php
session_start();
session_regenerate_id();
$file = file('dictionary.txt', FILE_IGNORE_NEW_LINES);
$length = count($file) - 1;
$random = rand(0, $length);
$_SESSION['captcha'] = $file[$random];
session_write_close();
function msg($msg) {
$container = imagecreate(250, 170);
$black = imagecolorallocate($container, 0, 0, 0);
$white = imagecolorallocate($container, 255, 255, 255);
$font = "C:\Windows\Fonts\arial.ttf";
imagefilledrectangle($container, 0, 0, 250, 170, $black);
$px = (imagesx($container) / (strlen($msg)/1.15));
$py = (imagesy($container) / 3.5);
imagefttext($container, 28, -27, $px, $py, $white, $font, $msg);
header("Content-type: image/png");
imagepng($container, null);
imagedestroy($container);
}
msg($file[$random]);
?>
验证码验证:
captcha.php
<form class="" action="captcha_validate.php" method="post">
Captcha Verify:
<input type="text" name="captcha" value="" /><br /><br />
<img src="captcha.php" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
<?php
session_start();
session_regenerate_id();
$file = file('dictionary.txt', FILE_IGNORE_NEW_LINES);
$length = count($file) - 1;
$random = rand(0, $length);
$_SESSION['captcha'] = $file[$random];
session_write_close();
function msg($msg) {
$container = imagecreate(250, 170);
$black = imagecolorallocate($container, 0, 0, 0);
$white = imagecolorallocate($container, 255, 255, 255);
$font = "C:\Windows\Fonts\arial.ttf";
imagefilledrectangle($container, 0, 0, 250, 170, $black);
$px = (imagesx($container) / (strlen($msg)/1.15));
$py = (imagesy($container) / 3.5);
imagefttext($container, 28, -27, $px, $py, $white, $font, $msg);
header("Content-type: image/png");
imagepng($container, null);
imagedestroy($container);
}
msg($file[$random]);
?>
尝试测试字体路径是否设置正确。我测试了yout脚本,当我为我的环境设置正确的字体路径时,它就工作了 比如:
$font='./SomeFont.ttf' 尝试测试字体路径是否设置正确。我测试了yout脚本,当我为我的环境设置正确的字体路径时,它就工作了 比如:
$font='./SomeFont.ttf' 好吧,原来我在captcha.php文件中使用了html,我不应该在这种情况下使用它。这就是我的代码不起作用的主要原因。感谢您的尝试,任何评论或回答的人。好吧,原来我在captcha.php文件中使用了html,我不应该在这种情况下使用它。这就是我的代码不起作用的主要原因。感谢尝试,任何评论或回答的人。
Imagepng
手册页说,如果未使用质量和过滤器参数,则NULL无效代码>我这样做了,但仍然不起作用。imagepng($container,null,0,PNG\u NO\u FILTER)Imagepng
手册页说,如果未使用quality和filters参数,则NULL无效代码>我这样做了,但仍然不起作用。imagepng($container,null,0,PNG\u NO\u FILTER);好的,结果是我在验证码文件中使用了html,我不应该在这种情况下使用它。好的,结果是我在验证码文件中使用了html,我不应该在这种情况下使用它。