Как вернуть пользователя в нужный раздел?

kvf77

Red Devil
Как вернуть пользователя в нужный раздел?

Ситуация такая: есть набор статей - они либо написаны кем-то либо рассказывают о ком-то. Заранее неизвестно из какого подраздела пользователь эту статью будет читать. Как вернуть его назад к перечню статей автора ссылков "Список статей". Можно запоминать url с которого пользователь пришел, но что делать если у статьи несколько страниц? тогда ведь возврат будет к предыдущей странице, а не к корню раздела. Подскажите как вы это делаете?
 

vladax

Новичок
Если ты грамотно спрланируешь передачу переменных, то никаких проблем не возникнет и сможешь гонять свего юзверя куда угодно.
 

ForJest

- свежая кровь
Можно хранить в сессии. Но при этом возникает проблема при открытии в нескольких окнах. Избежать проблемы можно, если хранить в сессии в массиве и в каждую ссылку подставлять индекс сохранённого контекста.
Допустим:
Есть страница
Код:
<a href="story.php?id=911">Ещё историю</a>
при переходе ты попадаешь на
другую страницу и там хочешь иметь что-то типа
Код:
<a href="story.php?id=911&pg=2"Страница 2</a>
<a href="back.php">Назад</a>
допустим back.php - это спец скрипт, который редиректит куда нужно.
Итак - генеришь ссылку
<a href="story.php?id=911&new_back=1">
new_back=1 будет означать, что ты хочешь, чтобы эта страница была запомнена.
Дальше - HTTP_REFER сохраняешь в сессии.
PHP:
$_SESSION['back'][] = $_SERVER['HTTP_REFER'];
$idx_back = count($_SESSION['back']) -1;
Генеришь страницу
Код:
<a href="story.php?id=911&pg=2&back=$idx_back"Страница 2</a>
<a href="back.php?idx=$idx_back">Назад</a>
Всё. new_back не установлен - значит запомнить по новой не надо. в back и idx ты заносишь номер ячейки. Это для нескольких окон.
Поэтому получив в скрипте back.php
PHP:
if (isset($_GET['id_back']) && !empty($_SESSION[(int)$_GET['id_back']]))
{
     header("Location: ".$_SESSION[(int)$_GET['id_back']]);
     exit();
}
надеюсь более-менее понятно.
-----------
Это конечно не всё описано, но осталось только немного подумать и сделать. Главное - передавать признаки.
Это не готовый код, а так - набросок.
 

kvf77

Red Devil
Ох, это бы не вызвало проблем, если использовать сесси, но на сайте еще и ЧПУ реализовано - то есть в URL никаких партянок быть не должно :-( если б так - я бы сделал давно.

-~{}~ 08.04.04 09:38:

Пока это сделано на переходе в корень автора, то есть типа xxx/ahmatova/article1.php
вернуть к содержанию xxx/ahmatova/ и все, но! эта же статья может рассказывать еще и про Пастернака и автор у нее скажем Новичкий. получается, что при индексировании сайта одна и таже статья будет в данном случае индексироваться 3 раза, а ведь некоторые статьи относятся к большему колличеству авторов. Сами понимаете - это неприемлемо.
 

ForJest

- свежая кровь
Ну тогда - либо шашечки, либо ехать.
Могу предложить гениальное решение.
писать на JS window.go(-1). или window.go(-2), если со второй страницы. Не без подводных камней, но должно сработать :)
 
Сверху