在下一个小时之前在PHP中过期cookie

时间:2016-02-15 03:49:56

标签: php datetime cookies

我必须计算Cookie的到期时间,以便在服务器上跟踪每小时唯一身份用户。但问题是我必须为GMT + 5:45服务器执行此操作。

更新注意:服务器不关心IP或任何东西。我们只想知道这个时间用户是否独一无二!所以,我们跟这样跟踪,如果你有cookie,你就是RETURNING_USER其他UNIQUE_USER并获得一个cookie!

我以某种方式设法使用PHP获取服务器上的当前时间(感谢StackOverflow)。但我无法计算到期时间。

算法如下:

  1. 获取当前服务器时间(例如:14:30:00)
  2. 获取服务器GMT的下一个小时。 (例如:15:00:00)
  3. 两次以秒为单位的差异。
  4. 以秒为单位的结果是COOKIE的到期时间。

    function getNepalTime(){
        // Nepal is in GMT+ 5:45.
        // Setting offset to Nepal time.
    
        $offset=5*60*60; //converting 5 hours to seconds.
        $offset += 45*60; // Adding 45 mins to offset. 
    
        $dateFormat="H:i";
    
        $time=gmdate($dateFormat, time()+$offset);  
    
        return $time;
    }
    
    function getCookieExpiryTime(){
    
        // Get the current hour in Nepal
        currentTime = getNepalTime();
    
        // set the next current hour
        nextHour = ??   // How??    
    
        // subtract the two time
        cookieExpire = nextHour - currentTime;
    
        // convert it into seconds
    
        // the result is the cookie expiry time
        // return the time
        return cookieExpire;
    
    
    }
    

    你能否就如何解决这个问题向我提出建议。我已经工作了几个小时。但是,我认为解决方案很简单。它只是遥不可及。对于这个问题的任何建议或解决方法,先生?

    更新

    // Cookie expiry time in terms of seconds
    function getCookieExpiryTime(){
    
        // Get the current seconds elapsed in Nepal
        $currentServerTimeInSeconds = HourMinuteToSeconds(getNepalTime());      
    
        // find the remainder, and subtract from whole to get expiry time.
        $cookieExpiryTimeInSecods = 3600 - $currentServerTimeInSeconds%3600-1;      
    
        // add to current time
        $cookieExpiryTimeInSecods+=time();
    }
    

    这种方法解决了这个问题。 感谢社区的出路。 问题是在下一个小时之前获得Cookie到期时间。 如果你在14:30:00,那就这样了。然后Cookie有29:59秒到期。 我没有在DB中跟踪任何用户详细信息。

0 个答案:

没有答案