ホームページ php教程 php手册 広告ローテーションシステムの一例(ファイルアップロード方式含む)

広告ローテーションシステムの一例(ファイルアップロード方式含む)

Jun 21, 2016 am 09:02 AM
banner gt lt oracle

オンライン広告はインターネット上で広く知られるようになりました。そして、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=="")) {
新しい広告を追加</head> <br><body>数値が大きいほど、画像が表示される可能性が高くなります。デフォルトは 1 です。 <br><FORM ENCTYPE="multipart/form-data" ACTION="adadd.php" <br/>METHOD=POST> <br><tr><td align =right>広告バナー: </td><td><input name=banner <br/>TYPE="file"></td></tr> <br><tr>< td align=right>広告 URL: </td><td><input name=url <br/>type=text size=30></td></tr><tr><td align=right>辅助字串 ALT: </td><td><input name=alt <br/>type=text size=30></td></tr> ; <br><tr><td align=right>广告说明: </td><td><input name=descript <br/>type=text size=30></td></ tr> <br><tr><td align=right>显示加权: </td><td><input name=priority <br/>type=text size=5 value=1></td> </tr> <br><tr><tdcolspan=2 align=right><input type="submit" VALUE="确定 <br/>"></td></tr> <br></table> <br></FORM> <br> <br>} else { <br>if (file_exists("/home/htdocs/ad/".$banner_name)) { <br>CommonHeader("档案 ".$banner_name." 已存在"); <br>echo "<p><br><br>广告档案すでに存在します<br>n<p><br><br></body></html>"; <br>終了; <br>}; <br><br>copy($banner,"/home1/biglobe3/ad/".$banner_name); <br><br>putenv("ORACLE_SID=WWW"); <br>putenv("NLS_LANG=american_taiwan.zht16big5"); <br>putenv("ORACLE_HOME=/home/oracle/product/7.3.2"); <br>putenv("LD_LIBRARY_PATH=/home/oracle/product/7.3.2/lib"); <br><br>putenv("ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data"); <br><br>putenv("ORA_NLS32=/home/oracle/product/7.3.2/ocommon/nls/admin/data"); <br><br>$handle=ora_logon("user38@WWW","iam3849") さもなければ死ぬ; <br>$cursor=ora_open($handle); <br>ora_commitoff($handle); <br><br>$query="広告に挿入(url, バナー, alt, 説明文, 優先順位) <br>values('$url', '$banner_name', '$alt', '$descript', $優先度)"; <br>ora_parse($cursor, $query) または die; <br>ora_exec($cursor); <br>ora_close($cursor); <br>ora_logoff($handle); <br><br>echo "<title>广告新增完了";
エコー "";
エコー "";
echo "alt="".$alt."" border=0>< ;/a>

";
エコー "

    ";
    echo "
  • 广告网址: ".$url;
    echo "
  • 辅助字串: ".$alt;
    echo "
  • 广告说明: ".$descript;
    echo "
  • 显示加权: ".$priority;
    エコー "
";
}

?>




当然、上の表の式を使用する前に先忘れして広告资料表、SQL 及び栏位如下


CREATE TABLE ad (
url varchar2(1024) ) null ではありません、
banner varchar2(1024) null ではありません、
alt varchar2(255) null、
descript varchar2(255) null、
優先順位番号(4) null ではありません、デフォルト 1
);

序号 栏位名 资料形态 资料长度 栏位说明
0 广告网址 url varchar2 1024
1 图片路径バナー varchar2 1024
2 文字列表示 alt varchar2 255
3 广告说明説明 varchar2 255
4 表示加权優先度番号 4 1 は内定,0 表用停止


值得一提的是在这了加权的機能,若一广告要提升露光
が追加される桁数をたとえば 5 に増やすと、その発生率は 1 の高さの 5 倍になるだけです。 🎜>// ad.php
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="優先度
> 0 の広告から URL、バナー、代替、優先度を選択します";
ora_parse($cursor, $query) または die;
ora_exec($cursor);
$i=$pricount=0;
while(ora_fetch($cursor)) {
$ad[$i][0] = ora_getcolumn($cursor,0);
$ad[$i][1] = ora_getcolumn($cursor,1);
$ad[$i][2] = ora_getcolumn($cursor,2);
$ad[$i][3] = ora_getcolumn($cursor,3);
$pricount += $ad[$i][3];
$i++;
};

ora_close($cursor);
ora_logoff($handle);

srand((double)microtime()*1000000);
$pri = rand(1,$pricount);
$pricount=0;
for($i=0; $i$pricount += $ad[$i][3];
if ($pri <= $pricount) {
$ad1[]="
src=/ad/".$ad[$i][1]." width=468 height=60 border=0
alt="".$ad[$i][2]."">
";
}
}
echo $ad1[0];

?>


上記のプログラムは公開広告表示プログラムであり、$pricount 変数はすべての広告の優先度の合計です。プログラムは、まずすべての広告情報を配列変数 $ad に読み取り、データベースを閉じます。次に、時間に基づいてランダムなシードを取得し、1 から $pricount までの数値をランダムに選択します。

