Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [MySQL][PHP]Data ostatniego logowania
kondziu9516
post 4.03.2012, 14:45:50
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


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 !
Go to the top of the page
+Quote Post
Pacio
post 4.03.2012, 15:11:00
Post #2





Grupa: Zarejestrowani
Postów: 105
Pomógł: 27
Dołączył: 30.10.2005
Skąd: Lublin

Ostrzeżenie: (0%)
-----


  1. $informacja = mysql_fetch_array($wynik);
  2. mysql_query('UPDATE '. $tabela .' SET `ostatnielog`=NOW() WHERE `login`="'. $informacja["login"] .'"');
  3. $_SESSION["login"] = $informacja["login"];


Ten post edytował Pacio 4.03.2012, 15:12:19


--------------------
Mój Blog Militarny: http://1rBlog.pl
Go to the top of the page
+Quote Post
kondziu9516
post 4.03.2012, 21:00:07
Post #3





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


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"];
Go to the top of the page
+Quote Post
CTRL
post 4.03.2012, 21:04:10
Post #4





Grupa: Zarejestrowani
Postów: 133
Pomógł: 8
Dołączył: 23.09.2011
Skąd: Stromiec

Ostrzeżenie: (0%)
-----


Łatwiej jest potem dodać now() a potem przerobić na datę i godzinę niż dodawać datę i godzinę do bazy


--------------------
Go to the top of the page
+Quote Post
Majkelo23
post 4.03.2012, 21:04:22
Post #5





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


Zapisuj czas za pomocą time();

A potem przy wyświetlaniu:

  1. date('d.m.Y, H:i', $zmienna_z_czasem);
Go to the top of the page
+Quote Post
kondziu9516
post 4.03.2012, 21:06:57
Post #6





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


a to jak ten kod przerobić?
Proszę o pomoc... troche zielonkawy jestem...smile.gif

Daję PLUSA
Go to the top of the page
+Quote Post
Majkelo23
post 4.03.2012, 21:09:29
Post #7





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


  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']);
Go to the top of the page
+Quote Post
kondziu9516
post 4.03.2012, 21:16:46
Post #8





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


nie działa :/
A jaki typ kolumny ustawićquestionmark.gif
Ustawiony mam datetime

Co jest nie tak?
Dalej dodaje tylko date a godziny nie...;(
Go to the top of the page
+Quote Post
Majkelo23
post 4.03.2012, 21:17:40
Post #9





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


Ustaw int(11). Ma dodawać uniksowy czas! Potem przy wyświetlaniu zamieniasz na normalny!

Ten post edytował Majkelo23 4.03.2012, 21:18:14
Go to the top of the page
+Quote Post
kondziu9516
post 4.03.2012, 21:20:56
Post #10





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


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.  
Go to the top of the page
+Quote Post
Majkelo23
post 4.03.2012, 21:26:10
Post #11





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


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']."'";
Go to the top of the page
+Quote Post
kondziu9516
post 4.03.2012, 21:26:44
Post #12





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


kolego a jak dodać to pole??
Muszę dodawać nowe? jak już mam??
Go to the top of the page
+Quote Post
Majkelo23
post 4.03.2012, 21:28:28
Post #13





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Majkelo23 4.03.2012, 21:34:45
Go to the top of the page
+Quote Post
kondziu9516
post 4.03.2012, 21:41:06
Post #14





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


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
Go to the top of the page
+Quote Post
Majkelo23
post 4.03.2012, 21:43:42
Post #15





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
kondziu9516
post 4.03.2012, 21:46:57
Post #16





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


zwróciło tylko tyle...wink.gif

"mamy bład"
Go to the top of the page
+Quote Post
Pacio
post 4.03.2012, 21:48:41
Post #17





Grupa: Zarejestrowani
Postów: 105
Pomógł: 27
Dołączył: 30.10.2005
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Funkcja time() w MySQL nie sluzy do zwracania aktualnego czasu, do tego sluzy CURTIME(), ale przeciez nie chodzi o zapisanie do bazy samej godziny?


--------------------
Mój Blog Militarny: http://1rBlog.pl
Go to the top of the page
+Quote Post
Majkelo23
post 4.03.2012, 21:48:55
Post #18





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


Walnij przed $wynik coś takiego:

  1. echo $sql;


I pokaż co Ci wyrzuca.
Go to the top of the page
+Quote Post
kondziu9516
post 4.03.2012, 21:51:06
Post #19





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


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?
Go to the top of the page
+Quote Post
Majkelo23
post 4.03.2012, 21:51:25
Post #20





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


  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.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 11:33