Skocz do zawartości

Zdjęcie
- - - - -

Cookie - sprawdzenie akceptacji regulaminu

regulamin cookie

15 odpowiedzi w tym temacie
  • Zaloguj się, aby dodać odpowiedź
Kicek

    Nowy użytkownik

  • 19 postów
    • Czas spędzony online: 1d 15h 52m 7s
-1
Neutralna

Napisano 20 sierpnia 2014 - 12:38

#1

Witajcie!

 

Piszę do Was, gdyż mam problem ze stroną.

 

Zaacznę od początku. Mam stronę(na razie zamkniętą) pod cmsem Joomla. CMS jest zainstalowany w katalogu .pl/Joomla, pod adresem .pl mam podłączony plik index.html z informacją, że przed wejsciem należy zapoznać się z regulaminem itp,  na dole przycisk, WCHODZĘ i WYCHODZĘ.

Problem polega na tym, że wchodząc na .pl/Joomla omija się ten krok z akceptacją.

 

Teraz przechodzę do sedna. Muszę posiadać taki plik cookie, żeby przy wchodzeniu na .pl/Joomla plik sprawdzał czy na .pl zaakceptowaliśmy regulamin, jeżeli tak, to może przez .pl/Joomla wejść, jeżeli nie zaakceptował regulaminu to przy próbie wejścia przez .pl/Joomla musi go przerzucić do .pl. Jak naciśnie przycisk WCHODZĘ to wtedy musi się wytworzyć ten plik. a jak naciśnie WYCHODZĘ to chciałbym, zeby przerzuciło go na stronę startową.

 

Piszę tutaj, bo nie znalazłem odpowiedzi na pytanie, tylko znalazłem jak zrobić banner informujący ciasteczkach na stronie.

 

 

Poza tym słyszałem, że lepiej w PHP napisać ten skrypt, bo JS nie jestbezpieczny. Co sądzicie o tym?

 

Proszę o pomoc, Pozdrawiam


  • 0

Michał

    Stary wyjadacz

  • 301 postów
    • Czas spędzony online: 16d 7h 11m 3s
95
Znakomita!

Napisano 20 sierpnia 2014 - 14:17

#2

Czemu niby JS jest niebezpieczny?

 

Ja bym to zrobił tak:

na każdej podstronie kod PHP sprawdzający istnienie zmiennej sesyjnej, jeżeli jej nie znajdzie przekieruje nagłówkiem HTTP do strony z akceptacją.

 

Strona z akceptacją:

Form wysyłający metodą POST akceptację regulaminu- jeżeli user kliknie submit'a z akceptacją, tworzysz ww. zmienną sesyjną.


  • 1

Kicek

    Nowy użytkownik

  • 19 postów
    • Czas spędzony online: 1d 15h 52m 7s
-1
Neutralna

Napisano 20 sierpnia 2014 - 14:42

#3

Czemu niby JS jest niebezpieczny?

 

Ja bym to zrobił tak:

na każdej podstronie kod PHP sprawdzający istnienie zmiennej sesyjnej, jeżeli jej nie znajdzie przekieruje nagłówkiem HTTP do strony z akceptacją.

 

Strona z akceptacją:

Form wysyłający metodą POST akceptację regulaminu- jeżeli user kliknie submit'a z akceptacją, tworzysz ww. zmienną sesyjną.

Wyczytałem, że dzięki JS można odczytać te ciasteczka, czy coś. Nie jestem specjalistą.

 

Tak wyglądają u mnie przyciski z akceptacją:

<div align="buttons"><p style="float:left">
<a href="LINK">
<button type="submit" name="Wejście" value="...">Akceptuję warunki! Chcę wejść!</button>
</a></p>
<p style="float:right">
<a href="http://www.google.pl">
<button type="submit" name="Wejście" value="...">Nie akceptuję! WYCHODZĘ!</button>
</a>
</div>

Jak zamienić je na tą metodę post? btw. Strona jest w HTML, nie PHP.

 

Sądzisz, że ten kod php na podstronie w Joomli wysatczy wstawić w index.php skórki? Adresy wyglądają tak

pl/Joomla/index.php/kontakt

