その他雑貨
13.1 画像の生成
PHPでは画像の操作や加工が可能です。 GD ライブラリがインストールされている場合は、PHP を使用してイメージを生成することもできます。
Header("Content-type: image/gif");
$string=implode($argv," ");
$im = imagecreatefromgif("images/button1.gif"); ImageColorAllocate($im, 220, 210, 60);
$px = (imagesx($im)-7.5*strlen($string))/2;
ImageString($im,3,$px,9,$string, $orange);
ImageGif($im);
ImageDestroy($im)?> このコードは、次のタグを通じて呼び出されます。上記の button.php3 コードはテキスト値を取得し、その値を別途取得した画像ファイルに追加します。上記のコードでは、画像ファイルは image/button1.gif です。最終的にブラウザに出力されます。フォーム フィールドで画像ボタンを使用したいが、ボタン上のテキストが変更されるたびに新しい画像を再生成する必要がない場合は、この簡単な方法を使用して画像ファイルを動的に生成できます。
13.2 Cookies
PHPはHTTPベースのCookieをサポートしています。必要に応じて、通常の変数と同じように簡単に Cookie を使用できます。 Cookie はブラウザがクライアントに保存する情報であり、特定の PC 上の誰かがサイトを訪問したかどうか、訪問者のサイト上での軌跡などを知ることができます。 Cookie の使用の典型的な例は、ブラウザの設定のスクリーニングです。 Cookie は関数 setcookie() によって設定されます。 HTTP ヘッダーを出力する関数 header() と同様に、実際のコンテンツがブラウザーに出力される前に setcookie() を呼び出す必要があります。以下は簡単な例です:
if (empty($VisitedBefore))
{
// Cookie が設定されていない場合は、現在の時刻値を Cookie に割り当てます
// 関数の最後のパラメータこれを宣言します Cookie の保存期間
// この例では 1 年です
// time() 関数は、1970 年 1 月 1 日からの時間を秒単位で返します
SetCookie("VisitedBefore",time(), time( ) +(60*60*24*365));
}
else
{
// ようこそ、また来てください
echo "こんにちは、おかえりなさい
// クッキーを読んで判断してください
if ( ( time() - $VisitedBefore) >= "(60*60*24*7)" )
echo "なぜ戻ってくるのに 1 週間もかかったのですか。もっと頻繁にここに来るべきです !
}
?> ;
13.3 よく使われる関数
よく使われる関数をいくつか簡単に見てみましょう。
array
array - 配列を生成します
count - 配列要素の数
sort - 配列のソート、他にもいくつかのソート関数が利用可能です
list - 配列要素をリストします
each - 次のキーと値のペアを返します
current -現在の配列要素を返します
next、prev - 現在の配列要素の前後のポインタを返します
日付と時刻
checkdate - 日付/時刻形式を検証します
date - 日付/時刻形式を生成します
time - 現在時間情報
strftime - 日付/時刻のフォーマット
ディレクトリ、ファイルシステム
chdir - ディレクトリの変更
dir - ディレクトリカテゴリ
opendir、readdir、closedir - ディレクトリのオープン、読み取り、クローズ
fopen、fclose - ファイルのオープンとクローズ
fgets 、 fgetss - コンテンツを行ごとに読み取ります
file - ファイル全体を配列変数に読み取ります
正規表現
ereg - 正規表現と一致します
eregi - 大文字と小文字を区別せずに正規表現と一致します
ereg_replace - 正規表現と置換を一致します
eregi_replace -大文字と小文字を区別しない正規表現の一致と置換
split - ルールに従って文字列を分割し、配列形式で保存します
String
AddSlashes - スラッシュを追加した後に文字列を使用します
echo - 1 つ以上の文字列を出力します
join 、implode - 配列要素を文字列にマージします
htmlentities、htmlspecialchars - HTML 特殊文字を HTML マークアップ形式に変換します
split - ルールに従って文字列を分割し、配列形式に格納します
13.4 サンプル ホームページを拡張します
上記の機能とアイデアを使用して、サンプル ホームページにさらに動的なコンテンツを追加します。各ページの上部にナビゲーション バーを追加し、同時に現在のページがリンクによって自動的に表示されないようにすることができます。また、音楽、画像、その他のファイルをアップロードしてページを自動的に更新するためのユーザー確認フォームを追加することもできます。
ナビゲーションバー
実際には、footer.incファイルにコードを追加するだけです。Web サイト内の拡張子 .php3 を持つすべてのファイルがナビゲーション バーに表示されると仮定します。次のコードは include/navbar.inc として保存されます:
/* ナビゲーション バーを出力し、現在のものを除くすべてをリンクします。ページ上の 1 つの .php3 ファイル */
# ディレクトリを読み取ります
$d = dir("./");
echo "
| n"; ->read())
{
// ファイルがない場合は無視します
if ( !is_file($entry) )
continue;
/* ファイル名と拡張子を分けます。 . は正規表現の特殊文字であるため、引用符で囲む必要があります */
list($filenm, $fileext) = split(".",$entry, 2);
// .php3 以外のファイルを無視します
if( $fileext != "php3" )
Continue;
/* すべての .php3 ファイルを選択したので、ファイルの最初の行 (タイトル) を検索しましょう
$title="something" と同様に
を分離します。上記のタイトルの内容、リンクテキストとして使用*/
$fp=fopen($entry,"r");
while($buffer=fgets($fp, 4096); buffer = trim( $buffer);
// 検索しやすいようにファイルの最初の行に各ファイルのタイトルを入れています
// ただし、変数名を変更すると * 問題が発生する可能性があります
if (ereg(" title *= * "", $buffer))
{
/* タイトルのコンテンツを取得したので、
スペースを削除したり、それに基づいてその他の処理を行うことができます
$title = "何とか何とか" などの PHP コードで処理する必要があります*/
eval($buffer);
// 次に、リンク テキストをタイトル テキストとして表示します
}
}
fclose($fp); $PHP_SELF) )
echo "$linknm";
else
echo "$linknm"; ();
echo "
";
exit;
}
}
if ( $cancelit )
{
// 訪問者が「キャンセル」ボタンを押すと、ホームページにリダイレクトされます
header ( "Location:front_2.php3" )
}
function do_upload () {
global $userfile, $userfile_size, $ userfile_name, $ userfile_type;
global $local_file, $error_msg;
if ( $userfile == "none" ) {
$error_msg = "アップロードするファイルが指定されていません。"; }
if ( $userfile_size > 2000000 )
{
$error_msg = "申し訳ありませんが、ファイルが大きすぎます。";
return;
}
// 以下の書き込み権限がある場所であればどこでも...
$upload_dir = "写真";
$local_file = "$upload_dir/$userfile_name";
if ( file_exists ( $local_file ) ) {
$error_msg = "申し訳ありませんが、その名前のファイルは既に存在します";
return;
};
// あなたファイル名とタイプのペアをチェックして、gif、jpg、mp3...
rename($userfile, $local_file);
echo "ファイルはアップロードされました
n"; を使用することもできます。 "戻る
n"
}
$title = "ファイルをアップロード"
if (empty($userfile ) || $userfile=="none")
{
// 次のフォームを出力します
?>
この PHP スクリプトはさらに改善できます。