Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zapamiętanie stanu
Forum PHP.pl > Forum > PHP
markonix
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.
Sephirus
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
markonix
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.
trueblue
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.
markonix
Tak, ajax będzie właśnie ostatnią deską ratunku 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.
trueblue
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:)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.