blokowanie wejścia na stronę poprzez adres

0

Witam

Czy jest możliwe zablokowanie uruchomienia strony w przypadku gdy użytkownik próbuje bezpośrednio ją uruchomić? (wpisuje jej adres w przeglądarce)
Chciałbym żeby strona mogła być widoczna tylko w ramce umieszczonej na innej (tylko jednej) stronie. Ewentualnie jeśli jest to niewykonalne to wyświetlenie tylko w przypadku includowania na tej wybranej stronie.
Jeśli jest to do zrobienia to proszę o pomoc.
Pozdrawiam

0

Tak. Sprawdzasz tzw referer, czyli adres z którego została otworzona Twoja strona.
ALE. Przeglądarka nie ma obowiązku tego wysyłać. Sporo firewalli powoduje wycięcie tego adresu. Są też różne skrypty do przeglądarek mające na celu wyłączenie referali.

W PHP do referali dostaniesz się poprzez: $ SERVER["HTTP REFERER"]. Jeżeli jest pusty - rób co uważasz. Np:

if (!$_SERVER['HTTP_REFERER']) { header('Location: http://twojadomena.pl/'); die(); } // przekierowanie na główną stronę

W htaccess:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$  
RewriteRule .* - [F,L]
# wyświetli 403 Forbidden

Możesz też dodać w kodzie HTML mały skrypt javascript (nie zadziała na użytkownikach bez javascriptu):

<script type="text/javascript">
if (self.location.href==top.location.href) { top.location.href="/"; } // przekierowanie na główną
</script>

edit: w kodzie js przedtem był błąd. działało odwrotnie niż chcieliśmy

0

albo nieco inaczej: w index.php deklarujesz stałą
define('DIRECT', 1);

następnie u góry każdego pliku, który nie chcesz, aby był wykonywany bezpośrednio piszesz:

(!definied('DIRECT')) or die('No access');

albo coś w ten deseń :)

0

a tego gościa wyżej @no_solution_found nie słuchaj, bo nie doczytał pytania - strony pod tymi innymi adresami MAJĄ BYĆ OTWIERALNE (bo będą np. w ramce), nie mają być otwieralne bezpośrednio.

0

Takie blokady są najczęściej bezcelowe i tylko denerwują użytkowników, a i tak kto będzie chciał ten obejdzie. Jeśli nie masz powodu - nie używaj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1