[PHP-users 29469] 数字認証画面を作りたい

Hiroshi Honma hiro0122_mail @ yahoo.co.jp
2006年 6月 22日 (木) 15:42:21 JST


初投稿なので間違いがあるかもしれませんがよろしくお願いします。

数列が書かれたイメージを表示し、
いくつかの選択候補の中から正しい数列を選んでもらう
数字認証画面を作っているのですが、
画像表示のところでつまづいています。

中身としては以下のようなコードです。

以下runner.php-------------------------------------------------------------------
<html>
<head>
<title>runner test mode</title>
</head>

<body>
<img src="./runner.php?TN=1">
<img src="./runner.php?TN=2">
</body>


<?php

//ベース画像読み込み
$num_im1 = imagecreatefrompng('../image/num_im_base1.png');
$num_im2 = imagecreatefrompng('../image/num_im_base2.png');

//数字の色の作成
$num_color1 = imagecolorallocate($num_im1, 255, 0, 0);
$num_color2 = imagecolorallocate($num_im1, 0, 255, 0);
$num_color3 = imagecolorallocate($num_im1, 0, 0, 255);
$num_color4 = imagecolorallocate($num_im1, 0, 0, 0);

//数字の決定
mt_srand(microtime()*100000);
$num1 = mt_rand(0, 9);
$num2 = mt_rand(0, 9);
$num3 = mt_rand(0, 9);
$num4 = mt_rand(0, 9);

//画像へ数字を書き込み
imagestring($num_im1, 100, 0, 0, $num1, $num_color1);
imagestring($num_im1, 100, 30, 0, $num2, $num_color2);
imagestring($num_im2, 100, 0, 0, $num3, $num_color3);
imagestring($num_im2, 100, 30, 0, $num4, $num_color4);

if ($TN == 1) {
 echo "TN = 1 <br>";
 //合成画像出力
 header('Content-type: image/png');
 imagepng($num_im1);
 //合成画像破棄
 imagedestroy($num_im1);
}
if ($TN == 2) {
 echo "TN = 2 <br>";
 //合成画像出力
 header("Content-type: image/png");
 imagepng($num_im2);
 //合成画像破棄
 imagedestroy($num_im2);
}

$number = $num1 * 1000 + $num2 * 100 + $num3 * 10 + $num4;
$dummy_number1 = mt_rand(0, 9999);
$dummy_number2 = mt_rand(0, 9999);
$dummy_number3 = mt_rand(0, 9999);

printf("<br>");

printf("<a href=\"./runner.php?sel_num=%04d\">", $number);
printf(" %04d", $number);
printf("</a>");

printf("<a href=\"./runner.php?sel_num=%04d\">", $dummy_number1);
printf(" %04d", $dummy_number1);
printf("</a>");

printf("<a href=\"./runner.php?sel_num=%04d\">", $dummy_number2);
printf(" %04d", $dummy_number2);
printf("</a>");

printf("<a href=\"./runner.php?sel_num=%04d\">", $dummy_number3);
printf(" %04d", $dummy_number3);
printf("</a>");
?>

</html>
-----------------------------------------------------------------------------------
最初に台紙となる画像を読み込み、
そのあとでランダムに生成した数字を画像に書き込み
出力しているのですが、
実際にやってみると画像が×になって表示されません。

また、正しい数字を選択したかどうかをどうやって確認すればよいのか
(今のrunner.phpで生成した数字を、リンクにより再表示されるrunner.php
にどうやって持ち越せばよいか)がわかりません。

何卒よろしくお願いします。 


--------------------------------------
Let's start Yahoo! Auction  -  Free Campaign Now!
http://pr.mail.yahoo.co.jp/auction/


PHP-users メーリングリストの案内