Więc chyba wystarczy w tym index.php wrzucić kod. A poza tym jak by to wszystko wyglądało?

 

Poza tym myślałem, żeby wstawić na stronę czas do końca sesji. Jak na stronach banków jest.


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 20 sierpnia 2014 - 15:44

#4

Butony w linku, ciekawe rozwiązanie :D

 

Wg polskiego prawa nie można użyć cookie póki ktoś się na to nie zgodzi, czyli jak ktoś wejdzie pierwszy raz bezpośrednio na pl/joomla to możemy jedynie sprawdzić czy ciastko istnieje i przekierować go na .pl/ tam oprócz regulaminu musi również wyrazić zgodę na wykorzystywanie cookie, jeżeli wyrazi zgodę to zapisujemy ciastko i redirect na stronę.

 

Można śmiało robić w js-ie, nie ma co kombinować z php, przykład z google:

function accept(link) {
    var d = new Date();
    d.setTime(d.getTime() + (365*24*60*60*1000));
    var expires = "expires="+d.toGMTString();
    document.cookie = visited + "=" + 1 + "; " + expires;
    document.location = link;
}

Modyfikacja Twojego skryptu:

<div align="buttons"><p style="float:left">
<button onclick="accept('LINK')" name="Wejście" value="...">Akceptuję warunki! Chcę wejść!</button>
</p>
...
</div>

A później w joomli sprawdzanie tak jak Michał pisał, w php na każdej stronie. Możesz na sztywno na początku index.php zrobić.


  • 1

webDeveloper


Kicek

    Nowy użytkownik

  • 19 postów
    • Czas spędzony online: 1d 15h 52m 7s
-1
Neutralna

Napisano 20 sierpnia 2014 - 16:39

#5

Dzięki za info. Tylko teraz zgłupiałem.

 

Na stronie .pl jest info, że wchodząc zgadza się na używanie cookies.

 

Zmodyfikowałeś skrypt, teraz nie chce mnie przenieść na .pl/Joomla, tam w ('LINK') dałem oczywiście link do .pl/Joomla.

 

Zapomniałem napisać, że na ciastkach się nie znam kompletnie.  Byłbym szczęśliwy jak byś napisał co z tym zrobić

function accept(link) {
    var d = new Date();
    d.setTime(d.getTime() + (365*24*60*60*1000));
    var expires = "expires="+d.toGMTString();
    document.cookie = visited + "=" + 1 + "; " + expires;
    document.location = link;
}

A to sprawdzanie też nie wiem jak by miało wyglądać, chodzi o kod.


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 21 sierpnia 2014 - 08:10

#6

Ten kod który miałeś:

<div align="buttons"><p style="float:left">
<a href="LINK">
<button type="submit" name="Wejście" value="...">Akceptuję warunki! Chcę wejść!</button>
</a></p>
<p style="float:right">
<a href="http://www.google.pl">
<button type="submit" name="Wejście" value="...">Nie akceptuję! WYCHODZĘ!</button>
</a>
</div>

Podmień na ten:

<script>
function accept(link) {
    var d = new Date();
    d.setTime(d.getTime() + (365*24*60*60*1000));
    var expires = "expires="+d.toGMTString();
    document.cookie = visited + "=" + 1 + "; " + expires;
    document.location = link;
}
</script>
<div align="buttons"><p style="float:left">
<button onclick="accept('http://www.strona.pl/joomla')">Akceptuję warunki! Chcę wejść!</button>
</p>
<p style="float:right">
<a href="http://www.google.pl">
<button>Nie akceptuję! WYCHODZĘ!</button>
</a>
</p>
</div>

Co prawda ten drugi button też powinno się poprawić, no ale.

 

Jak przekierowanie zadziała, to popracujemy nad sprawdzaniem w index.php czy jest ciastko.


  • 2

webDeveloper


Kicek

    Nowy użytkownik

  • 19 postów
    • Czas spędzony online: 1d 15h 52m 7s
-1
Neutralna

Napisano 21 sierpnia 2014 - 09:08

#7

Wszystko fajnie, ale pierwsze przekierowanie nie działa, drugie tak :)


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 21 sierpnia 2014 - 09:17

