Я работаю на PHP. Я хочу перенаправить страницу после входа на последнюю страницу, которую хочу посетить, но я все еще нахожусь здесь через 5 часов, и я все еще не делаю этого. Это схема, у меня 3 файла php.
newest.php (before login), signin.php (before login), thread.php (after login).
Я использую файлы cookie для этого перенаправления. Сначала я пошел в newest.php, затем я нажал кнопку (перейдите в thread.php). Тогда thread.php увидел, что у вас еще нет loggin, а затем перенаправлен на signin.php. После того, как я заполнил форму синтаксиса, я нажал кнопку отправки (signin.php), затем я укладываю в signin.php (никуда некуда) даже после того, как я вхожу в систему, нужно перейти в thread.php автоматически.
это мой код в newest.php и thread.php (не в signin.php):
$coopage='coopage'; $current_page='http://'.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]; setcookie($coopage, $current_page,time()+86400,'/');
отправить кнопку в newest.php (она идет в thread.php):
echo "<center><button onclick=\"window.location='/thread/form'\">add new thread</button></center>";
в signin.php (после того, как я нажал кнопку отправки или в области отправки, потому что форма и после отправки я сделал на той же странице) (в нижней части страницы):
if(isset($_COOKIE[$coopage])){ $url=$_COOKIE[$coopage]; unset($_COOKIE[$coopage]); header('location:'.$url); }
сif(isset($_COOKIE[$coopage])){ $url=$_COOKIE[$coopage]; unset($_COOKIE[$coopage]); header('location:'.$url); }
note: в signin.php у меня также есть еще одна настройка cookie до этого cookie, является ли причина этого? или имеет значение, если у меня есть 2 файла cookie на одной странице? Другая настройка cookie выглядит так (вверху страницы)
$cooval2='juna'; setcookie($coousername, $cooval2, time() + (3600 * 24 * 365), "/"); // 1 year
Я бы вообще не использовал файлы cookie.
Способ 1
Возможным способом может быть сохранение ссылки, посещенной в переменную сеанса, а затем, когда пользователь достигает страницы login.php, укажите перенаправление заголовка на $ url, заданное переменной сеанса.
Вставьте этот код во все ваши страницы на своем веб-сайте или в основной контейнер.
<?php session_start(); $_SESSION['url'] = $_SERVER['REQUEST_URI'];
На странице входа вы можете:
<?php session_start(); // needed for sessions. if(isset($_SESSION['url'])) $url = $_SESSION['url']; // holds url for last page visited. else $url = "student_account.php"; header("Location: http://example.com/$url");
Способ 2
Более простым решением является просто:
<hidden name="redirurl" value="<? echo $_SERVER['HTTP_REFERER']; ?>" />
Затем перенаправляйтесь на этот адрес после входа в систему.
Однако это хорошо, только если на каждой странице есть окно входа в систему.
$_SERVER['REQUEST_URI']
просто удерживает текущую страницу. Вы хотите использовать $_SERVER['HTTP_REFERER']
. Поэтому сохраните HTTP_REFERER в скрытом элементе в вашей форме, но также обратите внимание на то, что в PHP, который обрабатывает форму, вам понадобится какая-то логика, которая перенаправляется обратно на страницу входа в систему, если логин завершается с ошибкой, а также чтобы проверить, действительно ли ваш референт веб-сайт, если это не так, а затем перенаправить на главную страницу.
Способ 3
Другой распространенный способ сделать это – передать текущую страницу пользователя в форму входа через переменную $ _GET.
измените свой сценарий так, чтобы он также указывал на странице входа в систему, где вы находитесь:
Примечание: $ _SERVER ['REQUEST_URI'] – это ваша текущая страница
header("Location:login.php?location=" . urlencode($_SERVER['REQUEST_URI']));
Теперь проверьте, заполнено ли оно, а затем отправьте пользователю следующее: login.php
echo '<input type="hidden" name="location" value="'; if(isset($_GET['location'])) { echo htmlspecialchars($_GET['location']); } echo '" />'; // Will show something like this: // <input type="hidden" name="location" value="previousPage.php" />
Логин-check.php
session_start(); // our url is now stored as $_POST['location'] (posted from login.php). If it's blank, let's ignore it. Otherwise, let's do something with it. $redirect = NULL; if($_POST['location'] != '') { $redirect = $_POST['location']; } if((empty($username) OR empty($password) AND !isset($_SESSION['id_login']))) { $url = 'login.php?p=1'; // if we have a redirect URL, pass it back to login.php so we don't forget it if(isset($redirect)) { $url .= '&location=' . urlencode($redirect); } header("Location: " . $url); exit(); } elseif (!user_exists($username,$password) AND !isset($_SESSION['id_login'])) { $url = 'login.php?p=2'; if(isset($redirect)) { $url .= '&location=' . urlencode($redirect); } header("Location:" . $url); exit(); } elseif(isset($_SESSION['id_login'])) { // if login is successful and there is a redirect address, send the user directly there if($redirect)) { header("Location:". $redirect); } else { header("Location:login.php?p=3"); } exit(); }
В вашем новом cookie => локальном хранилище убедитесь, что этот код на каждой странице вам принадлежит для регистрации URL-адреса, кроме страницы входа в систему, иначе он перенаправит вас обратно на страницу входа.
var currentPage = window.location.href; localStorage.lastPageVisited = currentPage
Это код для кнопки «Отправить», и он перенаправляет пользователя на последнюю страницу, которую он посетил.
$(document).ready(function() { $('button').click(function() { window.location.href = localStorage.lastPageVisited; }); });