我遇到了time()命令的问题。
对于那些不想阅读我丑陋代码的人:): 在index.php中我有几个带有启动和停止按钮的计数器。(只有一个按钮/编号:如果按钮编号在表中“激活”,则用户只能看到该编号的停止按钮) 当我启动一个时,按钮的编号和开始时间被插入“激活”表中。 当我停止一个时,我从“活动”开始时间,将其放入“整体”表格,将停止时间添加到“整体”,并从“活动”中删除原始录音
有以下文件:
-in index.php有许多提交按钮(1-25),目标是start.php或stop.php
-in start.php我有
[..]
$start_time=time();
$query="INSERT INTO active (button_no, start_time) VALUES ('$button_no','$start_time')";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
mysqli_close($mysqli);
[..]
-in stop.php我有
[..]
$query="SELECT * FROM active";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
if($result->num_rows > 0)
{
$i=0;
while($row = $result->fetch_assoc())
{
$button_no[$i]=$row['button_no'];
$start_time[$i]=$row['start_time'];
$i++;
}
}
[..]
mysqli_close($mysqli);
$_SESSION['button_no']=$button_no;
$_SESSION['start_time']=$start_time;
[..]
?>
<form action="update_total.php"><table>
<tr>
<td><input type=submit name=back value="Confirm"></td>
</tr>
</table></form>
然后将我带到update_total.php:
[..]
$button_no=$_SESSION['button_no'];
$start_time=$_SESSION['start_time'];
$stop_time=time();
$query="INSERT INTO overall (button_no, start_time, stop_time) VALUES ('$button_no','$start_time','$stop_time')";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
mysqli_close($mysqli);
header('Location: delete.php') ;
[..]
并在delete.php中删除“active”中的相应行。
一切都运行良好一段时间,直到今天早上。我不是那个按下提交按钮的人,但按下它们的人说他们在同一个标签中的不同时间被按下了(而且几乎不可能同时按下它们)。 问题是指在一段时间内(aprox.1小时),他们都记录了相同的开始时间戳,并且正确的停止时间戳。 我的问题:可能导致它的原因(编码,服务器,连接问题,ecc。)以及如何“防御”这种情况发生。