如何在点击按钮开始时再次点击按钮结束时间来存储会话,以便在php中计算开始到结束时间

时间:2016-11-23 05:23:32

标签: php html cookies session-variables

我想在浏览器中列出每日消费时数。在图表中,每天都会提到花费数小时。当我点击按钮时,将开始并再次单击按钮时间将结束并最终计算存储在类似会话或任何其他的开始到结束时间。这将发生三天,最终将生成图表。

HTML CODE:

<html>
    <body>
        <form action="time_calculation.php" method="POST">
            <input type="submit" name="start" value="Start">
            <br><br>
            <input type="submit" name="end" value="End">
        </form>
    </body>
</html>

PHP:

<?php
session_start();
if(isset($_POST['start'])) {
    date_default_timezone_set('Asia/Calcutta'); 
    $time_start=date("Y-m-d h:i:s A"); 
    $_SESSION['start']='$time_start';
    echo "time start now ".$time_start."<br>";
}

if(isset($_POST['end'])) {
    date_default_timezone_set('Asia/Calcutta'); 
    $time_end=date("Y-m-d h:i:s A"); 
    $_SESSION['end']='$time_end';
    echo "time was ended".$time_end."<br>"; 
    $sst=strtotime($_SESSION['start']);
    $eet=strtotime($_SESSION['end']);
    $diff=$eet-$sst;
    $timeelapsed=mktime("h:i",$diff);
    echo $timeelapsed;
}
?>

2 个答案:

答案 0 :(得分:0)

您可以将活动会话时间存储在数据库临时表中并计算3天。

我不清楚您的要求,如果您需要跟踪详情,可以使用Google analytics等可用工具

答案 1 :(得分:0)

mktime()用于从输入数组创建时间戳。 PHP Man

我建议您更改代码以从会话中获取日期并将其重新转换为DateTime对象。然后,您可以使用DateInterval获取DateTime的差异,并根据自己的喜好格式化输出。

$sst= new DateTime($_SESSION['start']);
$eet= new DateTime($_SESSION['end']);
$diff=date_diff($eet, $sst);
$timeelapsed=$diff->format('%r %a days %h hours and %i minutes');
echo $timeelapsed;

编辑:您的php也有引用变量的问题。例如。在尝试将其值分配给$time_start时,您不应引用$_SESSION['start']。它试图分配文字字符串,而不是分配给变量的日期对象。

编辑2:以下是完整代码(更改为单页表单/ php)

<?php
session_start();

?>

<html>
    <body>
        <form action="thisForm.php" method="POST">
            <input type="submit" name="start" value="Start">
            <br><br>
            <input type="submit" name="end" value="End">
        </form>
    </body>
</html>

<?php
if(isset($_POST['start'])) {
    date_default_timezone_set('Asia/Calcutta'); 
    $time_start = date("Y-m-d h:i:s A"); 
    $_SESSION['start'] = $time_start;
    echo "time start now $time_start <br>";
}

if(isset($_POST['end'])) {
    date_default_timezone_set('Asia/Calcutta'); 
    $time_end = date("Y-m-d h:i:s A"); 
    $_SESSION['end'] = $time_end;
    echo "time was ended $time_end <br>"; 
    $sst= new DateTime($_SESSION['start']);
    $eet= new DateTime($_SESSION['end']);
    $diff = date_diff($eet, $sst);
    $timeelapsed = $diff->format('%r %a days, %h hours, %i minutes and %S seconds');
    echo $timeelapsed;
}
?>