Skocz do zawartości
kori

pozwolić użytkownikowi na otworzenie strony tylko jeden raz

Polecane posty

chciałbym aby użytkownik mógł otworzyć stronę tylko w jednym oknie

 

i tu pytanie skąd drugie okno ma wiedzieć że to pierwsze jest otware

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A gdyby JavaScript przy otwarciu pierwszego okienka podrzucał ciasteczko, a przy każdym kolejnym sprawdzał czy istnieje i wyświetlał błąd?
Przy zamknięciu pierwszego okna, ciasteczko byłoby usuwane.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

W PHP możesz rozwiązać to na sesji. Sprawdzasz na tej stronie czy istenieje jakaś sesja np. TUTAJ jak nie ma, to ją tworzysz, a jak jest to wywalasz jakiś komunikat.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

kiedyś o tym już słyszałem, ale nie potrafię tego używać, jakiś przykład?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
<?php
session_start();
if (isset($_SESSION['TUTAJ'])) {
	die("Nie masz praw do otwierania tej strony ponownie.");
} else {
	$_SESSION['TUTAJ'] = true;
	// tutaj dalej treść strony
	
	
}
?>

powinno zadziałać

a, no i jak chcesz by tylko raz w życiu mógł (takie coś nie istnieje) to najlepiej oprzeć to o baze danych i wpisać adres IP no i nie zaszkodzi zabezpieczyć się także ciasteczkami, chociaż te dwie metody to nic trwałego

Edytowano przez wlodziu (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość l3szcz
Kod jest chyba źle napisany!

 

Powinno być, przynajmniej moim zdaniem:
<?php 
session_start();
unset($_SESSION['TUTAJ']);
// na wszelki wypadek czyścimy sesję TUTAJ po czym sprawdzamy czy klient otworzył stronę z sesją;
// To tylko sugestia rozwiązania, prawdopodobnie może nie zadziałać, lecz przypuszczam, że jeżeli osobnik
// o nazwie kori przeczyta dokumentację PHP to to łyknie 

if (isset($_SESSION['TUTAJ']) && $_SESSION['TUTAJ'] == true) { // nie wpuszczamy osobnika  } 
else { $_SESSION['TUTAJ'] = true; }

?>
Edytowano przez l3szcz (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Może najpierw radziłbym stestować podany kod :)

l3szcz, Twój warunek

if (isset($_SESSION['TUTAJ']) && $_SESSION['TUTAJ'] == true)

nigdy nie zostanie spełniony bo sesja z każdym odpaleniem strony będzie usuwana. A co za tym idzie pełen dostęp.

Pozdrawiam.

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość l3szcz

Przede wszystkim, zauważcie komentarze. Można to zrobić na wiele różnych sposobów. Faktycznie, błędem było wykorzystanie unset i do tego się przyznam.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bez względu na rozwiązanie jest to proste do obejścia bo wystarczy skorzystać z innej przeglądarki, wyczyścić cookie, itp. i już cały mechanizm można do kosza wywalić.

Można też zastosować jakąś bibliotekę fingerprinta.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Może najpierw radziłbym stestować podany kod :)

 

Tobie radziłbym to samo - nie rozumiem jak można podać coś takiego i upierać się, że jest to jakieś rozwiązanie :)

 

Podstawy działania warunków + sesji - to co podałeś jest bez sensu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nadal twierdzisz, że nie działa i jest bez sensu.. może wrzuce Ci demko bo z łaski swojej nawet tego nie sprawdzisz?

http://demo.wlodziu.pl/sesja.php(otwórz w kilku kartach)

Rzeczywiście bez sensu, bo przykład działa i nie jest napisany przez Ciebie, może zacznijmy od tego, ze opierasz się na niczym. Pokaż swoje rozwiązanie, skoro innych próbujesz zgasić bezpodstawnie.

 

@regdos, chodziło o otworzenie więcej razy strony w jednej przeglądarce, więc to niepotrzebne

Edytowano przez wlodziu (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Ja bym to zrobił może z wykorzystaniem sesji + baza danych.

 

Zapisać jakieś podstawowe informacje o kliencie czyli np. ip, sesja, czas i później sprawdzać czy jest w bazie. Po jakimś czasie dane niech będą kasowane (stąd czas). Żeby przez przypadkowe przejście na inną zakładkę coś się nie zablokowało można dodać do tego id strony na której się znajdujemy.

 

 

W teorii działa - http://monitoruj.ovh/

edit: - jeszcze zdarzają się błędy bo niedopracowane - teoria tylko wklepana :)

 

MINUSY:

Można operować na dwóch różnych zakładkach, ale nie da się wejść jednocześnie na tą samą.

 

 

Rozwiązanie włodzia udało mi się obejść:

 

http://img.nostatic.pl/img/sesja_548d7b566f92e.png

Edytowano przez Kamikadze (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

odświeżenie strony i... "Otworzyłeś już tę stronę"

 

Bo raz ustawione ciasteczko istnieje już cały czas aż do usunięcia lub wygaśnięcia. Jak w swym ogólnym zarysie zasady działania napisał już wyżej (trzeci post) Bartosz Z: "przy zamknięciu pierwszego okna, ciasteczko byłoby usuwane". Na przykład przez funkcję w javascript wywoływaną przy zdarzeniu "onclose" - to należałoby dodać do tego już istniejącego przykładu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość

odświeżenie strony i... "Otworzyłeś już tę stronę"

 

To skrypt pisany na szybko, więc każde rozwiązanie trzeba dopracować.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

odświeżenie też wywoła "onclose" ?

 

 

Bo raz ustawione ciasteczko istnieje już cały czas aż do usunięcia lub wygaśnięcia. Jak w swym ogólnym zarysie zasady działania napisał już wyżej (trzeci post) Bartosz Z: "przy zamknięciu pierwszego okna, ciasteczko byłoby usuwane". Na przykład przez funkcję w javascript wywoływaną przy zdarzeniu "onclose" - to należałoby dodać do tego już istniejącego przykładu.

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nadal twierdzisz, że nie działa i jest bez sensu.. może wrzuce Ci demko bo z łaski swojej nawet tego nie sprawdzisz?

http://demo.wlodziu.pl/sesja.php(otwórz w kilku kartach)

Rzeczywiście bez sensu, bo przykład działa i nie jest napisany przez Ciebie, może zacznijmy od tego, ze opierasz się na niczym. Pokaż swoje rozwiązanie, skoro innych próbujesz zgasić bezpodstawnie.

 

Bo nie działa jest bez sensu!

 

Chryste, człowieku, ja tego nie muszę sprawdzać, żeby wiedzieć co tam jest. Odśwież sobie swoje demko. Zdziwiony?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bo na stronę można tylko raz wejść, czyli po odświeżeniu jest to powtórne wejście, czyli drugie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ale tu nie chodziło o możliwość wejścia na stronę tylko raz, tylko o to, żeby po próbie otwarcia na innej karcie dostać komunikat o tym, że strona jest już otwarta na innej karcie.

OWA przy próbie otwarcia po raz kolejny na innej karcie wywala komunikat, że jest już otwarty i to może służyć za przykład, jak to powinno działać.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×