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

dodanie czasu ostatiego logowania

Object Storage Arubacloud
+1 głos
379 wizyt
pytanie zadane 20 lutego 2022 w PHP przez gatka84 Bywalec (2,150 p.)

Witam próbuje dodać żeby był przesyłany czas logowania do tabeli przy zalogowaniu.

Zrobiłam tak i dodaje ale tylko same zera

if ($rezultat = @$polaczenie->query(
		sprintf("SELECT * FROM uzytkownicy WHERE user='%s' AND pass='%s'",
		mysqli_real_escape_string($polaczenie,$login),
		mysqli_real_escape_string($polaczenie,$haslo))))
		{
			$ilu_userow = $rezultat->num_rows;
			if($ilu_userow>0)
			{
				$_SESSION['zalogowany'] = true;
				
				$sql = "UPDATE uzytkownicy SET data_logowania = CURRENT_TIMESTAMP WHERE user = :user";
				$wiersz = $rezultat->fetch_assoc();
				
				$_SESSION['id'] = $wiersz['id'];
				$_SESSION['user'] = $wiersz['user'];
				$_SESSION['usertype'] = $wiersz['usertype'];

a w bazie pozycja data_logowania ma typ TIMESTAMP a ustawienia domyślne CURRENT_TIMESTAMP

nie wiem jak wskazać WHERE user = :user  żeby zapisywał tylko do logowanego usera bo obecnie całą kolumnę zmienia i jak zrobić żeby zapisał date ostatniego logowania.

co robię źle ?

komentarz 21 lutego 2022 przez SzkolnyAdmin Szeryf (86,360 p.)
Czy wiesz, co robi operator ":="?
komentarz 21 lutego 2022 przez HaKIM Szeryf (87,590 p.)
@SzkolnyAdmin PHP ma w ogóle operator ":="?
komentarz 21 lutego 2022 przez SzkolnyAdmin Szeryf (86,360 p.)
W PHP nie ma, ale jest w SQL-u i oznacza przypisanie (jak w Pascalu)
komentarz 21 lutego 2022 przez gatka84 Bywalec (2,150 p.)

miałam tak w poradniku i sugerując się nim próbuje to dodać do swojego systemu logowania i nie wiedziałam co on robi w php SzkolnyAdmin.

Dzięki za wyjaśnienie

komentarz 21 lutego 2022 przez Oscar Nałogowiec (29,320 p.)

@gatka84, może zrób pełniejsze rozwiązanie. Nie zmieniaj bazy użytkowników, tylko dodaj nową tabelę pamiętającą wszystkie logowania. Stamtąd możesz wyszukać parametry ostatniego logowania, gdy będziesz tego potrzebował. W tej tabelce tylko dodajesz elementy i każdy nowy wpis dostaje aktualną date.

komentarz 21 lutego 2022 przez gatka84 Bywalec (2,150 p.)

Bardzo ciekawy pomysł czy możesz coś więcej jak do tego się zabrać tzn jak ustawić tabele w sql żeby zapisywał kolejne logowania a nie nadpisywał za pomocą CURRENT_TIMESTAMP oraz jak to spiąć do danego usera

3 odpowiedzi

0 głosów
odpowiedź 21 lutego 2022 przez overcq Pasjonat (21,710 p.)

jak zro­bić żeby za­pi­sał da­te os­ta­t­nie­go lo­go­wa­nia

Może wystarczy użyć wartości defaulthttps://dev.mysql.com/doc/refman/8.0/en/update.html Nie wiem, jak ona będzie działać z dynamiczną wartością domyślną, jaką jest bieżący czas.

nie wiem jak wska­zać WHERE user = :user  żeby za­pi­sy­wał tyl­ko do lo­go­wa­ne­go use­ra

Możesz użyć zmiennej $login, jak we wcześniejszym zapytaniu do bazy danych.

0 głosów
odpowiedź 21 lutego 2022 przez gatka84 Bywalec (2,150 p.)

ok kombinowałam i zapytanie do bazy dodaje date tylko jak teraz wpisać żeby poprawnie dodał do zapytania id użytkownika który się zalogował

UPDATE uzytkownicy SET data_logowania = now() WHERE id =?;

 

komentarz 21 lutego 2022 przez VBService Ekspert (253,340 p.)
edycja 21 lutego 2022 przez VBService
...

<?php
if ($rezultat = @$polaczenie->query(
                sprintf("SELECT id, user, usertype FROM uzytkownicy WHERE user='%s' AND pass='%s'",
                mysqli_real_escape_string($polaczenie,$login),
                mysqli_real_escape_string($polaczenie,$haslo))))
{
    if ($rezultat->num_rows)
    {
        $_SESSION['zalogowany'] = true;
        $wiersz = $rezultat->fetch_assoc();
                 
        $_SESSION['id'] = $wiersz['id'];
        $_SESSION['user'] = $wiersz['user'];
        $_SESSION['usertype'] = $wiersz['usertype'];
        
        $timestamp = date("Y-m-d H:i:s");        
        $sql = "UPDATE uzytkownicy SET data_logowania = '{$timestamp}' WHERE id = {$_SESSION['id']}";
        @$polaczenie->query($sql);
    }
}

...

 

komentarz 21 lutego 2022 przez gatka84 Bywalec (2,150 p.)

ok po dalszych kombinacjach i podpowiedzi overcq dałam tak ale dalej czegoś brakuje

$sql = "UPDATE uzytkownicy SET data_logowania = now() WHERE user = '$login'";

i daje to po

$_SESSION['zalogowany'] = true;

 

0 głosów
odpowiedź 21 lutego 2022 przez gatka84 Bywalec (2,150 p.)

Zrobiłam coś takiego i działa,

proszę o info czy tak to się robi poprawnie czy powinno być inaczej

$_SESSION['zalogowany'] = true;

				$date_added = date("Y-m-d H:i:s");
				$update = "UPDATE uzytkownicy SET data_logowania = '$date_added' WHERE user = '$login'";
				$run = mysqli_query($polaczenie,$update);

 

komentarz 25 lutego 2022 przez AnimaVillis Stary wyjadacz (11,510 p.)
Ogólnie jest ok, ale skup się aby nazwy zmiennych były w jednym języku.

W momencie kiedy porzucisz projekt/oddasz itp. itd. cokolwiek się z nim stało byś wiedziała co dana zmienna robiła.
komentarz 9 marca 2022 przez gatka84 Bywalec (2,150 p.)
Oki dzięki za podpowiedź.

Podobne pytania

0 głosów
0 odpowiedzi 431 wizyt
pytanie zadane 17 lutego 2021 w C# przez disaster Bywalec (2,120 p.)
0 głosów
1 odpowiedź 203 wizyt
pytanie zadane 20 września 2017 w Java przez fipooo Bywalec (2,880 p.)
0 głosów
3 odpowiedzi 2,704 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...