Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Data ostatniego logowania
Forum PHP.pl > Forum > Przedszkole
kondziu9516
Witam poniżej dołączam plik logowanie.php przez który następuje zalogowanie użytkownika.
Mam takie pytanie.
Gdzie i jak dodać zapytanie aby dodawało datę zalogowania.
Moim celem jest abym w bazie danych miał kiedy ostatnio użytkownik był logowany.
Czy jest możliwość aby za każdym razem gdy się zaloguje na nowo zmieniało tamtą datę na nowa w tabeli w mysql?
Po prostu chyba nadpisywanie...

Jak to zrobić?
Mógłby mi ktoś tutaj dopisać tylko takie zapytanie?
A datę logowania ma zapisywać do pola ostatnielog w tabeli uzytkownik.

Oto kod logowania:
  1. <?php
  2.  
  3. session_start(); // rozpoczęcie sesji
  4.  
  5. if (!isset($_SESSION['login'])) { // dostęp dla niezalogowanego użytkownika
  6.  
  7. if ($_POST['wyslane']) { // jeżeli formularz został wyssany, to wykonuje się poniższy skrypt
  8.  
  9. include 'db.php'; // połązenie sie z bazą danych
  10. $tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
  11.  
  12. $login = $_POST["login"];
  13. $haslo = $_POST["haslo"];
  14.  
  15. $haslo = md5($haslo); // szyfrowanie podanego hasła
  16.  
  17. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  18. login='$login' and haslo='$haslo' and status=0");
  19.  
  20. // jeżeli użytkownik zarejestrował się, a nie aktywował swojego konta, to wyświetla się komunikat
  21. if (mysql_num_rows($wynik) == 1) {
  22. $informacja = mysql_fetch_array($wynik);
  23. echo '<p><font size="2" color="red"><br><br><b>Twoje konto nie zostało aktywowane.<br> Aby to zrobić, wejdź na swoją pocztę e-mail, a następnie znajdź wiadmość o rejestracji.</b><br><br></font></p>';
  24. }
  25.  
  26. // jeżeli wszystko jest dobrze, użytkownik się loguje
  27. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  28. login='$login' and haslo='$haslo' and status=1");
  29.  
  30. if (mysql_num_rows($wynik) == 1) {
  31. $informacja = mysql_fetch_array($wynik);
  32. $_SESSION["login"] = $informacja["login"];
  33. header('Location: index.php?s=zalogowany ');
  34. } else {
  35. echo '<p><font size="2" color="red"><br><br><b>Dane są nieprawidłowe. Spróbuj jeszcze raz.<br><br></b></font></p>';
  36. }
  37. mysql_close($polaczenie);
  38. }
  39.  
  40. // tworzenie formularza HTML
  41. echo <<< KONIEC
  42.  
  43.   <form action="index.php?s=logowanie2" method="post">
  44.   <input type="hidden" name="wyslane" value="TRUE" />
  45.  
  46.   <p>Login: <input type="text" name="login" /></p>
  47.   <p>Hasło: <input type="password" name="haslo" /></p>
  48.  
  49.   <p><input type="submit" value="zaloguj" /></p>
  50.  
  51.   </form><br><br>
  52. KONIEC;
  53.  
  54. } else {
  55. header('Location: index.php?s=zalogowany '); // zalogowany użytkownik zostaje przekierowany na stronę główną
  56. }
  57.  
  58. if ($_GET["wylogowanie"] == "tak") {
  59. // niszczenie sesji użytkownika
  60. header('Location: ../index.php?s=wyloguj '); // przekierwanie na stronę główną
  61. }
  62.  
  63. ?>


Daje oczywiście za pomoc PLUSY !
Pacio
  1. $informacja = mysql_fetch_array($wynik);
  2. mysql_query('UPDATE '. $tabela .' SET `ostatnielog`=NOW() WHERE `login`="'. $informacja["login"] .'"');
  3. $_SESSION["login"] = $informacja["login"];
kondziu9516
dzięki a jak tutaj wstawić też aby dodawało i datę i godzinęquestionmark.gif

  1. $informacja = mysql_fetch_array($wynik);
  2. mysql_query('UPDATE '. $tabela .' SET `ostatnielog`=NOW() WHERE `login`="'. $informacja["login"] .'"');
  3. $_SESSION["login"] = $informacja["login"];
CTRL
Łatwiej jest potem dodać now() a potem przerobić na datę i godzinę niż dodawać datę i godzinę do bazy
Majkelo23
Zapisuj czas za pomocą time();

A potem przy wyświetlaniu:

  1. date('d.m.Y, H:i', $zmienna_z_czasem);
