Обновление PHP

Я хочу определить, обновлен ли браузер или нет PHP, и если браузер обновлен, какой именно код PHP должен выполнить. Пожалуйста, помогите мне. Любой фрагмент кода очень полезен.

Заранее спасибо,

рассматривает Навен

Если страница была обновлена, вы ожидаете, что два запроса, следующие друг за другом, будут для одного и того же URL (путь, имя файла, строка запроса) и один и тот же контент формы (если есть) (данные POST). Это может быть довольно много данных, поэтому лучше всего использовать хэш. Так …

<?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; } 

В ситуации AJAX вам нужно быть осторожным, какие файлы вы вставляете в этот код, чтобы не обновлять подпись LastRequest для сценариев, которые назывались асинхронно.

Когда пользователь нажимает кнопку обновления, браузер включает дополнительный заголовок, который появляется в массиве $ _SERVER.

Проверьте кнопку обновления, используя следующее:

  $refreshButtonPressed = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0'; 
 <?php session_start(); if (!isset($_SESSION["visits"])) $_SESSION["visits"] = 0; $_SESSION["visits"] = $_SESSION["visits"] + 1; if ($_SESSION["visits"] > 1) { echo "You hit the refresh button!"; } else { echo "This is my site"; } // To clear out the visits session var: // unset($_SESSION["visits"]); ?> 

Если вы имеете в виду, что хотите различать, когда пользователь сначала приходит на страницу с момента перезагрузки страницы, проверьте реферер. В php это: $ _SERVER ["HTTP_REFERER"]. Посмотрите, равно ли она на странице, на которой работает ваш скрипт. Возможно, клиент не предоставляет эту информацию, если это произойдет, вы можете установить переменную cookie или сеанса, чтобы отслеживать, какая была последняя запрашиваемая страница.

Чтобы предотвратить повторную обработку формы, когда пользователь нажимает кнопку обновления браузера или назад, вам нужно использовать переменную сеанса идентификатора экземпляра страницы и скрытый ввод формы, содержащий эту переменную. когда эти два не совпадают, пользователь обновил страницу, и вы не должны перерабатывать форму. для получения дополнительной информации см .:

https://www.spotlesswebdesign.com/blog.php?id=11

Если кто-то обновляет страницу, тот же запрос будет отправлен как предыдущий. Поэтому вы должны проверить, совпадает ли текущий запрос с последним. Это можно сделать следующим образом:

 session_start(); $pageRefreshed = false; if (isset($_SESSION['LAST_REQUEST']) && $_SERVER['REQUEST_URI'] === $_SESSION['LAST_REQUEST']['REQUEST_URI']) { if (isset($_SERVER['HTTP_REFERER'])) { // check if the last request's referrer is the same as the current $pageRefreshed = $_SERVER['HTTP_REFERER'] === $_SESSION['LAST_REQUEST']['HTTP_REFERER']; } else { // check if the last request didn't have a referrer either $pageRefreshed = $_SERVER['HTTP_REFERER'] === null; } } // set current request as "last request" $_SERVER['LAST_REQUEST'] = array( 'REQUEST_URI' => $_SERVER['REQUEST_URI'], 'HTTP_REFERER' => isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null ); 

Я не тестировал его, но он должен работать.