【发布时间】:2011-02-21 13:47:02
【问题描述】:
我一生都无法弄清楚为什么会发生这种情况。
这是一种转发,请原谅我,但我有新数据。
我正在运行一个名为 logOut() 的 javascript 注销函数,它对 php 脚本进行了 jQuery ajax 调用...
function logOut(){
var data = new Object;
data.log_out = true;
$.ajax({
type: 'POST',
url: 'http://www.mydomain.com/functions.php',
data: data,
success: function() {
alert('done');
}
});
}
它调用的php函数在这里:
if(isset($_POST['log_out'])){
$query = "INSERT INTO `token_manager` (`ip_address`) VALUES('logOutSuccess')";
$connection->runQuery($query); // <-- my own database class...
// omitted code that clears session etc...
die();
}
现在,每天 18 小时都可以,但由于某种原因,每隔一段时间,POST 数据都不会触发我的查询。 (这将持续大约一个小时左右)。 我发现没有通过在脚本末尾添加这个来设置帖子数据...
$query = "INSERT INTO `token_manager` (`ip_address`) VALUES('POST FAIL')";
$connection->runQuery($query);
所以,现在我确定我的注销功能被跳过了,因为在我的数据库中有以下数据:
alt text http://img535.imageshack.us/img535/2025/screenshot20100519at125h.png
如果没有被跳过,我的数据会显示如下:
alt text http://img25.imageshack.us/img25/8104/screenshot20100519at125.png
我知道它被跳过有两个原因,一个是我的第一个函数末尾的 die(),另一个是,如果它成功,则会在表中注册一个“logOutSuccess”。
有什么想法吗?一位朋友说这是一家简陋的托管公司(hostgator.com)。我个人喜欢它们,因为它们很便宜,而且我是 cpanel 的粉丝。但是,如果是这样呢???
提前致谢。
-J
【问题讨论】:
-
你亲眼目睹了这一切吗?浏览器类型/版本似乎很重要吗?某人或某物(蜘蛛/机器人)可能正试图直接访问该 php 页面......这将导致它下降到“POST FAIL”。我知道 googlebot 有时会转到我的仅用于 ajax 的 php 页面
-
@jack,这个网站仍处于开发阶段,所以我很肯定只有我,因为我是那个试图退出的人!我设置了注销失败查询,让我知道为什么我一开始就无法注销。不过感谢您提供的信息,我一定会尝试阻止蜘蛛访问该页面。
-
@jack(第 2 部分)我起初以为只是 FireFox...但它也开始在 Safari 和 IE 中发生。
-
hmm...Firebug 是否给您任何错误?另外,如果是我,我会尝试将 data.log_out 更改为类似“yes”的字符串而不是布尔值。
-
@jack Firebug 没有报告任何错误。下次出现这种情况时,我将尝试将 data.log_out 更改为字符串。然后电脑就从窗口出去了。