Sesja dla gościa - jak przypisać mu sesję

0

Więc tak, zrobiłem sobie kod, który ma sprawdzić, czy masz sesję, jak nie, to wrzuca nowy wpis do tabeli, przypisuję Ci ID i dodaję kiedy dołączyłeś. Do tej chwili wszystko działa, tzn. dodaje mi do bazy, ale kurde nie wiem co dalej, bo to jest sesja dla gościa, więc nie zrobię SELECT z bazy danych, bo nie mam nazwy użytkownika, aby ustawić sesje dla user_id, a przez coś przecież muszę go dopasować przecież (dzek69 - zaraz powiesz mi znowu, że nie wiem co to sesja haha). No i teraz mam pytanie do Was, jak zrobić w takim razie sesję dla gościa?

 
<?php
    session_start();
    if(!isset($_SESSION['user_id']))
    {
        $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

        if(isset($_COOKIE['user_id']))
        {
            $_SESSION['user_id'] = $_COOKIE['user_id'];
        }
        else
        {
            $query = "INSERT INTO blabla (join_date) VALUES (NOW())";
            mysqli_query($dbc, $query);
        }
		
		mysqli_close($dbc);
    }
?>
0

identyfikuj po ip, sesja trwająca do czasu zamknięcia przeglądarki.

0
mr_jaro napisał(a):

O IP też myślałem, a co jeśli komputery są w sieci? No i z jednego IP łączą mi się dwa komputery?

0

Do sesji oprócz tego co na serwie potrzebny jest plik cookie a ten jest tylko na właściwym kompie. W sumie nie wiem co chcesz zrobić, ale taka sesja dla gościa nie powinna być trzymana na stałe tylko nawet na serwie być kasowane info po powiedzmy 24h a gość powinien tracić sesji (mieć skasowane cookie) wraz z wyłączeniem przeglądarki. Na stałe nie da się mieć takich anonimowych kont/sesji. Jeżeli chcesz mieć na stałe info dla każdego no to już potrzebne logowanie.

0

co za chaos, tak, może i masz jakieś pojęcie, co to sesja, ale nie masz pojęcia jak z tego korzystać :P

session_start();
$id = session_id();
// podłącz do bazy
// wyszukaj czy takie id jest w bazie
// jeżeli nie ma to dodaj (ale ten ID musi być w bazie, nie dodawaj samego czasu, bo to nie ma sensu o.O)
0
dzek69 napisał(a):

tak jak mówiłeś, wiedza moja nie ogarnia tego haha... Pomyślałem teraz, dodaję kogoś nowego do bazy, wpisuję IP i NOW(), od razu ściągam i sprawdzam, czy istnieje wpis w tabeli gdzie zgadza się IP i NOW(), jeśli zgadza, to ustawiam sesję dla takiego wpisu, dobre, nie :D?

0

jak to "zgadza się now()"?

dobre, nie :D?

nic z tego nie rozumiem więc zakładam, że nie

0
  1. nie dodajesz user_id do bazy, to skąd tam ma być? chyba, że to klucz główny z auto increment?
  2. NAPRAWDĘ nie stosujesz ŻADNEGO logowania błędów, nawet wyświetlania ich na chama w treści strony? Masz niepoprawną składnię w SELECT
  3. Po co to ciastko? Taka sesja do czatu powinna być tymczasowa, jeżeli ma być na stałe to zrób użytkownikom konta na stałe, nie przedłużaj sesji w nieskończoność
  4. I broń boże nie pozwalaj użytkownikowi na przejęcie sesji poprzez podstawienie id w ciastku, dlatego, że id sesji to kolejny numer...
  5. naprawdę... pakujesz się w coś dużego z tak podstawowymi brakami - nic dobrego z tego nie będzie.
0

zrobiłem już :) - spokojnie, to robię tylko dla testów

  1. auto increment
  2. no właśnie select poprawiony, a co do błędów, to wywalam wszystko zbędne przed wrzuceniem tego tutaj
    3/4 sesja poleci po 30 min.
  3. wiem, wiem już to widzę :D

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