Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ostrzeżenie przed wejściem na stronę
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Barrackin
Witam. mam pewien problem.
Otóż potrzebuje na swojej stronie zamieścić ostrzeżenie, że treści na niej zawarte są wyłącznie dla pełnoletnich odbiorców.
Wydaje mi się, że najczęściej używanym rozwiązaniem jest skorzystanie z java scriptu.
No i mam taki kodzik:

CODE
<script LANGUAGE="javascript">

<!--

function Info()

{if (!confirm("Strona tylko dla osob 18 +!"))

history.go(-1);return " "}

document.writeln(Info())

<!--End-->

</script>



Z tym, że nie działa to dokładnie tak jak bym chciał.
Mianowicie wyświetla się przy każdym odświeżeniu i na każdej podstronie, a ma być zwyczajnie przy pierwszym wejściu.
Nie wiem, czy problem tkwi w źle napisanym kodzie, czy w złym go umiejscowieniu (mam na początku <body>, próbowałem również w <head>- to samo.
Wydaje mi się, że może gdzieś powinna być zapisywana informacja, ale jak to zrobić niestety nie wiem.
Bardzo proszę o pomoc, albo z kodem, albo o jakiś gotowiec. Byle by działało.
Pzdr
pl_morfeusz
Użyj ciasteczek
markonix
Cytat(Barrackin @ 17.11.2010, 22:55:52 ) *
Wydaje mi się, że najczęściej używanym rozwiązaniem jest skorzystanie z java scriptu.


Przy takich poważnych sprawach jak furtka należałoby skorzystać z PHP ponieważ JS jest często blokowany i Twoja strona będzie źle zabezpieczona (tu wchodzi chociażby kwestia prawna, osobiście nie akceptuje reklam stron +18, które nie mają furtki lub furtka jest właśnie w JS).

Potrzebujesz tylko gdzieś na początku skryptu odczytującego czy jest stworzone ciastko i przekierowanie za pomocą header.
Proponuje żywotność ciastka ustalać na sesje (aż do wyłączenia przeglądarki) bowiem z jednego komputera może korzystać kilka osób.
Barrackin
Może ktoś byłby w stanie to napisac?
Dla wprawionego to pewnie 5 min pracy, dla laika dluuuuuga droga.
Patrzyłem co nieco na zapisywanie w cookies, ale wyglada co przynajmniej odstraszajaco;/

Edit:

Mam coś takiego:
Robię stronę check-it.php

CODE
<?
//Check user agent
$r_explorer = $_SERVER [ 'HTTP_USER_AGENT' ];
if ( ( substr_count ( $r_explorer , 'bot' )== 0 ) and ( substr_count ( $r_explorer , 'yahoo' )== 0 ) and ( $_COOKIE [ 'warning1' ]!= 21 ) ) {
include 'warning-page.php' ;
}
?>


W index.php strony, na której chce umieścić ostrzeżenie:

CODE
<? include 'check-it.php' ; ?>


Tworzę również warning-page.php
CODE
<?
//Lets Set the cookie
if ( $_GET [ 'myage' ]== "I-Am-Older-Than-18" ) {
$page1 = $_GET [ 'page1' ];
setcookie ( "warning1" , 21 , time ()+ 7200 );
header ( 'Location:' . urldecode ( $page1 )) or die( '<a href="' . urldecode ( $page1 ). '"></a>' );
}
?>
<!--Now the Html Part- Remove this line please-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>ADULT CONTENT WARNING</title>
<link href="mystyle.css" rel="stylesheet" type="text/css">
</head>
<body>
<script LANGUAGE="javascript">

<!--

function Info()

{if (!confirm("Strona tylko dla osob 18 +!"))

history.go(-1);return " "}

document.writeln(Info())

<!--End-->

</script></body></html>


I po tym ostatnim zupełnie traci sens, tj nie zapamiętuje cookies.

W oryginale ta ostatnia część wygląda tak:
CODE
<?
//Lets Set the cookie
if ( $_GET [ 'myage' ]== "I-Am-Older-Than-18" ) {
$page1 = $_GET [ 'page1' ];
setcookie ( "warning1" , 21 , time ()+ 7200 );
header ( 'Location:' . urldecode ( $page1 )) or die( '<a href="' . urldecode ( $page1 ). '"></a>' );
}
?>
<!--Now the Html Part- Remove this line please-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>ADULT CONTENT WARNING</title>
<link href="mystyle.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#000000" style="margin:0px;">
<table cellspacing="0" cellpadding="0" border="0" style="width:100%;height:100%;">
<tr>
<td align="center">
<p><b><font color="#FFFF66" face="Verdana, Arial, Helvetica, sans-serif" size="3">Adult Content Warning !
<br>
<img src="warning.png" width="240" height="80"> <br>
</font></b><br>
<h2>
<a href="warning-page.php?myage=I-Am-Older-Than-18&page1= <?=urlencode ( $_SERVER [ 'REQUEST_URI' ]) ?> "><font style="font-size:20px; font-family:'Verdana '; color:red"><b>Click Here if You are older than 18 Years Old</b></font><br>
</a><br>
<a href="http://www.someothersite.com">Click Here to Leave </a></p>
</td>
</tr>
</table></body></html>


z tym, że wtedy wyświetla mi się to na index.php,
nie odklikując nic można przeglądać zawartość.
Może teraz jakaś pomoc?
markonix
Gdzieś na początku każdej podstrony serwisu wywołujesz lub includujesz funkcje, która działa w następujący sposób:

Sprawdzasz czy ciasteczko istnieje. Wystarczy do tego proste isset oraz odwołanie do tablicy $_COOKIE, czyli $_COOKIE['check'] np.
Jeśli istnieje to nic nie robisz.
Jeśli nie istnieje to dokonujesz przekierowania za pomocą header (dlatego skrypt koniecznie musi być wywołany przez wyświetlaniem strony) na stronę z informacją. Domyślam się, że są dwie opcje do wyboru. Jeśli ktoś jest niepełnoletni to nie wiem, przekierowanie na jakąś stronę czy brak akcji - Twoja sprawa.
Jeśli jest pełnoletni, czyli klika TAK i wysyła formularz. Odbierasz dane z formularza - ustawiasz ciasteczko za pomocą setcookie i robisz przekierowanie na stronę właściwą.
Barrackin
Markonix, to może inaczej. Za ile byś to zrobił?
markonix
Pytania osobiste kierować najlepiej na PW i tam właśnie dostałeś odpowiedź.
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.