携帯端末向けのジェネレーター制作の続きです。前回は任意の文字を合成するところまで紹介しました。今回は、入力された文字を合成する方法について解説しましょう。なお、解説と言っても書いている本人がPHP暦2ヵ月弱の若輩者なので、ミスやもっといい方法があるかもしれません。そんなときはやさしくご指摘いただけると幸いですww
まずは以下のソースをご覧ください。基本部分は前回のソースとあまり変わっていません。ですが、入力フォーム用のHTMLタグが加えられています。
------------------------------------------------
<?php
$txt = $_POST['txt'];
$txt = mb_convert_encoding($txt, "UTF-8", "auto");
if($_POST['submit']){
header("content-type: image/jpeg");
$img = imagecreatefromjpeg("test01.jpg");
$font = "VL-Gothic-Regular.ttf";
$black = imagecolorallocate($img, 0, 0, 0);
$fontSize = 20;
$x = 13;
$y = 50;
imagettftext($img, $fontSize, 0, $x, $y, $black, $font, $txt);
imagejpeg($img);
imagedestroy($img);
} else {
?>
<form action="generator.php" method="POST">
<input type="text" name="txt" size="30" value="文字を入力"><br>
<input type="submit" name="submit" value="投稿">
</form>
<?php
}
?>
------------------------------------------------
formタグで囲まれた部分が入力インターフェースの部分です。入力用のテキストボックス(txt)と投稿用のボタン(submit)を用意しています。これらが操作されれば、「generator.php」が呼び出され、それぞれの内容がPHPプログラムにPOSTされるわけです。
POSTされたデータは$_POSTで扱えます。「$txt = $_POST['txt'];」は、POSTされたtxt(テキストボックス)のデータを変数$txtに代入するという意味です。このデータの文字コードを変換することで、文字化けすることなく扱えるようにしています。
「if($_POST['submit'])」は、submitの値が真、つまりボタンが押されていれば「{}」の中の命令を実行する、という意味です。この部分の処理は前回と変わりません。文字列の指定がifの外に出ているだけで、そのほかの処理はまったく同じです。
このプログラムを実行すると、以下のような結果が得られます。

表示したばかりの状態

文字を入力して「投稿」をクリック

入力した文字が合成されました
ここでポイントをふたつほど。まずelseの部分で「?>」と記述して、一度PHP部分から抜けています。これは、subitが押されていないならフォームを表示する、という意味です。
また、テキストボックスのvalueにあらかじめ表示する文字を設定していますが、これはボタンの文字化けを防止するためです。この部分を入力しておかないと、ボタンが文字化けすることがあります。事前にmetaタグなどで文字コードを指定してもいいのですが、こちらのほうが手軽です。
ちょっと短いのですが、今回の解説はここまで。次回は入力フォームを常時表示しておく方法について紹介します。
まずは以下のソースをご覧ください。基本部分は前回のソースとあまり変わっていません。ですが、入力フォーム用のHTMLタグが加えられています。
------------------------------------------------
<?php
$txt = $_POST['txt'];
$txt = mb_convert_encoding($txt, "UTF-8", "auto");
if($_POST['submit']){
header("content-type: image/jpeg");
$img = imagecreatefromjpeg("test01.jpg");
$font = "VL-Gothic-Regular.ttf";
$black = imagecolorallocate($img, 0, 0, 0);
$fontSize = 20;
$x = 13;
$y = 50;
imagettftext($img, $fontSize, 0, $x, $y, $black, $font, $txt);
imagejpeg($img);
imagedestroy($img);
} else {
?>
<form action="generator.php" method="POST">
<input type="text" name="txt" size="30" value="文字を入力"><br>
<input type="submit" name="submit" value="投稿">
</form>
<?php
}
?>
------------------------------------------------
formタグで囲まれた部分が入力インターフェースの部分です。入力用のテキストボックス(txt)と投稿用のボタン(submit)を用意しています。これらが操作されれば、「generator.php」が呼び出され、それぞれの内容がPHPプログラムにPOSTされるわけです。
POSTされたデータは$_POSTで扱えます。「$txt = $_POST['txt'];」は、POSTされたtxt(テキストボックス)のデータを変数$txtに代入するという意味です。このデータの文字コードを変換することで、文字化けすることなく扱えるようにしています。
「if($_POST['submit'])」は、submitの値が真、つまりボタンが押されていれば「{}」の中の命令を実行する、という意味です。この部分の処理は前回と変わりません。文字列の指定がifの外に出ているだけで、そのほかの処理はまったく同じです。
このプログラムを実行すると、以下のような結果が得られます。

表示したばかりの状態

文字を入力して「投稿」をクリック

入力した文字が合成されました
ここでポイントをふたつほど。まずelseの部分で「?>」と記述して、一度PHP部分から抜けています。これは、subitが押されていないならフォームを表示する、という意味です。
また、テキストボックスのvalueにあらかじめ表示する文字を設定していますが、これはボタンの文字化けを防止するためです。この部分を入力しておかないと、ボタンが文字化けすることがあります。事前にmetaタグなどで文字コードを指定してもいいのですが、こちらのほうが手軽です。
ちょっと短いのですが、今回の解説はここまで。次回は入力フォームを常時表示しておく方法について紹介します。
MODIFHI SMARTで始まるシンプルコミュニケーション generated by MetaGateway



