由于标头重定向,PHP PDO查询无法正常工作

时间:2018-06-26 21:46:18

标签: php oop pdo

我遇到一个函数有两个问题,该函数应在数据库字段中添加+1,并在完成后重定向到目标URL。

问题在于,除非我清除缓存,否则我的UPDATE查询无法正常工作。在尝试查找发生这种情况的原因时,我遇到了另一个奇怪的问题,即在更改功能后它不会更新该功能。

我所做的是尝试评论header,并且它仍在重定向我,直到清除了缓存。另一方面,当对header进行注释时,并且在清除缓存后,我的UPDATE函数每次都会起作用。

    public function clickShortlink($slug) {
        $connect = $this->connect();

        $stmt = $connect->prepare("UPDATE `shortlink` SET clicks = clicks + 1 WHERE slug = :slug;");
        $stmt->bindValue(":slug", $slug);
        $stmt->execute();

        $stmt = $connect->prepare("SELECT target FROM `shortlink` WHERE slug = :slug");
        $stmt->bindValue(":slug", $slug);
        $stmt->execute();
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            $target = $row['target'];
        }

        if (isset($target)) {
            $connect = null;
            header("Location: ".$target);
            exit;
        }

        $connect = null;
    }

header我缺少什么?

编辑

这就是我所说的clickShortLink()

    <?php 
        if (isset($_GET['gototarget'])) {
            $shortlink = new Shortlink();
            $url = $shortlink->clickShortlink($_GET['slug']);
        } 
    ?>

<form>
    <br>
    <br>
    <input type="text" name="slug" value="di5gV">
    <button name="gototarget">Go to target</button>
</form>

1 个答案:

答案 0 :(得分:-1)

就像@Mr Glass在评论中发现的一样,问题与我在.htaccess中拥有的代码有关。

<IfModule mod_headers.c>
Header set Connection keep-alive
Header set Cache-Control "max-age=1209600, must-revalidate"
</IfModule>

不幸的是,添加“ no-cache”元标记无济于事,但是从我的.htaccess文件中删除了此代码后,一切似乎都正常了。