- Връщана обратно към страницата от която си дошъл
12
WT форуми -> PHP MySQL ASP.NET -> Връщана обратно към страницата от която си дошъл
Създайте нова тема Напишете отговор 
Автор Съобщение
pro12
Турист
Турист

Регистриран на: 10/01/2013 5:08 pm

Support: 0
Bonus: 0
Мнения: 444
Мнение 24/03/2018 2:05 pm     Връщана обратно към страницата от която си дошъл Отговорете с цитат


Връщам към предходната страница така.
PHP code:
if (isset($_SERVER['HTTP_REFERER'])) {
header('Location: '.$_SERVER['HTTP_REFERER']);
}
Но понякога $_SERVER['HTTP_REFERER'] се оказва, че е празно. За това търся по добър начин. Мисля да го направя с сесия. Има ли начин да записвам в сесията предишната страница без да презаписвам в сесията сегашната страница?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
topchokt
Редовен
Редовен

Регистриран на: 14/11/2008 7:48 am

Support: 22
Bonus: 39
Мнения: 2130
Мнение 24/03/2018 6:28 pm      Отговорете с цитат


Има случаи в който $_SERVER['HTTP_REFERER'] е null и не можеш да направиш нищо - например, ако потребителя е отворил страницата директно, чрез изписване на url адреса в бара - в такъв случай сесията няма да те спаси.

По-принцип, ако навигацията между страниците е организирана с линкове - http_referer не би трябвало да е null.

Дай малко повече информация кога остава празно.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
pro12
Турист
Турист

Регистриран на: 10/01/2013 5:08 pm

Support: 0
Bonus: 0
Мнения: 444
Мнение 24/03/2018 6:35 pm      Отговорете с цитат


При редактиране на url адреса
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
topchokt
Редовен
Редовен

Регистриран на: 14/11/2008 7:48 am

Support: 22
Bonus: 39
Мнения: 2130
Мнение 24/03/2018 6:49 pm      Отговорете с цитат


pro12 написа:
При редактиране на url адреса


Редактиране в адрес бара? Тогава е напълно нормално да няма нищо, тоест да е null.

Със сесии можеш да решиш донякъде този проблем - имай предвид, обаче, че ще трябва да се грижиш за сесията - кога ще се презаписва, кога ще трябва да се изчиства и така нататък.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
pro12
Турист
Турист

Регистриран на: 10/01/2013 5:08 pm

Support: 0
Bonus: 0
Мнения: 444
Мнение 24/03/2018 9:04 pm      Отговорете с цитат


Може ли да се направи следното нещо? В сесията да се записва урл на старата страницата само като отворя нова.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
pix3l
Нов
Нов

Регистриран на: 08/10/2016 4:31 pm

Support: 4
Bonus: 8
Мнения: 134
Мнение 24/03/2018 9:30 pm      Отговорете с цитат


Да, записваш новата страница като стара...
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
pro12
Турист
Турист

Регистриран на: 10/01/2013 5:08 pm

Support: 0
Bonus: 0
Мнения: 444
Мнение 24/03/2018 9:38 pm      Отговорете с цитат


Но като имам една сесия ще стане презаписване и ще имам адреса на новата стр. Май трябва да ги записвам в дб.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
pix3l
Нов
Нов

Регистриран на: 08/10/2016 4:31 pm

Support: 4
Bonus: 8
Мнения: 134
Мнение 24/03/2018 10:05 pm      Отговорете с цитат


Ти цялата история ли искаш да записваш? Аз останах с впечатлението, че искаш да запишеш само предишната страница.

Това имах предвид:

PHP code:

$previousPage = null;

// TODO: Check if the user comes from an external URL
if ($request->getSession()->has('previous_page')) {
$previousPage = $request->getSession()->get('previous_page');
}

// The current page is no longer a new page, save it as a previous page for the next request
$request->getSession()->set('previous_page', $request->getPathInfo());

if ($previousPage) {
// Do whatever you want with the previous page
}


Последната промяна е направена от pix3l на 24/03/2018 10:49 pm; мнението е било променяно общо 2 пъти
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
pro12
Турист
Турист

Регистриран на: 10/01/2013 5:08 pm

Support: 0
Bonus: 0
Мнения: 444
Мнение 24/03/2018 10:14 pm      Отговорете с цитат


Само предишната
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
pix3l
Нов
Нов

Регистриран на: 08/10/2016 4:31 pm

Support: 4
Bonus: 8
Мнения: 134
Мнение 24/03/2018 10:46 pm      Отговорете с цитат


Предишният код прави точно това, но използвах HttpFoundation на Symfony, за да не се налага да разлиствам документацията на PHP...

Процедурно би трябвало да изглежда така.

PHP code:

<?php

session_start();

$previousPage = null;

// TODO: Check if the user comes from an external URL
if (isset($_SESSION['previous_page'])) {
$previousPage = $_SESSION['previous_page'];
}

// The current page is no longer a new page, save it as a previous page for the next request
$_SESSION['previous_page'] = $_SERVER['PATH_INFO'] ?? '/';

if ($previousPage) {
// Do whatever you want with the previous page
echo $previousPage;
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
pro12
Турист
Турист

Регистриран на: 10/01/2013 5:08 pm

Support: 0
Bonus: 0
Мнения: 444
Мнение 25/03/2018 4:00 pm      Отговорете с цитат


Ако не се поддържа
PHP code:
$_SERVER['PATH_INFO']
имали др вариант?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 119
Bonus: 231
Мнения: 3066
Мнение 25/03/2018 4:12 pm      Отговорете с цитат


pro12 написа:
Ако не се поддържа
PHP code:
$_SERVER['PATH_INFO']
имали др вариант?

Колега, ако нямаш сетната сървърна стойност за това от къде идва потребителя си постави дефоутова такава.

PHP code:

<?php
function getUrl() {
$url = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off' ? 'https://' : 'http://';
$url .= ($_SERVER['SERVER_PORT'] != '80') ? ($_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]) : ($_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
return $url;
}

if (isSet($_SERVER['HTTP_REFERER']) and !empty($_SERVER['HTTP_REFERER'])) {
$previousPage = $_SERVER['HTTP_REFERER'];
} else {
$previousPage = getUrl();
}

print $previousPage;


По-горе ти дадоха код за сесия, а аз ще ти дам код как да си изградиш стрингово линка на страницата в която си в момента. Ти реално ако нямаш сетната променлива за референция, то потребителя директно е постъпил страницата за първи път и е нормално да нямаш предишно посещение от него.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
12
Страница 1 от 2


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети