【问题标题】:Use an image file link to display a random banner使用图像文件链接显示随机横幅
【发布时间】:2020-08-13 04:41:47
【问题描述】:

不确定这在这里是否合适,但我正在尝试弄清楚横幅旋转器网站如何使用标准 html 图像代码来返回随机横幅?

<a target=_blank href=http://intellibanners.com/click.php?cid=campaign1>
    <img border=0 src=http://intellibanners.com/campaign1.jpg>
</a>

在上面的示例中,该 html 将显示来自该广告系列的随机图片。

这开始有点心血来潮,想看看我是否可以设置类似的东西来处理不同的图像大小,但现在它让我发疯了......试图弄清楚如何从图像 url 转到数据库打电话发回不同的图像!?

没有幸运地搜索想法或示例,可能是因为我不知道我实际上应该寻找什么样的流程或功能?

我认为必须对所有图像调用进行某种 url 重写,重定向到处理程序脚本...

该脚本调用数据库,从指定的广告系列中获取随机图像,更新统计数据等...

并且可能一个 php 标头响应返回相应的图像文件?

但其中大部分内容对我来说都是新的,我不确定在哪里/如何搜索指导或示例来帮助我入门。

如果有人对此有任何想法,甚至我需要的那种措辞/功能可以帮助我在自己的搜索中到达那里,我们将不胜感激!

(我还安装并测试了大约 12 个不同的 rotator 脚本,希望能找到一个相同的,但也没有运气)。

谢谢!

马特

【问题讨论】:

  • 见我的回答。希望这会有所帮助...
  • 如果您不想重命名横幅图像,您可以使用原始名称,我的脚本可以以任何方式工作...
  • 如果您觉得我的回答有用,请不要忘记将我的回答标记为已接受。谢谢。
  • 感谢 Alessandro,但标准的横幅旋转器并不是我想要的。我正在寻找使用横幅/链接组合的数据库,这些组合在多个 3rd 方网站上通过完全相同的 sn-p 代码进行旋转。我提到的网站正在这样做,但我不明白如何......我可以看到横幅网址如何重写/重定向到从该网址检索随机横幅的页面,但我很好奇正确的图像被发送到浏览器......如果用户点击,处理程序脚本(click.php)如何知道显示了哪个横幅,以便它可以重定向到正确的网址。

标签: php mysql url-rewriting http-headers banner


【解决方案1】:

我编写了一个 php 脚本,假设您网站的根目录中存在所需的文件夹。然后,您可以在网站的任何位置以简单的方式调用它。这是我的脚本:

rotate.php

<?php
  ##########################################################
  # Simple Script Random Images Rotator • 1.4 • 04.01.2020 #
  # Alessandro Marinuzzi [alecos] • https://www.alecos.it/ #
  ##########################################################
  function rotate($folder) {
    if ((file_exists($_SERVER['DOCUMENT_ROOT'] . "/$folder")) && (is_dir($_SERVER['DOCUMENT_ROOT'] . "/$folder"))) {
      $list = scandir($_SERVER['DOCUMENT_ROOT'] . "/$folder");
      $fileList = array();
      $img = '';
      foreach ($list as $file) {
        if ((file_exists($_SERVER['DOCUMENT_ROOT']  . "/$folder/$file")) && (is_file($_SERVER['DOCUMENT_ROOT']  . "/$folder/$file"))) {
          $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
          if ($ext == 'gif' || $ext == 'jpeg' || $ext == 'jpg' || $ext == 'png') {
            $fileList[] = $file;
          }
        }
      }
      if (count($fileList) > 0) {
        $imageNumber = time() % count($fileList);
        $img = $folder . '/' . $fileList[$imageNumber];
      }
      return $img;
    } else {
      mkdir($_SERVER['DOCUMENT_ROOT'] . "/$folder", 0755, true);
    }
  }
?>

现在你可以在你想要的地方创建一个index.php 文件并将这一行:

&lt;?php include("your_path/rotate.php"); ?&gt;

<a target="_blank" href="http://intellibanners.com/click.php?cid=campaign1">
    <img border="0" src="/<?php echo rotate('campaign1'); ?>">
</a>

其他类似的:

<a target="_blank" href="http://intellibanners.com/click.php?cid=campaign2">
    <img border="0" src="/<?php echo rotate('campaign2'); ?>">
</a>

所以……

您只需在名为campaign1campaign2...等的根目录中创建所需文件夹...

然后在每个文件夹中放置当前活动的横幅图像...

例如:在文件夹 campaign1 中放置图像,如 001.png002,png003.png004.jpg005.jpg...(这些文件名与您的广告系列横幅匹配)。

例如:在文件夹campaign2 中放入图片,如001.png002,png003.png004.jpg005.jpg006.gif007.png008.jpg...(这些文件名与您的广告系列横幅相匹配)。

请注意,如果您不想重命名横幅图像,可以使用原始名称,我的脚本可以以任何方式工作。

我的脚本会像这样把所有希望的输出都变成:

campaign1:

<a target="_blank" href="http://intellibanners.com/click.php?cid=campaign1">
    <img border="0" src="/campaign1/002.jpg">
</a>

<a target="_blank" href="http://intellibanners.com/click.php?cid=campaign1">
    <img border="0" src="/campaign1/007.jpg">
</a>

campaign2:

<a target="_blank" href="http://intellibanners.com/click.php?cid=campaign2">
    <img border="0" src="/campaign2/004.png">
</a>

<a target="_blank" href="http://intellibanners.com/click.php?cid=campaign2">
    <img border="0" src="/campaign2/005.gif">
</a>

见并在您的 localhost 网站上进行所有测试...对我来说,在 PHP 7.4.5 和 Apache 2.4.43 上运行良好。

脚本将完成剩下的工作!

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多