У меня есть система регистрации с именем пользователя и паролем, после того, как пользователь вошел в систему с именем пользователя и паролем, и если я нажму кнопку «Назад», он перенаправляет меня на страницу входа в систему. Как предотвратить это в php?
Сначала вы хотите, чтобы срок действия страниц истек, и предотвратить их кэширование браузером:
<? //Set no caching header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d MYH:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); ?>
Во-вторых, вы должны проверить, зарегистрирован ли пользователь, если это так, перенаправить их обратно на предыдущую страницу, примерно так:
// SET REFERRER function strleft($s1, $s2) { return substr($s1, 0, strpos($s1, $s2)); } function selfURL() { if(!isset($_SERVER['REQUEST_URI'])) { $serverrequri = $_SERVER['PHP_SELF']; } else { $serverrequri = $_SERVER['REQUEST_URI']; } $s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : ""; $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s; $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]); $_SESSION['ref'] = $protocol."://>/".$_SERVER['SERVER_NAME'].$port.$serverrequri; } selfURL();
затем
header("Location: " . $_SESSION['ref']);
Вы должны проверить сеанс пользователя. Когда тогда существует сессия, выдается предупреждение о том, что пользователь уже зарегистрировался или перенаправляет пользователя на index.php или что-то в этом роде.
В соответствии с вашими комментариями вы предлагаете вопрос, который вы действительно задаете, – как отключить кнопку «Назад»?
Это определенно невозможно из php, и я думаю, что, возможно, это вообще невозможно, так как он контролируется браузером. JavaScript дает вам некоторый контроль, поэтому вы можете найти код, чтобы игнорировать или отключить кнопку.
Googling для «JavaScript disable back button» должен дать вам некоторые результаты.