kondziu9516
a to jak ten kod przerobić?
Proszę o pomoc... troche zielonkawy jestem...smile.gif

Daję PLUSA
Majkelo23
  1. $informacja = mysql_fetch_array($wynik);
  2. mysql_query('UPDATE '. $tabela .' SET `ostatnielog`=time() WHERE `login`="'. $informacja["login"] .'"');
  3. $_SESSION["login"] = $informacja["login"];
  4. $res = mysql_query('SELECT `ostatnielog` FROM `tabela` WHERE `login` ="'. $informacja["login"] .'"');
  5. $row = mysql_fetch_assoc($res);
  6. $czas_logowania = date('d.m.Y, H:i', $row['ostatnielog']);
kondziu9516
nie działa :/
A jaki typ kolumny ustawićquestionmark.gif
Ustawiony mam datetime

Co jest nie tak?
Dalej dodaje tylko date a godziny nie...;(
Majkelo23
Ustaw int(11). Ma dodawać uniksowy czas! Potem przy wyświetlaniu zamieniasz na normalny!
kondziu9516
yhy....wink.gif
A to jaki kod na wyświetlenie tego??

Napisałbyś mi na gotowo Będę bardzo wdzięczny !

aaa....
Ale teraz to wogóle nie dodaje nic daty do kolumny...
Coś jest nie tak?

fragment:
  1. if (mysql_num_rows($wynik) == 1) {
  2. $informacja = mysql_fetch_array($wynik);
  3. mysql_query('UPDATE '. $tabela .' SET `ostatnielog`=time() WHERE `login`="'. $informacja["login"] .'"');
  4. $_SESSION["login"] = $informacja["login"];
  5. $res = mysql_query('SELECT `ostatnielog` FROM `tabela` WHERE `login` ="'. $informacja["login"] .'"');
  6. $row = mysql_fetch_assoc($res);
  7. $czas_logowania = date('d.m.Y, H:i', $row['ostatnielog']);
  8. header('Location: index.php?s=zalogowany ');
  9. } else {
  10. echo '<p><font size="2" color="red"><br><br><b>Dane są nieprawidłowe. Spróbuj jeszcze raz.<br><br></b></font></p>';
  11. }
  12. mysql_close($polaczenie);
  13. }
  14.  
Majkelo23
O faak.

Krótka legena:
TABELA - to nazwa tabeli z userami.
ostatnielogowanie - to tabela, gdzie trzymasz czas ostatniego logowania danego usera.

Dodajesz pole do bazy:

  1. ALTER TABLLE `TABELA` ADD `ostatnielogowanie` int(11) NOT NULL;


  1. $sql = "SELECT ostatnielogowanie FROM `TABELA` WHERE logowanie = '".$informacja['login']."'";
  2. $result = mysql_query($sql)
  3. or die("blad");
  4. $row = mysql_fetch_assoc($result);
  5. echo date('d.m.Y, H:i', $row['ostatnielogowanie']);


Przy logowaniu - jak nadajesz sesje dorzuć jeszcze:

  1. $teraz = time();
  2. $sql = "UPDATE `TABELA` SET ostatnielogowanie = '".$teraz."' WHERE id = '".$informacja['login']."'";
kondziu9516
kolego a jak dodać to pole??
Muszę dodawać nowe? jak już mam??
Majkelo23
Nie, nie musisz. Nadaj mu tylko int(11) + NOT NULL. No i w moim przykładzie zdefiniuj właściwą nazwę tego pola + nazwy tej tabeli.

Aha i ja nie wiem jak Ty definiujesz danego usera, chodzi mi o zapytanie:

  1. WHERE id = COSTAM


Dlatego posłużyłem się kodem, który powyżej kolega podał. Nie patrzyłem w Twój kod.
kondziu9516
Kurcze coś źle... nie dodaje...
Co źle robie?
Mówiłem już że jestem zielony....;D

Tutaj fragment kodu oraz Screeny bazy
  1. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  2. login='$login' and haslo='$haslo' and status=1");
  3.  
  4. if (mysql_num_rows($wynik) == 1) {
  5. $informacja = mysql_fetch_array($wynik);
  6. mysql_query('UPDATE '. $tabela .' SET `ostatnielog`=time() WHERE `login`="'. $informacja["login"] .'"');
  7. $_SESSION["login"] = $informacja["login"];
  8. $teraz = time();
  9. $sql = "UPDATE 'uzytkownik' SET `ostatnielog`= '".$teraz."' WHERE id = '".$informacja['login']."'";
  10. mysql_query($sql);
  11. $res = mysql_query('SELECT `ostatnielog` FROM `uzytkownik` WHERE `login` ="'. $informacja["login"] .'"');
  12. $row = mysql_fetch_assoc($res);
  13. $czas_logowania = date('d.m.Y, H:i', $row['ostatnielog']);
  14. header('Location: index.php?s=zalogowany ');
  15. } else {
  16. echo '<p><font size="2" color="red"><br><br><b>Dane są nieprawidłowe. Spróbuj jeszcze raz.<br><br></b></font></p>';
  17. }
  18. mysql_close($polaczenie);
  19. }
  20.  