#8

Sorry, mój błąd, poprawiony kod:

<script>
function accept(link) {
    var d = new Date();
    d.setTime(d.getTime() + (365*24*60*60*1000));
    var expires = "expires="+d.toGMTString();
    document.cookie = "visited =" + 1 + "; " + expires;
    document.location = link;
}
</script>
<div align="buttons"><p style="float:left">
<button onclick="accept('http://www.strona.pl/joomla')">Akceptuję warunki! Chcę wejść!</button>
</p>
<p style="float:right">
<a href="http://www.google.pl">
<button>Nie akceptuję! WYCHODZĘ!</button>
</a>
</p>
</div>

  • 2

webDeveloper


Kicek

    Nowy użytkownik

  • 19 postów
    • Czas spędzony online: 1d 15h 52m 7s
-1
Neutralna

Napisano 21 sierpnia 2014 - 09:21

#9

No teraz trybi. Rozumiem, że teraz ciastko zostało stworzonejak nacisnąłem na link?


Użytkownik Kicek edytował ten post 21 sierpnia 2014 - 09:22

  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 22 sierpnia 2014 - 08:47

#10

Teoretycznie tak :D

 

Teraz w joomla/index.php, na samym początku pliku:

<?php
if(!isset($_COOKIE['visited'])) {
    header("Location: ../");
    exit;
}
?>

I pod tym reszta kodu, niestety styczność z joomlą miałem ostatnio kilka(naście?) lat temu, więc nie mam pojęcia jak tam index.php jest zbudowany.


  • 2

webDeveloper


Kicek

    Nowy użytkownik

  • 19 postów
    • Czas spędzony online: 1d 15h 52m 7s
-1
Neutralna

Napisano 22 sierpnia 2014 - 09:27

#11

DZIAŁA!!!!!!!! Mistrzu.

 

Ale jedną rzecz zauważyłem. Mianowicie zmieniłem nazwe tych ciasteczek na AkceptacjRegulaminu

 

I jest coś takiego.

 

Jestem na .pl/Joomla, przerzuca mnie na .pl, tam naciskam na CHCĘ WEJŚĆ, ładuje stronę, i znowu jestem na .pl i dopiero jak drugim razem nacisnę na CHCĘ WEJŚĆ to dopiero wtedy wchodzę na .pl/Joomla

ciastka.png

Tak ciastka wyglądają

 

Poza tym, tak jak mówiłeś, kod wygląda tak w .pl/index.html

<script>
function accept(link) {
    var d = new Date();
    d.setTime(d.getTime() + (365*24*60*60*1000));
    var expires = "expires="+d.toGMTString();
    document.cookie = "AkceptacjaRegulaminu =" + 1 + "; " + expires;
    document.location = link;
}
</script>
<div align="buttons"><p style="float:left">
<button onclick="accept('http://www..pl/Joomla')">Akceptuję warunki! Chcę wejść!</button>
</p>
<p style="float:right">
<a href="http://www.google.pl">
<button>Nie akceptuję! WYCHODZĘ!</button>
</a>
</p>
</div>

A tak kawałek kodu w .pl/Joomla/templates/dd_webname_11/index.php (Bo ten index.php ma cały kod)

        <?php
    if(!isset($_COOKIE['AkceptacjaRegulaminu'])) {
    header("Location: ../");
    exit;
    }
    ?>
</head>

Nad tym kodem znajdują się skrypty do obsługi slidera obrazków i menu.

 

Poza tym to dałoby radę zrobić tak, żeby ciastko wygasało po wyłączeniu przeglądarki, ewentualnie karty?


  • 0

Kicek

    Nowy użytkownik

  • 19 postów
    • Czas spędzony online: 1d 15h 52m 7s
-1
Neutralna

Napisano 22 sierpnia 2014 - 16:50

#12

Już nie edytuje posta, ale zauważyłem jeszcze coś innego.

 

Jak wchodzę na .pl/Joomla bez ciastka, przerzuca mnie na .pl, naciskam CHCĘ WEJŚĆ, przerzuca mnie na www.<domena>.pl, naciskam chce wejść i dopiero wchodzę na .pl/Joomla z dwoma ciastkami. Kod chciałem zmienić z

