我目前正在开发验证码系统。为此,我正在创建带有一些基本数学问题的随机图片。用户在提交表单之前必须给出正确的答案。
这是代码:
<?php
function randExer() {
//Creating random (simple) math problem
$arr = array("zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten");
$item1 = $arr[array_rand($arr)];
$item2 = $arr[array_rand($arr)];
$random = $item1 . " + " . $item2;
//Saving created math problem for later
file_put_contents("../sites/exercise.txt", $random);
//Creates a black picture with width=200 and height = 50
$img = imagecreatetruecolor(200, 50);
//uses RGB-values to create a useable color
$white = imagecolorallocate($img, 255, 255, 255);
$silver = imagecolorallocate($img, 192, 192, 192);
//Adds random lines to the images
for($i = 0; $i < 5; $i++) {
imagesetthickness($img, rand(1, 3));
$x1 = rand(0, 100);
$y1 = rand(0, 25);
$x2 = $x1 + rand(0, 100);
$y2 = $y1 + rand(0, 25);
imageline($img, $x1, $x2, $x2, $y2, $silver);
}
//Adds white-colored text
$var = imagestring($img, 5, 18, 18, $random . " = ?", $white);
$rotate = imagerotate($img, 10, 0);
//Save image
imagejpeg($rotate, "../sites/exercise.png", -1);
};
?>
正如我在代码审查中的问题的评论中所指出的,如果超过一个,系统将无法工作客户端同时使用表单,因为图像将保存在同一个地方。
如何在不使用不同文件名保存每张图片的情况下解决这个问题(我真的不希望我的服务器充满图像)?
繁星点点滴滴