Моя цель состоит в том, чтобы пользователь был перенаправлен на страницу, которой он был изначально, когда нажал кнопку входа в систему и ввел свое имя пользователя и пароль. Пока у меня не было проблем с этим. Однако, если я нажимаю кнопку просмотра еще, чтобы перенаправить меня на singleproduct.php, а затем нажимаю назад из браузера, возвращаясь к search.php, а после этого пытаюсь войти в систему, я перенаправляюсь на singleproduct.php вместо поиска .php. У меня не было проблем с тем, чтобы сделать это на других страницах, включая singleproduct.php или любую другую из моих страниц, и даже в search.php, если я не попал туда, перейдя назад или вперед с помощью кнопок браузера, он все еще работает.
Связано ли это с тем, что $ _SERVER ['REQUEST_URI'] не получил новый URL-адрес, или я что-то напортачил?
Мне было интересно, почему это происходит и что я могу сделать, чтобы это исправить.
search.php
<?php
session_start();
include 'includes/dbh.inc.php';
$_SESSION['current_page'] = $_SERVER['REQUEST_URI'];
?>
<!DOCTYPE html>
<html lang = "en">
<head>
</head>
<body>
<form class = "sea" action = "search.php" method = "GET">
<input class = "searchbar" name = "search" type = "text" placeholder = "Search...">
<button class = "searchbutton" name = "submit-search" type = "submit"><i class = "fa fa-search"></i></button>
</form>
//button for login
<?php
if (isset($_GET['submit-search'])) {
$search = mysqli_real_escape_string($conn, $_GET['search']);
$sql = "SELECT * FROM table WHERE product_name LIKE '%$search%' OR product_category LIKE '$search'";
$result = mysqli_query($conn, $sql);
$queryResult = mysqli_num_rows($result);
if ($queryResult > 0) {
while ($row = mysqli_fetch_array($result)) { ?>
//read from database
<a href = "singleproduct.php?viewmore=<?php echo $row['product_id']; ?>"class = "viewmore btn-info" role = "button">View More</a>
<?php }
} ?>
</body>
</html>
singleproduct.php
<?php
session_start();
include 'includes/dbh.inc.php';
$_SESSION['current_page'] = $_SERVER['REQUEST_URI'];
?>
<!DOCTYPE html>
<div lang = "en">
<head>
</head>
<body>
<form class = "sea" action = "search.php" method = "GET">
<input class = "searchbar" name = "search" type = "text" placeholder = "Search...">
<button class = "searchbutton" name = "submit-search" type = "submit"><i class = "fa fa-search"></i></button>
</form>
//button for login
<?php
$id = $_GET[viewmore];
$result = mysqli_query($conn,"SELECT * FROM table WHERE product_id='".$id."' ");
while($row = mysqli_fetch_array($result)){
//read the database for the single item
}?>
</body>
</html>
включает / login.inc.php
<?php
session_start();
if (isset($_POST['submit'])){
//Error Handlers
if (){
}
else{
$_SESSION['u_id'] = $row['user_id'];
$_SESSION['u_uid'] = $row['user_uid'];
$_SESSION['u_email'] = $row['user_email'];
$_SESSION['u_status'] = $row['user_status'];
$_SESSION['u_level'] = $row['user_level'];
$_SESSION['success-message'] = '';
header("Location: ". $_SESSION['current_page']);
exit();
}
}
Вам просто нужно получить страницу, с которой они пришли, всякий раз, когда они попадают на страницу входа, установить ее в сеансе, после того, как они успешно вошли в систему, если в сеансе есть действующая страница, установить для нее значение var, отключить сеанс и перенаправить их используя var. На странице входа в систему просто проверьте, вошли ли они уже, и, если да, покажите сообщение «уже вошли в систему». Вы мало что можете сделать с некоторыми аспектами, когда люди нажимают ссылки и формы, а затем возвращают данные POST в историю их браузера.
@James Спасибо! Я сделаю это.






Когда вы нажимаете кнопку «Назад» в браузере, ваш браузер делает именно это. Это возвращается. На самом деле это не обновляет страницу. Таким образом, ваш PHP не запускается снова и не обновляет переменную сеанса.