Web ページで広告プログラムを使用するには、広告が必要な場所に を追加するだけです (httpd.conf 内)。最初にセットアップする必要があります。

上記のプログラムにはまだ改善の余地があり、広告のクリックログ機能を追加したり、表示ログ機能を追加したり、表示重み付けプログラムを変更したりできます。例として、ここではパッケージ開発ではなく、PHP の実践的なアプリケーションとプログラム開発を紹介します。既製の広告パッケージが本当に必要な場合は、http://www.phpwizard.net/phpAds にアクセスしてください。これは、PHP で開発された一連の広告プログラムです。 (CCU ニュース グループからの抜粋。元の出典は台湾で出版された PHP に関する書籍である可能性があります: PHP Book)



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Oracleで2つの日付の間の日数を計算する関数 Oracleで2つの日付の間の日数を計算する関数 May 08, 2024 pm 07:45 PM

2 つの日付の間の日数を計算する Oracle の関数は DATEDIFF() です。具体的な使用法は次のとおりです。 時間間隔の単位を指定します: 間隔 (日、月、年など) 2 つの日付値を指定します: date1 と date2DATEDIFF(interval, date1, date2) 日数の差を返します。

Oracle データベースのログはどのくらいの期間保存されますか? Oracle データベースのログはどのくらいの期間保存されますか? May 10, 2024 am 03:27 AM

Oracle データベース ログの保存期間は、次のようなログのタイプと構成によって異なります。 REDO ログ: 「LOG_ARCHIVE_DEST」パラメータで構成された最大サイズによって決定されます。アーカイブ REDO ログ: 「DB_RECOVERY_FILE_DEST_SIZE」パラメータで構成された最大サイズによって決まります。オンライン REDO ログ: アーカイブされず、データベースの再起動時に失われます。保持期間はインスタンスの実行時間と一致します。監査ログ: 「AUDIT_TRAIL」パラメータによって構成され、デフォルトで 30 日間保持されます。

Oracle データベースの起動手順の順序は次のとおりです。 Oracle データベースの起動手順の順序は次のとおりです。 May 10, 2024 am 01:48 AM

Oracle データベースの起動シーケンスは次のとおりです。 1. 前提条件を確認します。 3. データベース インスタンスを起動します。 5. データベースに接続します。サービスを有効にします (必要な場合)。 8. 接続をテストします。

Oracle にはどれくらいのメモリが必要ですか? Oracle にはどれくらいのメモリが必要ですか? May 10, 2024 am 04:12 AM

Oracle が必要とするメモリーの量は、データベースのサイズ、アクティビティー・レベル、および必要なパフォーマンス・レベル (データ・バッファー、索引バッファーの保管、SQL ステートメントの実行、およびデータ・ディクショナリー・キャッシュの管理) によって異なります。正確な量は、データベースのサイズ、アクティビティ レベル、および必要なパフォーマンス レベルによって影響されます。ベスト プラクティスには、適切な SGA サイズの設定、SGA コンポーネントのサイズ設定、AMM の使用、メモリ使用量の監視などが含まれます。

オラクルで間隔を使用する方法 オラクルで間隔を使用する方法 May 08, 2024 pm 07:54 PM

Oracle の INTERVAL データ型は、時間間隔を表すために使用されます。構文は INTERVAL <precision> <unit> です。INTERVAL の演算には、加算、減算、乗算、除算を使用できます。これは、時間データの保存などのシナリオに適しています。日付の差を計算します。

Oracle で特定の文字の出現数を確認する方法 Oracle で特定の文字の出現数を確認する方法 May 09, 2024 pm 09:33 PM

Oracle で文字の出現数を確認するには、次の手順を実行します。 文字列の全長を取得します。 文字が出現する部分文字列の長さを取得します。 部分文字列の長さを減算して、文字の出現数をカウントします。全長から。

Oracle データベース サーバーのハードウェア構成要件 Oracle データベース サーバーのハードウェア構成要件 May 10, 2024 am 04:00 AM

Oracle データベース サーバーのハードウェア構成要件: プロセッサ: マルチコア、少なくとも 2.5 GHz のメイン周波数 大規模なデータベースの場合は、32 コア以上が推奨されます。メモリ: 小規模データベースの場合は少なくとも 8 GB、中規模のデータベースの場合は 16 ~ 64 GB、大規模なデータベースまたは重いワークロードの場合は最大 512 GB 以上。ストレージ: SSD または NVMe ディスク、冗長性とパフォーマンスのための RAID アレイ。ネットワーク: 高速ネットワーク (10GbE 以上)、専用ネットワーク カード、低遅延ネットワーク。その他: 安定した電源、冗長コンポーネント、互換性のあるオペレーティング システムとソフトウェア、放熱と冷却システム。

Oracleでdbfファイルを読み取る方法 Oracleでdbfファイルを読み取る方法 May 10, 2024 am 01:27 AM

Oracle は、次の手順で dbf ファイルを読み取ることができます。外部テーブルを作成し、その dbf ファイルを参照し、データを Oracle テーブルにインポートします。

See all articles