その他雑記
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);
ImageDestroy($im);
(翻訳者注: 上記のコード部分にはコメントがありません。PHP マニュアルの画像処理関数のセクションを参照してください)他のページでは、次のタグ を通じて呼び出され、上記の button.php3 コードでテキスト値を取得し、別途取得した画像ファイルに値を追加します。 --上記では、コード内の画像ファイルはimages/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 "こんにちは、おかえりなさい
// Cookie を読んで
if ( (time(; ) - $VisitedBefore) >= "(60*60*24*7)" )
echo "なぜ戻ってくるのに 1 週間もかかったのですか。もっと頻繁に来るべきです
}
? 13.3 よく使われる関数
よく使われる関数をいくつか簡単に見てみましょう。
array
array - 配列を生成します
count - 配列要素の数
sort - 配列の並べ替え、他にもいくつかの並べ替え関数が利用可能です
list - 配列要素をリストします
each - 次のキーと値のペアを返します
current - を返します現在の配列要素
next,prev - 現在の配列要素の前後のポインタを返します
日付と時刻
checkdate - 日付/時刻の形式を確認します
date - 日付/時刻の形式を生成します
time - 現在の時刻情報
strftime - date/ の形式を設定します時間
ディレクトリ、ファイルシステム
chdir - ディレクトリを変更します
dir - ディレクトリカテゴリ
opendir、readdir、closedir - ディレクトリを開く、読み取る、閉じる
fopen、fclose - ファイルを開く、閉じる
fgets、fgetss - コンテンツを 1 行ずつ読み取る
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 として保存されます:
/* 現在のページを除くすべてのファイルをナビゲーション バーに出力します。サイト上の .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);
// 次に、リンク テキストをタイトル テキストとして表示します
$linknm = $title;
break;
}
}
fclose($fp);
if ( $entry == Basename($PHP_SELF) )
echo "$linknm";
else
echo "$linknm"; ;close();
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 = "アップロードするファイルが指定されていません。"; ( $ userfile_size > 2000000 )
{
$error_msg = "申し訳ありませんが、ファイルが大きすぎます。";
return;
// 以下の書き込み権限がある場所であればどこでも...
$upload_dir = "写真"; $local_file = "$upload_dir/$userfile_name";
if ( file_exists ( $local_file ) ) {
$error_msg = "その名前のファイルは既に存在します"
// を確認することもできます。このファイル名とファイルの種類のペア: gif、jpg、mp3…
rename($userfile, $local_file);
echo "ファイルはアップロードされました
n"; HREF=" $HTTP_REFERER">戻る
n";
}
$title = "ファイルをアップロード";
include("include/header.inc");
if (empty($ userfile) | $userfile=="none")
{
// 次のフォームを出力します
この PHP スクリプトは、複数のページに分割することでさらに改善できます。