• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Licznik odwiedzin w php i mysql

Object Storage Arubacloud
0 głosów
299 wizyt
pytanie zadane 14 października 2023 w PHP przez Piotrek2713 Mądrala (5,380 p.)
if(setcookie)
{
    $connection->query("UPDATE 'counter' SET 'liczba_odwiedzin' = 'liczba_odwiedzin'++")
}

Tak wygląda kod php. Moim celem jest tymczasowe zrobienie kodu, który będzie zwiększał wartość liczby odwiedzin w tabeli counter po każdym odświeżeniu strony. Robię to w celach testowych. Problem w tym, że wartość się nie aktualizuje.

komentarz 14 października 2023 przez marcin99b Szeryf (82,180 p.)
a co jeśli dwie osoby wejdą na strone w tym samym czasie?

2 odpowiedzi

0 głosów
odpowiedź 14 października 2023 przez Visual Studio Kot Bywalec (2,550 p.)
wybrane 15 października 2023 przez Piotrek2713
 
Najlepsza
if (isset($_COOKIE['visit_counter'])) {
    $currentCount = (int)$_COOKIE['visit_counter'];
    $newCount = $currentCount + 1;
    setcookie('visit_counter', $newCount, time() + 3600); // Ustawiamy nowy ciasteczko z zaktualizowaną liczbą odwiedzin
} else {
    setcookie('visit_counter', 1, time() + 3600); // Tworzymy nowe ciasteczko z liczbą odwiedzin ustawioną na 1 (pierwsze odwiedziny)
}

$connection->query("UPDATE counter SET liczba_odwiedzin = liczba_odwiedzin + 1");

Oto, co zmieniłem i dlaczego:

  1. Wprowadziłem sprawdzenie, czy ciasteczko "visit_counter" istnieje, za pomocą isset($_COOKIE['visit_counter']). Jeśli ciasteczko istnieje, pobieramy jego wartość i zwiększamy ją o 1. Jeśli nie istnieje, tworzymy nowe ciasteczko z liczbą odwiedzin ustawioną na 1.

  2. Wartość liczby odwiedzin w bazie danych zwiększamy bezpośrednio w zapytaniu SQL, używając liczba_odwiedzin = liczba_odwiedzin + 1.

Mam nadzieję, ze pomogło :)

komentarz 15 października 2023 przez VBService Ekspert (253,420 p.)
edycja 15 października 2023 przez VBService

Po co trzymać licznik w ciasteczku jak i tak go można zmienić np. za pomocą DevTools-a.

Jeżeli licznik będzie się opierał o ciasteczko, proponuje np. taki zapis

if (! isset($_COOKIE['visited'])) {
  setcookie('visited', 0, time() + 3600);

  // zwiększanie licznika tylko co 1h (setcookie(... 3600);)
  $connection->query("UPDATE `counter` SET `liczba_odwiedzin` = `liczba_odwiedzin` + 1");
}

 

komentarz 15 października 2023 przez Piotrek2713 Mądrala (5,380 p.)
Zauważyłem, że licznik nie jest odporny na odświeżenia strony. Wiesz, jak temu zaradzić?
komentarz 15 października 2023 przez Piotrek2713 Mądrala (5,380 p.)

Tak powinno być smiley

if (isset($_COOKIE['visit_counter'])) {
    $currentCount = (int)$_COOKIE['visit_counter'];
    $newCount = $currentCount + 1;
    setcookie('visit_counter', $newCount, time() + 3600); // Ustawiamy nowy ciasteczko z zaktualizowaną liczbą odwiedzin
} else {
    setcookie('visit_counter', 1, time() + 3600); // Tworzymy nowe ciasteczko z liczbą odwiedzin ustawioną na 1 (pierwsze odwiedziny)
    $connection->query("UPDATE `articles` SET `views_count` = `views_count` + 1 WHERE ID=5");
}

 

0 głosów
odpowiedź 14 października 2023 przez VBService Ekspert (253,420 p.)
edycja 14 października 2023 przez VBService

To coś bardziej tak

if(setcookie)
{
    $connection->query("UPDATE `counter` SET `liczba_odwiedzin` = `liczba_odwiedzin` + 1")
}

 

komentarz 14 października 2023 przez Piotrek2713 Mądrala (5,380 p.)
A jak sprawdzić, że strona faktycznie została wyświetlona? Ten warunek wydaje się nie działać
komentarz 14 października 2023 przez VBService Ekspert (253,420 p.)
komentarz 15 października 2023 przez VBService Ekspert (253,420 p.)

@Piotrek2713, 

Ten warunek wydaje się nie działać

za pierwszym razem skupiłem się na sql-u, mój błąd.

 

if ($_COOKIE)

// lub bardziej precyzyjnie przez utworzenie konkretnej wartości np. visited
if (isset($_COOKIE['visited']))

 

BTW,

if ($_COOKIE)
  var_dump($_COOKIE);

if (isset($_COOKIE))
  var_dump($_COOKIE);

if (! empty($_COOKIE))
  var_dump($_COOKIE);

if (isset($_COOKIE['visited']))
  var_dump($_COOKIE);

 

Podobne pytania

0 głosów
1 odpowiedź 2,533 wizyt
+1 głos
2 odpowiedzi 658 wizyt
0 głosów
1 odpowiedź 711 wizyt
pytanie zadane 21 lutego 2020 w PHP przez franz Gaduła (4,940 p.)

92,580 zapytań

141,432 odpowiedzi

319,665 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...