tutaj jeszcze dorzucam screeny struktury ostatnielog
Majkelo23
Nie wiem co robisz źle ;]

Linijka 6 - zapisz to tak:

  1. $sql = 'UPDATE '. $tabela .' SET `ostatnielog`=time() WHERE `login`="'. $informacja["login"] .'"';
  2. $wynik = mysql_query($sql)
  3. or die("mamy blad");
  4. echo $sql;


Zobacz co Ci zwróci. Jeśli błąd to jaki. Jeśli nie błąd to co wywala echo.
kondziu9516
zwróciło tylko tyle...wink.gif

"mamy bład"
Pacio
Funkcja time() w MySQL nie sluzy do zwracania aktualnego czasu, do tego sluzy CURTIME(), ale przeciez nie chodzi o zapisanie do bazy samej godziny?
Majkelo23
Walnij przed $wynik coś takiego:

  1. echo $sql;


I pokaż co Ci wyrzuca.
kondziu9516
UPDATE uzytkownik SET `ostatnielog`=time() WHERE `login`="demo"

Pacio chodzi o zapisanie i daty i godziny... jak to zrobić...?
Masz łatwiejszy sposób może?
Majkelo23
  1. $czas = time();
  2. $sql = 'UPDATE '. $tabela .' SET `ostatnielog`="'.$czas.'" WHERE `login`="'. $informacja["login"] .'"';
  3. $wynik = mysql_query($sql)
  4. or die("mamy blad");
  5. echo $sql;


Jak nie pójdzie, to odpal edytor, który koloruje składnie i pokombinuj z aposrofami/cudzysłowami.
kondziu9516
a to gdzie to i zamiast czego wstawićquestionmark.gif

  1. if (mysql_num_rows($wynik) == 1) {
  2. $informacja = mysql_fetch_array($wynik);
  3. $sql = 'UPDATE '. $tabela .' SET `ostatnielog`=time() WHERE `login`="'. $informacja["login"] .'"';
  4. echo $sql;
  5. $wynik = mysql_query($sql)
  6. or die("mamy blad");
  7. echo $sql;
  8. $_SESSION["login"] = $informacja["login"];
  9. $teraz = time();
  10. $sql = "UPDATE 'uzytkownik' SET `ostatnielog`= '".$teraz."' WHERE id = '".$informacja['login']."'";
  11. mysql_query($sql);
  12. $res = mysql_query('SELECT `ostatnielog` FROM `uzytkownik` WHERE `login` ="'. $informacja["login"] .'"');
  13. $row = mysql_fetch_assoc($res);
  14. $czas_logowania = date('d.m.Y, H:i', $row['ostatnielog']);
  15. header('Location: index.php?s=zalogowany ');
  16. } else {
  17. echo '<p><font size="2" color="red"><br><br><b>Dane są nieprawidłowe. Spróbuj jeszcze raz.<br><br></b></font></p>';
  18. }
  19. mysql_close($polaczenie);
  20. }


wstawiłem to i zapisało mi w tabeli jako coś takiego: 1330894452
Majkelo23
Włącz mózg, pomyśl...I tak z tego co widziałem, tutaj gotowców nie tolerują, więc zapewne temat któryś moderator domknie, jak go odwiedzi.

Noo i dobrze zapisało ;] Brawo ;]
kondziu9516
no okej i teraz jak to pobrać np. w panelu admina? tak jak już pisałeś?

tak:

  1. $sql = "SELECT ostatnielogowanie FROM `TABELA` WHERE logowanie = '".$informacja['login']."'";
  2. $result = mysql_query($sql)
  3. or die("blad");
  4. $row = mysql_fetch_assoc($result);
  5. echo date('d.m.Y, H:i', $row['ostatnielogowanie']);

Jak to umieścićquestionmark.gif