<button onclick="accept('http://www..pl/Joomla')">Akceptuję warunki! Chcę wejść!</button>

na

<button onclick="accept('http://(bez www).pl/Joomla')">Akceptuję warunki! Chcę wejść!</button>

ale nic nie daje.


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 25 sierpnia 2014 - 08:16

#13

1. Ten kod php mimo wszystko dałbym do głównego index.php a nie tego w templatce. Działania na headzie powinno się robić zanim cokolwiek innego nastąpi, że to tak w uproszczonym języku powiem :)

 

2. Co do problemu z ciastkami, to upewnij się że obie strony (.pl i .pl/joomla) mają dokładnie taki sam adres, a nie np ten joomla jest z www a ten drugi bez. Bo ciastka na takie rzeczy są czułe :) Również kwestia http/https.

 

Najlepiej jak możesz podeślij mi adres na PW to sprawdzę co tam może być nie tak.

 

Może okazać się że to kwestia opóźnień przeglądarki i wystarczy dać lekkie opóźnienie na redirect po ustawieniu ciastka.


Użytkownik unbreak edytował ten post 25 sierpnia 2014 - 08:17

  • 2

webDeveloper


Kicek

    Nowy użytkownik

  • 19 postów
    • Czas spędzony online: 1d 15h 52m 7s
-1
Neutralna

Napisano 25 sierpnia 2014 - 09:12

#14

O widzisz, dobrze mieć kogoś kto logicznie myśli.

 

Zrobiłem coś innego. Katalog Joomla dałem jako główny .pl. Tam dałem plik akceptacja.html, a w index.php(główny plik) wrzuciłem kod wyrzucający do właśnie tego pliku. Czyli ułatwiłem sobie sprawę.  Ktoś chce wejść na .pl/index.php/regulamin(przykład) to przerzuca go do .pl/akceptacja.html, ale za to po naciśnięciu chcę wejść to wchodzi na stronę główną i bardzo dobrze.. Dzieki temu link do strony ładniej wygląda. Chociaż zastanawiam się czy wypali takie coś, że ktoś chce wejść na .pl/index.php/regulamin, przerzuca go na akceptacja.html, ale nie wiem czy ten kod object.history.back() spełni swoją funkcję.

 

5min później, nie spełnił funkcji, i tak przerzuca na stronę główną. No trudno, przeżyje :)

 

A słuchaj, bo nie mogę znaleźć odpowiedzi na pytanie:

Jak zmienić ten kod

<script>
function accept(link) {
    var d = new Date();
    d.setTime(d.getTime() + (365*24*60*60*1000));
    var expires = "expires="+d.toGMTString();
    document.cookie = "AkceptacjaRegulaminuSerwisu =" + 1 + "; " + expires;
    document.location = link;
}

, żeby ciastko wygasało po wyłączeniu przeglądarki? Jedni piszą, że ten czas podaje się w sekundach, inni w milisekundach, ale nigdzie nie znalazłem konkretnej odpowiedzi.

 

Co do kodu, to faktycznie był problem z www, głupi jestem, bo w kodzie w index.php było http://.pl, a w kodzie w akceptacja.html było http://www.pl, już działa jak należy.

 

Chętnie bym wysłał, ale ten kod zatrybił w końcu, a jak będzie cała witryna gotowa to chętnie ją przedtawię światu na łamach forum :)


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 25 sierpnia 2014 - 09:43

#15

To:

document.cookie = "AkceptacjaRegulaminuSerwisu =" + 1 + "; " + expires;

Spróbuj zmienić na to:

document.cookie = "AkceptacjaRegulaminuSerwisu =" + 1;

Czas podaje się milisekundach.


  • 2

webDeveloper


Kicek

    Nowy użytkownik

  • 19 postów
    • Czas spędzony online: 1d 15h 52m 7s
-1
Neutralna

Napisano 25 sierpnia 2014 - 10:21

#16

Jesteś wielki! Dzieki za pomoc.

 

Mam w końcu stronę akceptacji spełniającą moje wymagania. Można zająć się witryną :D


  • 0





Podone tematy Collapse

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych