オンライン広告はインターネット上で広く知られるようになりました。そして、468x60 は広告主が頭を悩ませるサイズになっています。
広告を処理するときに、ブラウザを使用して広告の 468x60 の画像ファイルを広告を処理するサーバーに直接送信できれば、非常に快適です。FTP プログラムを開いてほとんどの費用を費やす必要はありません。アップロードするだけの日。
この問題は、ASP、Prel などを含むすべての Web CGI プログラムにとって厄介な問題であり、この問題を達成するにはシステム コンポーネントを追加する必要があります。最も強力な Web CGI プログラムとして知られる PHP は、この点で期待を裏切らないパフォーマンスを発揮し、他の CGI ツールをも上回っています。
ファイル アップロード機能は RFC 1867 文書で詳しく説明されており、特殊なファイル形式 (コンテンツ タイプ) multipart/form-data が使用されます。ファイルをアップロードするには、ブラウザが Netscape 3.0 以降、または MS Internet Explorer 4.0 以降である必要があることに注意してください。
まず以下の HTML ソース コードを見てください
method=post> 🎜 >あなたの名前:
ファイル名:
form タグに enctype="multipart/form-data" という文字列を追加します。同時に、ユーザーが入力したデータにファイルがアップロードされているため、メソッドは GET ではなく POST を使用する必要があります。
上記のコードで、ユーザー名が Wilson Peng でファイル c:myphoto.gif が選択されている場合、ユーザーが送信ボタンを押した後、ブラウザーは次の POST データを送信します。
コンテンツ タイプ: multipart/form-data、境界=AaB03x
--AaB03x
コンテンツ ディスポジション: フォーム データ;
Wilson Peng
--AaB03x
content-disposition: form-data; name="myfile"
Content-type: multipart/mixed、boundary=BbC04y
--BbC04y
Content-disposition:attachment; filename="myphoto.gif"
Content-type:image/gif
Content-Transfer-Encoding:バイナリ
...myphoto.gif コンテンツは省略されています...
--BbC04y--
--AaB03x--
上記のデータでは、boundary=AaB03x が異なるフィールドのデータを区切るメッセージです。 AaB03x のエンコード方法はブラウザのバージョンによって異なり、通常はブラウザのハッシュによって生成されます。次に、
--AaB03x を使用してさまざまなフィールドを区切る様子を確認できます。
上記の例では、フォームを処理するアクション プログラム next.php が 4 つの変数を自動的に生成します。以下の表を参照してください。
変数名の説明
$myfile はアップロードされたファイルですcontent
$myfile_name ユーザー側でアップロードされたファイルの名前
$myfile_size アップロードされたファイルのサイズ
$myfile_type アップロードされたファイルの形式 ("image/gif" など)
next.php プログラム内 最も重要なことは、これら 4 つの変数をうまく活用することです。そうしないと、ユーザーがアップロードしたファイルはプログラムが終了するとすぐに消えてしまいます。したがって、まず $myfile を広告画像が保存されているディレクトリにコピーする必要があります
copy($banner,"/home1/biglobe3/ad/".$banner_name); このプログラムはファイルをディレクトリ /home/htdocs/ad に保存します。上記の例では、ファイルを /home/htdocs/ad/myphoto.gif に保存します。重要なことは、保存するディレクトリは WebServer から読み取れないディレクトリであってはならず、インターネット上で参照できる Web サイトのホームページがあるディレクトリに配置する必要があるということです。
おそらく、取得したファイル サイズがシステムによって報告されたサイズと同じかどうかの比較など、プログラムでより詳細な処理が必要な場合は、$myfile_size 変数を使用できます。
フォームに設定した入力ファイルの名前を変更すると、
変数は $upfile、$upfile_name、$upfile_size、$upfile_type に変更されます。
したがって、次の例では、ファイル アップロードと Oracle 7.x バックエンド データベースを使用してファイルを Web ホームページ ディレクトリに配置し、関連情報が Oracle に保存されます。もちろん、ユーザー認証を追加すると、アカウントを持つユーザーが画像をアップロードできるため、クラッカーによるわいせつな広告や不適切な広告のアップロードを防ぐことができます。この例のデータベース設定は、5.4 メッセージ ボードの設定と同じです。
// adadd.php
if (($banner=="") and ( $url=="")) {
新しい広告を追加
数値が大きいほど、画像が表示される可能性が高くなります。デフォルトは 1 です。
METHOD=POST>
広告バナー: | TYPE="file"> |
< td align=right>広告 URL: type=text size=30> |
辅助字串 ALT: | type=text size=30> |
广告说明: | type=text size=30> | tr>
显示加权: | type=text size=5 value=1> |
} else {
if (file_exists("/home/htdocs/ad/".$banner_name)) {
CommonHeader("档案 ".$banner_name." 已存在");
echo "
广告档案すでに存在します
n
";
終了;
};
copy($banner,"/home1/biglobe3/ad/".$banner_name);
putenv("ORACLE_SID=WWW");
putenv("NLS_LANG=american_taiwan.zht16big5");
putenv("ORACLE_HOME=/home/oracle/product/7.3.2");
putenv("LD_LIBRARY_PATH=/home/oracle/product/7.3.2/lib");
putenv("ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data");
putenv("ORA_NLS32=/home/oracle/product/7.3.2/ocommon/nls/admin/data");
$handle=ora_logon("user38@WWW","iam3849") さもなければ死ぬ;
$cursor=ora_open($handle);
ora_commitoff($handle);
$query="広告に挿入(url, バナー, alt, 説明文, 優先順位)
values('$url', '$banner_name', '$alt', '$descript', $優先度)";
ora_parse($cursor, $query) または die;
ora_exec($cursor);
ora_close($cursor);
ora_logoff($handle);
echo "
广告新增完了";
エコー "";
エコー "";
echo "alt="".$alt."" border=0>< ;/a>";
エコー "
";
echo "- 广告网址: ".$url;
echo " - 辅助字串: ".$alt;
echo " - 广告说明: ".$descript;
echo " - 显示加权: ".$priority;
エコー "
";
}
?>