na przykład w tym: w którym miejscu to wcisnąć?
  1. <?php
  2. mysql_connect ("localhost", "xxx", "xxx"); //Łączysz Się z Bazą
  3. mysql_query ("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'"); //Wybierasz Bazę
  4. /* zapytanie do konkretnej tabeli */
  5.  
  6. $nick = $_SESSION['login'];
  7. $wynik = mysql_query("SELECT login, ocena FROM uzytkownik WHERE login='$nick'") or die('Błąd zapytania');
  8.  
  9. if(mysql_num_rows($wynik) > 0) {
  10. echo ' <div class="subdiv2" style="margin-top:-322px;">
  11. <p class="top">&nbsp;</p>
  12. <h2 >Strefa Klienta</h2>';
  13.  
  14. if($r = mysql_fetch_assoc($wynik)) {
  15.  
  16. echo '<p align="right"><font size="3" color="red"><center>Zalogowany jako:<font size="3" color="black"> '.$nick.'</font> </font></b><br><br></p align></center>
  17. <font size="2" color="black" style="margin-left:30px;"><b>Ocena konta:</b><font size="2" color="green"><b> '.$r['ocena'].' %</b> <img src="images/pyt.png" title="Ocena rejestracji i zamówień przez ekipe.
  18. 10% uzyskuje się zaraz po prawidłowej rejestracji.
  19. Reszta % zostaje przyznana z upływem czasu."></font> </font></b><br><br>
  20. <center></u> <a href="user/logowanie.php?wylogowanie=tak"><font size="3" color="black"><b>Wyloguj</b></font></a><br><br>
  21. <a href="index.php?s=zmiana"><font size="2" color="blue"><b>Zmień dane</b></font></a><br><br>
  22. <a href="user/status2/?s='.$nick.'"><font size="2" color="orange"><b>Sprawdź status zlecenia</b></font></a><br></center>
  23. <p class="bot"></p>
  24.  
  25. </div>';
  26. }
  27. }
  28.  
  29.  
  30. ?>
Majkelo23
Nie wiem, wrzuć chociażby w 15 linijkę.
kondziu9516
Ok mam... no ale to mi pokazuje akurat datę tego logowania... a jak zrobić zeby pokazywało w panelu ostatniego?
To trzeba przy wylogowaniu zapisać datę?
Majkelo23
Dokładnie smile.gif
kondziu9516
a w tym jak umieścić kod który zapisuje date??
bo trzeba napewno na nowo dodać db.php

kod wylogowania smile.gif
  1. echo '<br><br><font size="4" color="red"><center><b>Zostałeś wylogowany</center></font></b><br>
  2. <center> <font size="3" color="green"><b>Trwa przenoszenie na stronę główną</b></font></center>
  3. <br><br><br><META HTTP-EQUIV="Refresh" CONTENT="2;URL=index.php">';
  4. ?>




_______________________
Aha i czy jest możliwość jakoś rozkodować tą datę w przypadku gdy ja bym chciał sprawdzić kiedy się ostatnio użytkownik logował?
Majkelo23
Matko, rusz głowąexclamation.gif!! Ten sam kod, który dodawałeś przy logowaniu, dodajesz tutaj! Po co bierzesz się za takie rzeczy skoro Ty kodu nawet wstawić nie potrafisz, nie wiesz gdzie go wstawić. Pomijam fakt, że masz GOTOWY KOD...
A tak poza tym to gdzie byś ten kod wstawił - będzie dobrze...Byle nie przed <?php ani nie po ?>.
kondziu9516
No i znowu mam problem...;(

Oto mój kod przy wylogowaniu.
Niestety nie aktualizuje tu bazy.
Ale jak dam przy logowaniu jest ok...

widzisz gdzieś błąd?

  1.  
  2. include 'db.php'; // połązenie sie z bazą danych
  3. $tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
  4.  
  5. $login = $_POST["login"];
  6. $haslo = $_POST["haslo"];
  7.  
  8. $haslo = md5($haslo); // szyfrowanie podanego hasła
  9. // jeżeli wszystko jest dobrze, użytkownik się loguje
  10. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  11. login='$login' and haslo='$haslo' and status=1");
  12.  
  13. if (mysql_num_rows($wynik) == 1) {
  14. $informacja = mysql_fetch_array($wynik);
  15. $_SESSION["login"] = $informacja["login"];
  16. $czas = time();
  17. $sql = 'UPDATE '. $tabela .' SET `ostatnielog`="'.$czas.'" WHERE `login`="'. $informacja["login"] .'"';
  18. $wynik = mysql_query($sql)
  19. or die("wystąpił błąd wewnętrzny");
  20. echo $sql;
  21. }
  22.  
  23. echo '<br><br><font size="4" color="red"><center><b>Zostałeś wylogowany</center></font></b><br>
  24. <center> <font size="3" color="green"><b>Trwa przenoszenie na stronę główną</b></font></center>
  25. <br><br><br><META HTTP-EQUIV="Refresh" CONTENT="2;URL=index.php">';
  26. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.