PHP代码中的设备差异产生不同的结果

时间:2015-04-24 10:57:52

标签: php android google-chrome

每次运行PHP脚本时,我似乎都得到了不同的结果。

在Windows和Chrome上,脚本按预期运行。在Android Chrome上,几乎就像脚本在运行错误之前运行了两次。如您所知,以下脚本用于确保请求只能进行一次(无刷新等)。

在Android上,脚本运行,它在历史记录表中找到该行,该行将从历史表中删除,因为它应该也取消设置$ uploadId,导致其余的脚本无法正常工作。我没有看到if语句的双方如何运行,除非出于性能或其他原因,Android上的Chrome浏览器以某种方式运行该页面两次。

$historyQuery = "SELECT id FROM history WHERE userID = '".$_SESSION['userID']."'";
$historyQuery .= " AND historyCustom = '".$uploadId."' LIMIT 0, 1";
$checkHistory = mysqli_query($conn, $historyQuery);
if(mysqli_num_rows($checkHistory) == 0) {
    unset($uploadId);
} else {
    $historydetail = mysqli_fetch_array($checkHistory);
    mysqli_query($conn, "DELETE FROM history WHERE id = '".$historydetail['id']."'");
}

我现在已经在Firefox for Android下进行了测试,脚本正在运行,就像在Windows Chrome上一样。似乎它只是Android Chrome的问题。

另外,我遇​​到了以下问题:https://stackoverflow.com/questions/29490740/does-chrome-for-android-automatically-compress-and-resize-images似乎有类似的想法。

在取消设置功能之前,uploadId始终相同。它是在未设置的惊喜之后......它没有被设置,但同时它删除了历史中的那一行。

1 个答案:

答案 0 :(得分:0)

经过一些研究和测试后,在我看来(我可能会更正),Android上的Chrome实际上可以在显示页面之前在页面/请求上预加载TWICE。

我找到的第一个由于我的代码报告了一个不同的IP请求脚本。这导致我的代码第一次失败(上面没有显示)。因此,如果您依靠脚本传递引荐来源IP并期望使用相同的引脚,则会导致“数据保护程序”出现问题。已开启。

由于在不同设备上进行测试,我发现了第二个。就我而言,没有其他解释为什么代码会在另一个浏览器中返回任何不同的内容。正如treegarden所提到的,PHP是服务器端,所以浏览器的选择不应该影响它(即使它在这个例子中也是如此)。这引起了我的问题,我希望由于安全性,每个请求只运行一次脚本。我想我还必须在脚本中添加基于时间的检查。

相关问题