Wyświetlenia strony w sesji

0

Dlaczego nie działa mój licznik wyświetleń strony w sesji? Mam taki sam kod wykorzystujący cookie i działa. A z sesją nie chce. Nie wyświetla w ogóle licznika.

<?php
session_start();
?>

<?php
if(!isset($_SESSION['counter']))
{
  $_SESSION['counter'] = 0;
  $visits = $_SESSION['counter'] + 1;
}
?>

<?php 
echo "Wizyty w sesji: $visits";
 ?>
0

Imo kod z $_COOKIES nie taki sam bo wtedy by żaden nie działał. :)

Jak wchodzisz za drugim razem nie masz czasem błędu? A konkretnie, że nie istnieje zmienna $visits?
Przeanalizuj dokładnie warunek w IFie i kiedy się on wykona a kiedy nie.

0

Można krócej

session_start();
$visits = isset($_SESSION["counter"]) ? $_SESSION["counter"] + 1: 1;
$_SESSION['counter'] = $visits;
echo "Wizyty w sesji: $visits";
1

Jak uczysz się programowania to czytaj swój kod ( na głos najlepiej - sprawdź https://pl.wikipedia.org/wiki/Metoda_gumowej_kaczuszki ). Masz go ROZUMIEĆ, zanim go uruchomisz.

Twój kod to aktualnie:
#Jeżeli nie ma wartości w sesji -> ustaw wartość w sesji na zero, a do zmiennej $visits przypisz wartość o jeden większą.
#Wyświetl $visits.
KONIEC.

Na tym kończy się Twój program.

Powinno być tak:
#Jeżeli nie ma wartości w sesji -> ustaw wartość na jeden.
#Jeżeli jest wartość -> zwiększ o jeden.
#Wyświetl $visits.

0

Jednak okazało się, że to nie ja mam źle tylko w książce jest błąd. Powinno to być coś w rodzaju

<?php
session_start();

if (!isset($_SESSION['counter'])) { 
    $_SESSION['counter'] = 1;
}
else {
$_SESSION['counter']+=1; }
?>

A więc zamiast tworzyć zmienną trzeba bezpośrednio operować na $_SESSION['counter']. Nie wiem tylko dlaczego zawsze jak zamkne i otworze na nowo strone licznik dalej się zwiększa tak jakbym wcale nie zamknął strony. Bez sensu, te sesje niczym się nie różnią od cookies, i to się zawsze tak samo zwiększa, i tamto.

0

Nie. Sesja zniknie jak zamkniesz przeglądarkę, a nie kartę przeglądarki. Ciastko zostanie.

Wyjątkiem jest... ciastko sesyjne, bo sesja to nic innego jak ciastko zawierające losowy string, a do tego stringa php przechowuje jakieś dane. Jakbyś bardzo chciał (ale niezalecane jest tworzenie koła od nowa) to możesz sam wysyłać ciastko sesyjne i sam zapisywać dane sesyjne np. w bazie danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1