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. Please help me. Any code snippet is very helpful.
Teşekkür peşin,
regards Naveen
Sayfa yenilenir ise o zaman birbirini izleyen iki istekleri aynı URL (yol, dosya adı, sorgu dizesi), ve aynı form içeriği (varsa) (POST veri) için olmasını beklersiniz. Bu veriler oldukça fazla olabilir, bu yüzden onu karma için iyi olabilir. Yani ...
<?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 durumda size uyumsuz denilen komut için LastRequest imza güncelleştirmek şekilde değil içine bu kodu koymak hangi dosyaları konusunda dikkatli olmak gerekiyor.
Eğer bir kullanıcı ilk olarak sayfa yönlendirme kontrol yeniden ne zaman sayfaya gelince ayırt etmek istediğiniz anlamına eğer. Php öyle: $ _SERVER ["HTTP_REFERER"]. Bu script üzerinde çalışan sayfa eşit olup olmadığını görmek. Bu size son istenen sayfa ne izlemek için bir çerez veya oturum değişkeni ayarlayabilirsiniz olur eğer, istemci bu bilgi vermez durumda olabilir.
Birisi bir sayfayı yeniler, aynı isteği bir önceki gibi gönderilecektir. Yani mevcut talebi son olarak aynı olup olmadığını kontrol etmelisiniz. Bu şöyle yapılabilir:
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['REQEUST_URI'],
'HTTP_REFERER' => isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null
);
Ben henüz denemedim ama çalışması gerekir.
Bir kullanıcı tarayıcı yenileme veya geri tuşuna çarptığında yinelenen form işleme önlemek için, bir sayfa örneği kimliği oturum değişkeni kullanmanız gerekir, ve bu değişkeni içeren bir gizli form girdi. iki eşleşmiyor, o zaman kullanıcı sayfasını yeniledi gelmiştir ve formu reprocess olmamalıdır. Daha ayrıntılı bilgi için, bkz: