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

Hiroshi Honma hiro0122_mail @ yahoo.co.jp
2006年 6月 30日 (金) 19:19:12 JST


To.鈴木孝征 様。
返事が遅れてしまい申し訳ありません。
しばらくPCに触れられなかったもので・・・。

>まずHTMLの出力とイメージの出力をわけましょう。
phpとhtmlを分離し、
htmlは、

<html>
<head>
<title>test4</title>
</head>

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

</html>

のようにし、test4.phpは以前の<?php・・・?>の部分だけにして、
行ったのですが×の画像表示失敗のマークが2つ出るだけでした。
(runner.phpからtest4.phpに変更していますが、テスト用ということ以外
意味はありません。)

基本的にセッションを使う必要があると思います。
a.php : HTMLを表示
b.php : 画像を送信
c.php : a.phpから送られてきたデータを解析
という3つのスクリプトを作成して、練習してはいかがでしょう。一つのPHP
ファイルでも処理できないことはないと思いますが、最初は個別に開発したほう
が理解が進むと思います。

>以下参考までに(思いつきで書いていますのできっと動作しないでしょう)
>a.php
><?php
>session_start();
>$_SESSION['number'] = 1234;
>?>
><html>
><body>
><img src='b.php'>
><form action="c.php">
><input type='text' name='number'>
><input type='submit' value='送信'>
></form>
></body>
></html>

>b.php
><?php
>session_start();
>//ベース画像読み込み
>$num_im1 = imagecreatefrompng('../image/num_im_base1.png');
>
>//数字の色の作成
>$num_color1 = imagecolorallocate($num_im1, 255, 0, 0);
>
>//数字の決定
>$num1 = $_SESSION['number'];
>
>//画像へ数字を書き込み
>imagestring($num_im1, 100, 0, 0, $num1, $num_color1);
>
>//合成画像出力
>header('Content-type: image/png');
>imagepng($num_im1);
>//合成画像破棄
>imagedestroy($num_im1);
>?>

>c.php
><?php
>if($_SESSION['number'] == $_REQUEST['number']){
>print "OK";
>}else{
>print "failed";
>}
>?>

↑については、実際にa.phpを表示させたのですが、
画像部分(b.phpの画像)は表示失敗の×表示でした。

とりあえず、数字を1234でOK、9999(not 1234)でfailedと
表示されるかと思い、画像は無視してフォームの送信を
試みたのですがどちらも、failedになりました。

まだ、初心者なので、じっくり読んでみたいと思います。

ありがとうございました。
今後ともよろしくお願いします。 


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


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