2013-05-06 9 views
5

Mam witrynę CodeIgniter, która przypisuje użytkownikom UUID po trafieniu strony docelowej. Ponowne załadowanie strony docelowej spowoduje przypisanie nowego identyfikatora UUID, ale gdy zaczniesz przechodzić przez kolejne formularze, Twój identyfikator UUID pozostanie niezmieniony. Jednak coś się dzieje, nie bardzo rozumiem, kiedy użytkownik kliknął przycisk Wstecz, a zachowanie jest inne w zależności od adresu URL, z którego przybyli?Przycisk Wstecz nie odświeża strony, jeśli URL zawiera parametry GET lub końcowy ukośnik?

Przypadek 1: domain.com/somehash?key=value LUB domain.com/somehash/

Jeśli przyjedziesz z powyższym URL zawierający parametr GET, przedstawia pierwszą formę (zawiera UUID), a następnie naciśnij przycisk wstecz, powrót do strony docelowej, ale Twój UUID się nie zmienia.

Przypadek 2: domain.com/somehash

bez parametrów GET, jeśli przedstawi pierwszą formę (zawiera UUID) i naciśnij przycisk Wstecz, aby powrócić do strony docelowej i otrzymać nowy UUID.

Testowałem to w najnowszych przeglądarkach Chrome i Firefox, czy jest to powiązane z jakąś strategią buforowania, którą implementują? Idealnie trafienie z powrotem NIE odświeżyłoby strony.

EDIT: Należy zauważyć, że nie może używać cookies do tego narzędzia, więc sesje są obecnie

Dalsze edit: Po prostu zamiar domain.com/, dodając odwrotny ukośnik, zatrzymuje UUID z orzeźwiający podczas naciśnięcia przycisku Wstecz. Prawdopodobnie związane z CodeIgniter routes.php lub .htaccess?

Istotne .htaccess wpisów:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?/$1 [L] 

Routes.php:

$route['default_controller'] = "home"; 
$route['404_override'] = ''; 

$route['(:any)'] = 'home/index/$1'; 
+0

użyj sesji() – Vector

+0

Gdzie przypisujesz UUID, php lub JS? – Justin

+0

PHP, generowane w kontrolerze, zanim zostanie przekazane do widoku w CI. – xref

Odpowiedz

1

Spróbuj ustawić te nagłówki i zobaczyć, czy to sprawia, że ​​zachowanie spójnego w obu scenariuszach:

$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate"); 
$this->output->set_header("Cache-Control: post-check=0, pre-check=0"); 
$this->output->set_header("Pragma: no-cache"); 
$this->output->set_header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 

Więcej informacji: http://ellislab.com/codeigniter/user-guide/libraries/output.html

+0

Bez zmian, posiadanie parametru GET lub końcowego ukośnika nadal nie wymusza odświeżenia po naciśnięciu przycisku Wstecz. Bez ukośnika odwrotnego/GET trafienie z powrotem wymusza odświeżenie. – xref

+0

Dziwne. Czy mógłbyś zaktualizować swoje pytanie za pomocą php, którego używasz do dołączania UUID do adresu URL? – Justin

+0

Faktycznie UUID jest po prostu ukrytym polem formularza, osadzonym po trafieniu strony docelowej, nie pojawia się w adresie URL. – xref

Powiązane problemy