Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Cookies, zabezpieczenie przed odświeżaniem podstron
Anqel
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.01.2007

Ostrzeżenie: (0%)
-----


Witam wszystkich.

Zacznę od tego, że mimo prób szukania nie znalazłem niczego co by mogło mi pomóc. Poza tym jestem nowy i pragnę się przywitać.

problem:

Piszę sobie system galerii w phpie oparty na mySQLu i dotarłem do etapu oceniania prac, oraz zliczania odwiedzin.
Przydało by się by jeden użytkownik mógł dodać ocenę jeden raz, tak samo jak nabić statystykę odwiedzin (też jeden raz)

Intuicja podpowiada, że najprościej będzie użyc ciastek, ale tu jest problem właśnie..

Zrobić ciastko dla całego www jest raczej proste:

  1. <?
  2. $hit++;
  3. setcookie("hity", $hit);  //hity zamienia się na zmienna przechowywujaca wartość $hit
  4. echo($hity);
  5. ?>


ale jak zrobić by każda podstrona miała swoje własne ciastko? np na podstawie .php?id=4?

miałem dwa pomysły

1:
<?php
  1. <?php
  2. $nazwa=sprintf('hity%s',id);
  3. $hit++;
  4. setcookie($nazwa,$hit);
  5. ?>


tworzy mi takie ciastko ale nie wstawia pod $nazwa value


2:
  1. <?php
  2. $hit++;
  3. setcookie("hity[$id]", $hit);  //hity zamienia się na zmienna przechowywujaca wartość $hit
  4. echo($hity);
  5. ?>


generuję błędy przy czytaniu bodajże

czyli....oba zawiodły

jakieś sugestie ? pomijam już linię przechwytującą id z adresu
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
mokry
post
Post #2





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Wszelką ilość odwiedzin oraz oddanych głosów bazujesz na MySQl'u. Natomiast możliwość głosowania i ew odwiedzin/odświerzeń opierasz na cookie poniżej...
Będzie ono inne dla każdej podstrony w zależności od pobranej zmiennej $_GET['id'] z adresu przeglądarki.

  1. <?php
  2. setcookie("glosowano-".$_GET['id'], 1, ,time()+86400);
  3. ?>


Jeśli dobrze zrozumiałem to o to Ci chodziło (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

EDIT:
Ciacho ważne przez 24h. Jeśli chcesz dłużej to zmieniasz ilość sekund w 3. argumencie funkcji setcookie().

Ten post edytował mokry 12.01.2007, 00:29:06
Go to the top of the page
+Quote Post
Anqel
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.01.2007

Ostrzeżenie: (0%)
-----


czyli zmiksowac jakias nazwe ze zmienna [id]
ok w jakiej zmiennej znajde potem wartosc cookie?

dla Twojego przykladu:

  1. <?php
  2. setcookie("glosowano-".$_GET['id'], 1, ,time()+86400);
  3. ?>


$glosowano ?

chyba doznalem olsnienia - z Twoja pomoca (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
potem zdam raport :]

Ten post edytował Anqel 12.01.2007, 01:01:28
Go to the top of the page
+Quote Post
mokry
post
Post #4





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Sprawdzasz:
  1. <?
  2. if($_COOKIE['glosowano-'.$_GET['id'] == 1) {
  3. //kod, gdy juz glosowano
  4. }
  5. else {
  6. //a tu jeszcze nie glosowano... tu mozesz dawac zapytania do MySQL i inne potrzebn
    e...
  7. }
  8. ?>
Go to the top of the page
+Quote Post
Anqel
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.01.2007

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $id = (isset($_GET['id'])) ? $_GET['id'] : '';
  3.  
  4. setcookie("glosowano-".$_GET['id'], 1, ,time()+86400);
  5.  
  6. if($_COOKIE['glosowano-'.$_GET['id'] != 1)
  7. {
  8. ?>


wyswietla:

  1. Warning: setcookie() expects parameter 2 to be string, array given in /home/accounts_w/wgp/public_html/testowy/show.php on line 4
  2. Array


a teoretycznie nie powinien wykonać klamry

Ten post edytował Anqel 12.01.2007, 01:20:12
Go to the top of the page
+Quote Post
mokry
post
Post #6





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


  1. <?
  2. setcookie("glosowano-".$_GET['id'], '1', ,time()+86400);
  3. ?>


Jedynke walnij w pojedyncze cudzysłowia
Go to the top of the page
+Quote Post
Anqel
post
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.01.2007

Ostrzeżenie: (0%)
-----


dla :
  1. <?php
  2. $id = (isset($_GET['id'])) ? $_GET['id'] : '';
  3. //$iloscWejsc++;
  4. setcookie("iloscWejsc".$_GET['id'], '1', ,time()+86400);
  5. ?>


mam:



Parse error: syntax error, unexpected ',' in /home/accounts_w/wgp/public_html/testowy/show.php on line 4

Ten post edytował Anqel 12.01.2007, 01:26:00
Go to the top of the page
+Quote Post
mokry
post
Post #8





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


  1. <?
  2.  
  3. $id = (isset($_GET['id'])) ? $_GET['id'] : '';
  4.  
  5. setcookie('glosowano-'.$_GET['id'], 1, time()+86400);
  6.  
  7. if($_COOKIE['glosowano-'.$id] != 1)
  8. {
  9. echo "ello ziooooom";
  10. }
  11.  
  12. ?>


Oczywiście kolejność i poszczególne warunki sam musisz sobie już ustalić, ale to już wg wymagań;)

A własnie... Linijkę
Kod
if($_COOKIE['glosowano-'.$id] != 1)

możesz zastąpić:
Kod
if(!$_COOKIE['glosowano-'.$id])

Nawet będzie bardziej optymalnie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował mokry 12.01.2007, 01:31:58
Go to the top of the page
+Quote Post
Anqel
post
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.01.2007

Ostrzeżenie: (0%)
-----


teraz działa pięknie


WIELKIE DZIĘKI !
jak będziesz kiedyś we Wro to zgłoś się po piwo:]
Go to the top of the page
+Quote Post
mokry
post
Post #10





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Heh, prześlij GLS'em... Jak dasz do lodówki i dobrze zapakujesz to jak przyjdzie do mnie to będzie jeszcze zimne (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)


Do posta poniżej:
ad1.No to Tyskie lane w takim razie poproszę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
ad2.tez.

Ten post edytował mokry 12.01.2007, 01:38:21
Go to the top of the page
+Quote Post
Anqel
post
Post #11





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.01.2007

Ostrzeżenie: (0%)
-----


dzisiaj lusterka do auta dostalem:]
wczoraj pieniadze zostaly zaksiegowane (allegro.pl)
GLS to szybkie bestie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

mysle ze jak wysle otwarte to sie nie zdarzy wygazowac :]

dobrej nocy zycze :]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:05