我有一个页面action.php,我通过代码运行SQL查询,这样每当查看页面时,查询就像计算页面视图一样运行
<?php
mysqli_query("UPDATE ****");
?>
Run Code Online (Sandbox Code Playgroud)
问题是当刷新页面时,运行查询并将PAGE REFRESH计为我想要避免的PAGE VIEW.
问题:如何避免它?
我正在寻找的是一个简单的解决方案,以便我可以检查
if( page was refresh ) //some condition
{
do
}
Run Code Online (Sandbox Code Playgroud)
Gid*_*hal 26
我在这里找到了这个片段,它对我来说很有效:
$pageWasRefreshed = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0';
if($pageWasRefreshed ) {
//do something because page was refreshed;
} else {
//do nothing;
}
Run Code Online (Sandbox Code Playgroud)
cas*_*nca 10
您无法直接检测页面刷新,但您可以使用cookie来模拟您想要的内容:
if (isset($_COOKIE['action'])) {
// action already done
} else {
setcookie('action');
// run query
}
Run Code Online (Sandbox Code Playgroud)
根据您的要求,您还需要决定何时删除cookie和/或再次执行操作.
小智 9
检测页面刷新的最佳方法.或不?(Ctrl+ F5,F5,Ctrl+ R,Enter)
$pageRefreshed = isset($_SERVER['HTTP_CACHE_CONTROL']) &&($_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0' || $_SERVER['HTTP_CACHE_CONTROL'] == 'no-cache');
if($pageRefreshed == 1){
echo "Yes page Refreshed";
}else{
//enter code here
echo "No";
}
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您只想为用户运行一次,我会设置会话cookie然后使用if()语句.
<?php
session_start();
if (!$_SESSION['loaded'])
{
// insert query here
}
$_SESSION['loaded'] = true;
?>
Run Code Online (Sandbox Code Playgroud)
我已经解决了这个问题... HURRAHHH 没有会话且没有cookie
解决方案是 PHP : AJAX : JavaScript 的组合
您想要在页面加载上运行而不是在页面刷新上运行的查询通过 AJAX 调用运行它,假设我执行此操作的函数是
function runQUERY()
{
xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST","doIT.php",false);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send();
}
Run Code Online (Sandbox Code Playgroud)
我可以通过执行以下操作简单地使用 Javascript 检查该页面是新加载的还是刷新的
<head>
<script type="text/javascript">
function checkRefresh()
{
if( document.refreshForm.visited.value == "" )
{
// This is a fresh page load
alert ( 'Fresh Load' );
document.refreshForm.visited.value = "1";
..call you AJAX function here
}
else
{
// This is a page refresh
alert ( 'Page has been Refreshed, The AJAX call was not made');
}
}
</script>
</head>
<body onLoad="checkRefresh()">
<form name="refreshForm">
<input type="hidden" name="visited" value="" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
并在doIT.php中简单添加您要放入普通页面的 PHP 代码
<?php
mysql_query("UPDATE---------");
//put any code here, i won't run on any page refresh
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57206 次 |
| 最近记录: |