首页 > 解决方案 > 尝试修复删除或添加广告时计数错误的 CGI 广告轮播脚本

问题描述

我有一个 CGI 脚本(输出 JavaScript),它有一个错误。有一个管理区域,您可以在其中添加和删除广告代码段。目前,当添加一个片段时,代码会错误计数,不计算片段的适当数量,并添加重复的数字。这个错误导致 2 个广告被放置在同一个地方。(图像中的“billboardlarge”只是您可以为广告区域指定的唯一名称)。

AD Rotator 错误计数

我认为问题可能出在代码的这个区域:

 sub delete_item
{

$grpname = $q->param('grp');
$iname = $q->param('item');

$filename = $grpname . ".js";

$jsc = rotate::get_file_contents("$webdir/$filename");

@jlines = split (/\n/, $jsc);

$tms = @jlines;
$tms = $tms - 1;

$poscnt = 0;
$acn = 0;
$real_lnc = 0;
$new_lnc = 0;

for ($ms = 0; $ms < $tms; $ms++) 
    {
    if ($ms == 2)
        {
        $jlines[2] =~ s/\///g; $jlines[2] =~ s/ //g;
        $lasnr = $jlines[2];
        $jlines[2] = $jlines[2] - 1;
        $newnr = $jlines[2];
        $jlines[2] = "//" . $jlines[2];
        
        }
    elsif ($ms == 3)
        {
        $jlines[3] =~ s/$lasnr\)\;/$newnr\)\;/g;
        }
    elsif ($ms > 3)
        {
        $nsl = $jlines[$ms];
        if ($jlines[$ms] =~ m/\/\/ /g)
                {
                $r = pos($jlines[$ms]);
                $sname = substr($jlines[$ms], $r, length($jlines[$ms]) - $r);
                $sname =~ s/ //g;
                if ($sname ne $iname)
                    {
                    $jlines[$ms] =~ s/ranNum == $real_lnc/ranNum == $new_lnc/g;
                    $new_lnc++;
                    }
                    else
                    {
                    $jlines[$ms] = "";
                    }
                }
        $real_lnc++;
        }
    }

我试图操纵 $tms 变量但没有成功。

如果需要,我可以提供整个脚本。(不会太长)。

任何帮助将不胜感激。

谢谢你。

标签: javascriptcgi

解决方案


推荐阅读