【问题标题】:Link is cut after question mark in dynamic php table动态php表中的问号后链接被切断
【发布时间】:2015-12-08 23:15:51
【问题描述】:

我有一个 PHP 动态表,当我单击其中一个链接 (http://www.xxxxxx.com/?r=xxxxxxxxx) 时,该链接会在新选项卡中打开,并在问号 (?) 之后被剪切,例如 www.xxxxxx.com/?

这是表格的php代码:

echo '<div class="row"><tr>';
    echo '<td><form action='.$data['referral'].'>
        <input class="btn" type="submit" formtarget="_blank" value='.$data['webadress'].' data-value='.gmdate("H:i:s",($data['timer']*60+60)).' data-start="false"></form></td>';
    echo '<td>Now</td>';
    echo '<td>'.$data['timer'].'</td>';
    echo '<td>'.$data['payout'].'</td>';
echo '</tr></div>';

在我的数据库中,$data['referral'] 是我的www.xxxxxx.com/?r=xxxxxxxxx 链接。

我认为是我的数据库选项中的类型或某事有误,所以它在问号之后被截断。现在我在varchar(255)latin1_general_ci

编辑:我输入了一个输入,因为我需要为计时器存储数据,这里是 JS:

$(window).load(function(){

        var row = document.getElementsByClassName("color");

        function toTimeString(seconds) {
                return (new Date(seconds * 1000)).toUTCString().match(/(\d\d:\d\d:\d\d)/)[0];
        }

        function redColor(element) {
                $(element).css('background-color', 'rgba(255,0,0,0.7)');
        }

        function normalColor(elemen) {
                $(element).css('background-color', 'transparent');
        }

        $('.btn').on('click', startTimer);

        function startTimer() {
                var dataStartElem = $(this);
                var dataStart = dataStartElem.attr('data-start');
                if (dataStart === 'false') {
                        dataStartElem.attr('data-start', 'true');
                        var nextElem = dataStartElem.parents('td').next();
                        var duration = dataStartElem.attr('data-value');
                        var a = duration.split(':');
                        var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
                        setInterval(function () {
                                seconds--;
                                if (seconds >= 0) {
                                        nextElem.html(toTimeString(seconds));
                                        redColor(nextElem);
                                }
                                if (seconds === 0) {
                                        nextElem.html('Now');
                                        dataStartElem.attr('data-start', 'false');
                                        clearInterval(seconds);
                                        normalColor(nextElem);
                                }
                        }, 1000);
                }
        }
});

这个JS,启动定时器,把它写成红色,完成后出现“now”。

【问题讨论】:

  • var_dump($data);放在这段代码的顶部并说出它显示的内容
  • 源代码中的“在浏览器中”action里面写的是什么?
  • (a) 您在 firebug 检查请求 URL 中的操作属性值(在 form 中)和 input (b) 的 value 属性的值周围缺少引号。 (这告诉我们表单是否被提交到正确的页面)
  • @gyaani_guy 如何查看 request_url ?
  • 打开 chrome > 按 F12 > 选择网络选项卡。在这里您可以看到所有请求的详细信息。现在按任何链接,提交表格并在那里探索。 Firefox 替代方案是 firebug(扩展)

标签: php mysql dynamic varchar sql-types


【解决方案1】:

这是解决方案,感谢所有人帮助我弄清楚:我认为这是不采取“?”的形式在链接上,所以我已将其更改为普通链接,我们开始吧。

echo '<div class="row">
    <tr>
        <td>
            <a href="'.$data['referral'].'" target="_blank">
                <input type="submit" value="'.htmlspecialchars($data['webadress']).'" data-value="'.gmdate("H:i:s", ($data['timer'] * 60 + 60)).'" data-start="false" class="btn" formtarget="_blank">    
            </a>
        </td>
        <td>Now</td>
        <td>'.$data['timer'].'</td>
        <td>' . $data['payout'] . '</td>
    </tr>
</div>';

【讨论】:

    【解决方案2】:

    正如@Otto 所说,尝试以接近此的方式进行操作:

    echo '
    <div class="row">
        <tr>
            <td>
                <a href="' . htmlspecialchars($data['referral']) . '">' . htmlspecialchars($data['webadress']) . '</a>
            </td>
            <td>Now</td>
            <td>' . $data['timer'] . '</td>
            <td>' . $data['payout'] . '</td>
        </tr>
    </div>
    ';
    

    【讨论】:

    • 感谢回复,但还是同样的问题,“?”后面的链接还是被剪掉了
    • 实际上我在这里看不到链接。唯一的按钮。显示更多代码
    • 链接是
      并且在这个数据中有链接(也许你可以邀请我聊天,如果我们发现我发布解决方案?)
    • 再次感谢,但仍然存在同样的链接问题。我认为是在数据库中,不是吗?
    • 我只需要知道 $data['referral'] 的内容。你什么时候给我那个 var_dump?
    【解决方案3】:

    通过使用 GET 表单,您可以覆盖操作的查询部分。将您的表单转换为普通链接,或者将 URL 的查询部分放在隐藏的输入中。

    【讨论】:

    • 是动态表,怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 2014-06-28
    • 1970-01-01
    • 2013-01-07
    • 2013-11-21
    • 2020-04-24
    • 2013-07-06
    相关资源
    最近更新 更多