devisd / advertiseworld-php
此库允许您将 Advertise Worlds 广告集成到您的应用程序中,并防止广告拦截器拦截广告。
Requires
- php: >=5.3.0
- ext-curl: *
- fire015/flintstone: 2.*
This package is not auto-updated.
Last update: 2018-09-29 21:32:45 UTC
README
一个用于从 Advertise World 提供广告的 PHP 库
安装
首先,您需要使用 SSH 或 Putty 或类似工具连接到您的服务器。
安装 Composer
如果您还没有安装 Composer,可以使用以下命令在本地安装:
cd /<my website root foler>/ wget https://composer.php.ac.cn/composer.phar
如果您有服务器的 root 权限,可以将 Composer 设置为全局可用(大多数开发者都会这样做)
chmod a+x composer.phar mv composer.phar /usr/bin/composer
使用 Composer 安装 Advertise World 包
如果您刚刚在本地安装了 Composer,请输入以下内容:
php composer.phar require devisd/advertiseworld-php
如果您已经使 Composer 可全局访问,可以使用以下内容:
$ composer require devisd/advertiseworld-php
或者将以下内容添加到您的 composer.json 文件中:
{
"require": {
"devisd/advertiseworld-php": "^1.0"
}
}
如果您需要更新库,只需输入以下内容:
composer update
要求
-
PHP 5.3+ 且已安装 php-curl
-
如果您使用 服务器代理,它必须传递所有请求头。
依赖
- php-curl
- fire015/flintstone (Composer 会自动下载此依赖)
用法
固定尺寸广告
以下是如何使用此库在您的页面上放置固定尺寸广告的示例。此广告不能被广告拦截器拦截。
<html> <head><title>Testing</title></head> <body> <h1>Homepage</h1> <p style="border: 1px solid black;"> <?php require_once __DIR__ . '/vendor/autoload.php'; $ad = new \Devisd\AdvertiseWorld\Ad(__DIR__ . "/ad_db", __DIR__ . "/images", "/images"); echo $ad->getAd('ffffffff-ffff-ff01-5678-27810b00001c', 'inline', false, false, false, false, 728, 90); ?> </p> </body> </html>
响应式广告
响应式广告将根据广告父 HTML 元素的宽度自动决定使用哪个图像大小。如果用户调整浏览器窗口大小,图像将自动更改以反映广告父 HTML 元素的新宽度。如果针对给定宽度有多个图像大小可用,则您可以选择使用最短(默认)或最高的大小。
要使用响应式广告,设置会更复杂一些。首先,在您的 web 服务器上创建一个图像文件夹和一个广告数据库文件夹,并确保它们可以被 web 服务器写入。
例如:
cd /var/www/<my website>/ mkdir images ad_db chown www-data images ad_db
为了提供响应式广告,我们需要创建一个 PHP 脚本来为不同的大小提供不同的图像。您可以通过两种方式之一完成此操作。您可以在 web 服务器上使用重写规则以确保广告不会被拦截,或者您可以选择不使用重写规则,但广告可能会被广告拦截器拦截。
####1) 不使用重写规则
serveImagesWithoutRewrite.php (在您的文档根目录中创建此 PHP 文件)
<?php require_once __DIR__ . '/vendor/autoload.php'; $ad = new \Devisd\AdvertiseWorld\Ad(__DIR__ . "/ad_db", __DIR__ . "/images", "/images", false); $ad->changeImage(); ?>
放置广告
<?php require_once __DIR__ . '/vendor/autoload.php'; $ad = new \Devisd\AdvertiseWorld\Ad(__DIR__ . "/ad_db", __DIR__ . "/images", "/images", false); echo $ad->getAd('ffffffff-ffff-ff01-5678-27810b00001c', 'inline', true, "/serveImagesWithoutRewrite.php", false); ?>
serveImagesWithRewrite.php (在您的文档根目录中创建此PHP文件)
<?php require_once __DIR__ . '/vendor/autoload.php'; $ad = new \Devisd\AdvertiseWorld\Ad(__DIR__ . "/ad_db", __DIR__ . "/images", "/images", false); $ad->changeImage(); ?>
添加重写规则
####Apache: 将以下内容添加到您的 .htaccess 文件
RewriteEngine On # Turn on the rewriting engine
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^images/[^/]+$ serveImagesWithRewrite.php [NC,L]
或者添加到您的 httpd.conf
<Directory "/var/www/myapp">
RewriteEngine On # Turn on the rewriting engine
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^images/[^/]+$ serveImagesWithRewrite.php [NC,L]
</Directory>
####Nginx
将以下内容添加到您的 nginx.conf 文件
server {
location /images {
if ($request_method = POST) {
rewrite ^ /serveImagesWithRewrite.php last;
}
}
}
####IIS
注意:此内容未经测试。在设置之前,请通过电子邮件 support@advertiseworld.com 联系我们。
<rule name="AdworldResponsive" stopProcessing="true">
<match url="/images/.*" />
<conditions>
<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="POST" ignoreCase="true" />
</conditions>
<action type="Rewrite" url="/serveImagesWithRewrite.php">
</rule>
####其他Web服务器
如果您使用的是Apache、Nginx或IIS之外的Web服务器。请通过电子邮件 support@advertiseworld.com 联系我们,我们将帮助您设置重写规则。
####将响应广告放置在您的页面上 现在您可以使用库将不可阻挡的响应广告添加到您的网页中。
index.html
<html> <head><title>Testing</title></head> <body> <h1>Homepage</h1> <p style="width: 75%; border: 1px solid black; text-align: center;"> <?php require_once __DIR__ . '/vendor/autoload.php'; $ad = new \Devisd\AdvertiseWorld\Ad(__DIR__ . "/ad_db", __DIR__ . "/images", "/images", false); echo $ad->getAd('ffffffff-ffff-ff01-5678-27810b00001c','inline',true,"/images/",true); ?> </p> </body> </html>
参考
Ad::__constructor ($dbDir, $localImgFolder, $imageBaseUri, $checkAndCreateDirectories)
此方法构建一个Ad实例。然后使用Ad::getAd()函数将广告放置在您的网页上。
示例用法
$ad = new \Devisd\AdvertiseWorld\Ad(__DIR__ . "/ad_db", __DIR__ . "/images", "/images");
| 参数 | 必需 | 类型 | 默认值 | 描述 |
|---|---|---|---|---|
| $dbDir | 必需 | 字符串 | 'adworlds_db' | 这是在服务器文件系统中创建用于记录哪些广告图像已下载的文件夹的路径。 |
| $localImgFolder | 必需 | 字符串 | 'images' | 这是在服务器文件系统中下载广告图像并服务的文件夹的路径。此文件夹可以是推荐的共享图像文件夹,以防止广告拦截器,但请注意,Advertise World将下载广告图像到此文件夹。注意:您的现有图像不会被覆盖(使用php函数tempnam()生成一个唯一的文件名)。 |
| $imageBaseUri | 必需 | 字符串 | 无默认值 | 这是图像文件夹的URI,例如,如果通过 http://mysite.com/images/ 访问 $localImgFolder,则此参数为 '/images/' |
| $checkAndCreateDirectories | 可选 | 布尔值 | true | 如果为TRUE,则会在不存在的情况下尝试创建$dbDir和$localImgFolder的目录。强烈建议将其设置为false。 |
Ad::getAd ($adSpaceId, $displayStyle, $responsive, $changeImageScript, $usingRewrite, $tallestAd, $width, $height, $timeout_override)
此函数返回一个可以用于在网页上放置广告的HTML代码字符串。
示例
// Fixed size ad echo $ad->getAd('ffffffff-ffff-ff01-5678-27810b00001c', 'inline', false, false, false, false, 728, 90); // Response ad without the web server rewrite rule in place echo $ad->getAd('ffffffff-ffff-ff01-56ba-8afe97000001', 'inline', true, "/serveImagesWithoutRewrite.php", false); // Response ad with the web server rewrite rule in place echo $ad->getAd('ffffffff-ffff-ff01-56ba-8afe97000001', 'inline', true, "/images/", true);
| 参数 | 必需 | 类型 | 默认值 | 描述 |
|---|---|---|---|---|
| $adSpaceId | 必需 | 字符串 | 无默认值 | 这是您页面上广告区域的唯一广告空间ID。您可以通过登录到 Advertise World Portal 并点击广告空间旁边的“HTML代码”按钮来检索广告空间ID。 |
| $displayStyle | 可选 | 字符串 | 'inline' | 这是应用于广告的CSS显示样式。此选项通常是 'inline'、'block' 或 'inline-block',但您可以指定任何CSS显示样式。 |
| $responsive | 可选 | 布尔值 | true | 此选项启用响应式广告。将根据广告父HTML元素的宽度自动选择最合适的广告大小。 |
| $changeImageScript | 如果$responsive=true则为必需 | 布尔值 | 无默认值 | 这是您 serveImage.php 脚本的 URL。URL 可以是相对路径或绝对路径。如果可能,我们建议使用绝对路径。当广告图片更改时,此 URL 必须正常工作,否则用户将看到损坏的图片符号。 |
| $usingRewrite | 可选 | 布尔值 | false | 此标志指示您是否正在使用上述重写方法来启用响应式广告的图片服务。建议使用重写并将此值设置为 TRUE,以便广告拦截器无法拦截广告。 |
| $tallestAd | 可选 | 布尔值 | false | 响应式广告可能包含两个或更多相同宽度的图片。我们可以决定使用最短的图片或最高的图片(在设备高度内)。如果这是默认的 FALSE,则将自动选择最短高度的图片。如果为 TRUE,则选择设备高度内的最高图片。 |
| $width | 可选 | int | false | 如果 $responsive 为 FALSE 且您提供了宽度和高度,则您的网站将始终提供指定宽/高的广告图片。有效的广告尺寸为 120x240、120x600、125x125、160x600、180x150、200x200、234x60、250x250、300x250、300x600、300x1050、320x50、320x100、336x280、468x60、728x90、970x250、970x90。如果 $responsive 为 TRUE,则此参数将被忽略。 |
| $height | 可选 | int | false | 您想要提供的广告高度。类似于 $width 参数,如果 $responsive 为 TRUE,则此参数将被忽略。 |
| $timeout_override | 可选 | int | false | 您可以覆盖服务器之间的通信超时。默认值为 7,即 7 秒。 |
Ad::changeImage ($timeout_override)
此函数由提供响应式图片的 PHP 脚本使用。该函数将响应新图片的二进制数据并处理图片缓存。
提供响应式图片的示例 PHP 脚本(serveImagesWithoutRewrite.php 或 serveImagesWithRewrite.php)
<?php // Including composer's autoload script is needed so that the fire015/flintstone package is available require_once __DIR__ . '/vendor/autoload.php'; $ad = new \Devisd\AdvertiseWorld\Ad(__DIR__ . "/ad_db", __DIR__ . "/images", "/images"); $ad->changeImage(); ?>
| 参数 | 必需 | 类型 | 默认值 | 描述 |
|---|---|---|---|---|
| $timeout_override | 可选 | int | false | 您可以覆盖服务器之间的通信超时。默认值为 7,即 7 秒。 |
##服务器上的代理
如果您的服务器使用代理来提供您的网站,则代理必须传递所有请求头。
使用 Nginx 提供负载均衡是常见的服务器代理示例。您可以将以下行添加到您的 nginx.conf 文件中,以请求 Nginx 传递所有请求头
proxy_pass_request_headers on; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;