Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zapamiętanie stanu, Koncepcyjnie
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Strona może być wyświetlana w ramce. Żeby wykryć taki stan dodaje parametr iframe=1 do linku.
W jaki sposób zapamiętać, że strona jest w ramce. Dodawanie do każdego linku z oczywistych powodów nie przejdzie, za dużo modyfikacji.
Znów zapamiętanie w sesji byłoby dobrym pomysłem jednakże mógłby być problem gdyby otworzył stronę poza ramką - wtedy sesja by się nie zmieniła i ciągle wyświetlałoby wersje iframe.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Pierwsza myśl jaka przychodzi do głowy - nie da się w PHP - można tylko w JS ale...

Można do tematu podejść inaczej.

Gdzie ta strona się pokazuje w IFRAME?

Jeśli iframe jest na innej domenie - bierzesz REFERERA i po sprawie - chyba, że strona jest nawigowana (zmieniają się podstrony w samym iframe). Tak samo jeśli iframe pokazuje się na stronach które mają jakieś "regularne" adresy może to tak wykryć.

I przede wszystkim co dokładnie chcesz uzyskać poprzez to wykrycie? W sensie - co robisz jak wiesz, że to iframe? Strona inaczej wygląda?

EDIT:

Można połączyć PHP i JS:

[JAVASCRIPT] pobierz, plaintext
  1. if(window!=window.top) {
  2. window.location.href = window.location.href + '?iframe=1'; // oczywiście jeśli są jakieś gety trzeba to ładniej zrobić i dać sprawdzanie czy już nie jest ustawiony frame=1 (to można w PHP)
  3. }
[JAVASCRIPT] pobierz, plaintext


Ten post edytował Sephirus 3.04.2014, 14:08:11
Go to the top of the page
+Quote Post
markonix
post
Post #3





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Iframe wstawiany na różnych domenach z znacznikiem iframe=1 (to już odgórnie wymuszę).
Referer się straci właśnie przy nawigowaniu, w ogóle tylko nawigowanie jestem problemem bo strona startowa wyświetla się właśnie w oparciu o owy parametr, który mam pewność że zawsze będzie.

Strona wygląda inaczej - wczytuje się inne widoki. Wiem, wiem - pewnie chodziło o to aby w JS wykryć i np. ukryć, zmienić klasę ale to nie przejdzie. Muszą być inne widoki.

Sposób z window.location.href jest w miarę ok tylko, że on będzie każdorazowo odświeżać stronę (przekierowywać ale mówię jak to będzie wyglądało dla użytkownika końcowego) przy poruszaniu się po sklepie.
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A gdybyś wykorzystał metodę Sephirus'a, ale zamiast doklejania parametru do URLa, wysłał żądanie ajaxem i w skrypcie PHP ustawił parametr w sesji na wartość zgodną z window!=window.top?
PHP musiałby odpowiadać czy stan obecny jest inny z zapisanym w sesji, wtedy w zdarzeniu success ajaxa, musiałbyś w zależności od tego przeładowywać stronę lub nie.

Ten post edytował trueblue 3.04.2014, 14:55:02
Go to the top of the page
+Quote Post
markonix
post
Post #5





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Tak, ajax będzie właśnie ostatnią deską ratunku (IMG:style_emoticons/default/wink.gif)
Też troszkę dodatkowe obciążenie bo jednak będę musiał to sprawdzać przy każdym załadowaniu ale na pewno lepsze znów niż refresh całej strony.
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Refresh i tak będzie potrzebny, jeśli stan obecny inny niż stan w sesji. Ale to będzie tylko przy pierwszym załadowaniu, a inne przypadki będą sporadyczne.
Toporne, ale skuteczne:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 13:11