Search code examples
phprefresh

Detect whether the browser is refreshed or not using PHP


I want to detect whether the browser is refreshed or not using PHP, and if the browser is refreshed, what particular PHP code should execute.


Solution

  • If the page was refreshed then you'd expect two requests following each other to be for the same URL (path, filename, query string), and the same form content (if any) (POST data). This could be quite a lot of data, so it may be best to hash it. So ...

    
    <?php
    session_start();
    
    //The second parameter on print_r returns the result to a variable rather than displaying it
    $RequestSignature = md5($_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING'].print_r($_POST, true));
    
    if ($_SESSION['LastRequest'] == $RequestSignature)
    {
      echo 'This is a refresh.';
    }
    else
    {
      echo 'This is a new request.';
      $_SESSION['LastRequest'] = $RequestSignature;
    }
    
    

    In an AJAX situation you'd have to be careful about which files you put this code into so as not to update the LastRequest signature for scripts which were called asynchronously.