PHP PDO查询赢得';由于标头重定向,无法工作
我有两个问题,一个函数应该向数据库字段添加+1,并在完成后重定向到目标URL 问题是,除非清除缓存,否则更新查询无法工作。在试图找出为什么会发生这种情况时,我遇到了另一个奇怪的问题,即在我更改函数后,它不会更新函数 我所做的是尝试注释PHP PDO查询赢得';由于标头重定向,无法工作,php,oop,pdo,Php,Oop,Pdo,我有两个问题,一个函数应该向数据库字段添加+1,并在完成后重定向到目标URL 问题是,除非清除缓存,否则更新查询无法工作。在试图找出为什么会发生这种情况时,我遇到了另一个奇怪的问题,即在我更改函数后,它不会更新函数 我所做的是尝试注释标题,它仍在重定向我,直到清除缓存。另一方面,当标题被注释并且在我清除缓存后,我的更新功能每次都工作 public function clickShortlink($slug) { $connect = $this->connect()
标题
,它仍在重定向我,直到清除缓存。另一方面,当标题被注释并且在我清除缓存后,我的更新功能每次都工作
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;
}
关于标题
,我缺少什么
编辑
这就是我如何调用clickShortLink()
:
走向目标
就像@Mr Glass在评论中发现的那样,这个问题与我的.htaccess
中的一个代码有关
<IfModule mod_headers.c>
Header set Connection keep-alive
Header set Cache-Control "max-age=1209600, must-revalidate"
</IfModule>
标题集连接保持活动状态
标题集缓存控制“最大年龄=1209600,必须重新验证”
不幸的是,添加“no cache”元标记没有帮助,但是在从我的.htaccess
文件中删除此代码后,一切似乎都正常 上述代码中没有任何内容会导致此问题。关于header()
需要注意的一点是,它要求在发送头之前没有DOM输出。如何调用clickShortLink()
,在此之前是否有任何输出?请注意,您可能还希望将if(isset($target)
逻辑包装在针对查询的检查中,例如if($stmt->execute())
…如果您遇到与缓存相关的问题,这可能会有所帮助:@obdimanage编辑了这个问题,并注意到了附加的如果@Mr Glass这没有帮助。不幸的是,PHP还能进入浏览器缓存吗?如果清除缓存后代码仍然有效,那么代码就可以工作。您的问题是浏览器缓存了您的页面。如果您在未访问此页面的浏览器中尝试代码,并且代码正常,则您知道代码正常工作(并且需要解决缓存问题)。如果无法通过此设置,则始终可以将所需URL作为javascript变量传递,让javascript检查location.href
=yourURL
,如果未设置location.href=yourURL
。
<IfModule mod_headers.c>
Header set Connection keep-alive
Header set Cache-Control "max-age=1209600, must-revalidate"
</IfModule>