• 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

0 głosów
720 wizyt
pytanie zadane 14 października 2023 w PHP przez Piotrek2713 Mądrala (5,520 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 (84,250 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 (256,600 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,520 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,520 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 (256,600 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,520 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 (256,600 p.)
komentarz 15 października 2023 przez VBService Ekspert (256,600 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,980 wizyt
+1 głos
2 odpowiedzi 716 wizyt
0 głosów
1 odpowiedź 1,003 wizyt
pytanie zadane 21 lutego 2020 w PHP przez franz Gaduła (4,940 p.)

93,424 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,785 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...