Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][HTML][PHP]Ostatnio zalogowany
Forum PHP.pl > Forum > Przedszkole
bolus150
Witam, chciałbym zrobić, żeby w bazie danych dodawany był do rekordu danego id logowanie
Czyli, żeby w bazie zapisywało się kiedy się loguje.
  1. UPDATE `users` SET `logdate` = '".time()."' WHERE `id` ='$id';


Może mi ktoś powiedzieć co jest źle w tym zapytaniu? Nie zmienia mi niczego po zalogowaniu. Jak jest Insert to tworzy mi nowe rekordy.
borabora
wypisz sobie to zapytanie i wklej bezposrednio w phpmyadmin ewentualnie do innego narzedzia, z którego korzystasz
mozliwe, że masz nieodpowiedni typ kolumny w bazie. Aby zapisać wynik funkcji time() powinieneś ustawić typ jako int
bolus150
Sęk w tym, że kolumnę mam int - > UNSIGNED. W kolumnie regdate sprawdza się to doskonale, a w kolumnie logdate nie potrafi.
Oto cały kod logowania, może mam gdzieś jeszcze błąd.
  1. <?php
  2.  
  3. require 'header.php';
  4. require 'config.php';
  5.  
  6. require_once 'user.class.html';
  7.  
  8. $login = htmlspecialchars(mysql_real_escape_string($_POST['login']));
  9. $pass = mysql_real_escape_string($_POST['pass']);
  10. mysql_query("UPDATE users SET logdate='".time()."' WHERE id='$id' ");
  11.  
  12. if ($_POST['send'] == 1) {
  13. if (!$login or empty($login)) {
  14. die ('<p class="error">Wypełnij pole z loginem!</p>');
  15. }
  16.  
  17. if (!$pass or empty($pass)) {
  18. die ('<p class="error">Wypełnij pole z hasłem!</p>');
  19. }
  20.  
  21. $pass = user::passSalter($pass);
  22.  
  23. $userExists = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE login = '$login' AND pass = '$pass'"));
  24.  
  25. if ($userExists[0] == 0) {
  26. // UĹźytkownik nie istnieje w bazie
  27. echo '<p class="error">Użytkownik o podanym loginie lub haśle nie istnieje.</p>';
  28. }
  29.  
  30. else {
  31. $user = user::getData($login, $pass);
  32.  
  33. // Przypisz pobrane dane do sesji
  34. $_SESSION['login'] = $login;
  35. $_SESSION['pass'] = $pass;
  36. echo '<meta HTTP-EQUIV="Refresh" CONTENT="1; URL=mojastrona.pl"></p>';
  37. echo "Zostałeś poprawnie zalogowany. Poczekaj strona przekieruje cię automatycznie. ";
  38. }
  39. }
  40.  
  41. else {
  42. ?>
  43. <h2>Logowanie</h2>
  44. <table border="0" cellpadding="0" cellspacing="0" width="50%">
  45. <form method="post" action="">
  46. <td width="15%" colspan="3"><label for="login">Login:</label></td>
  47. <td width="15%" colspan="3"><input type="text" name="login" maxlength="32" id="login" /></td><tr>
  48.  
  49. <td width="15%" colspan="3"><label for="pass">Hasło:</label></td>
  50. <td width="15%" colspan="3"><input type="password" name="pass" maxlength="32" id="pass" /></td><tr>
  51. </table>
  52. <input type="hidden" name="send" value="1" />
  53. <input type="submit" value="Zaloguj" />
  54. </form>
  55.  
  56. <?php
  57. }
  58.  
  59. require 'footer.php';
  60. ?>
  61.  
borabora
nie wiem co masz w includowanych plikach, ale możliwe że zmienna $id nie ma przypisanej wartości
bolus150
Jak dam zamiast UPDATE, INSERT INTO to dodaje nowy rekord, a ja chcę uaktualnić ten.
nospor
Toc juz ci napisano... zmienna $id nie istnieje.
Tu masz wskazowki jak sobie radzic z takimi problemami
Temat: Jak poprawnie zada pytanie
zastosuj sie do podanych tam wskazowek a wszystko czarno na bialym bedziesz mial na ekranie
bolus150
Może mi ktoś powiedzieć dlaczego nie mogę wyświetlić nic z kolumny ID ? Kolumnę login i pass mogę bez problemu. Można jakoś zablokować kolumnę ID, żeby jej nie wyświetlało?
nospor
A moze uraczysz nas kodem, z ktorym masz problem? Skad mamy wiedziec co napsules (bo na pewno cos napsules wink.gif )
bolus150
Kod mam taki, ID udało mi się wyciągnąć, ale nie UPDATE rekordu:/

  1. <?php
  2. require 'header.php';
  3. require 'config.php';
  4.  
  5. require_once 'user.class.html';
  6.  
  7. // Zabezpiecz zmienne odebrane z formularza, przed atakami SQL Injection
  8. $login = htmlspecialchars(mysql_real_escape_string($_POST['login']));
  9. $pass = mysql_real_escape_string($_POST['pass']);
  10.  
  11.  
  12. if ($_POST['send'] == 1) {
  13.  
  14. if (!$login or empty($login)) {
  15. die ('<p class="error">Wypełnij pole z loginem!</p>');
  16. }
  17.  
  18. if (!$pass or empty($pass)) {
  19. die ('<p class="error">Wypełnij pole z hasłem!</p>');
  20. }
  21.  
  22. $pass = user::passSalter($pass);
  23. $userExists = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE login = '$login' AND pass = '$pass'"));
  24.  
  25. if ($userExists[0] == 0) {
  26. // UĹźytkownik nie istnieje w bazie
  27. echo '<p class="error">Użytkownik o podanym loginie lub haśle nie istnieje.</p>';
  28. }
  29.  
  30. else {
  31. $user = user::getData($id, $login, $pass);
  32. $_SESSION['id'] = $id;
  33. $_SESSION['login'] = $login;
  34. $_SESSION['pass'] = $pass;
  35.  
  36. echo '<meta HTTP-EQUIV="Refresh" CONTENT="1; URL="></p>';
  37. echo "Zostałeś poprawnie zalogowany. Poczekaj strona przekieruje cię automatycznie. ";
  38. if (user::isLogged()) {
  39. $user = user::getData('', '');
  40. mysql_query("UPDATE users SET logdate=('".time()."') WHERE id='$id';") or die ('<p>Nie udało się</p>');
  41.  
  42. echo '<p>'.$user['id'].'</p>'; Tutaj sprawdzałem i ID jest poprawne, a wyżej nie aktualizuje.
  43. }
  44. }
  45. }
  46.  
  47. else {
  48. ?>
  49. <h2>Logowanie</h2>
  50. <table border="0" cellpadding="0" cellspacing="0" width="50%">
  51. <form method="post" action="">
  52. <td width="15%" colspan="3"><label for="login">Login:</label></td>
  53. <td width="15%" colspan="3"><input type="text" name="login" maxlength="32" id="login" /></td><tr>
  54.  
  55. <td width="15%" colspan="3"><label for="pass">Hasło:</label></td>
  56. <td width="15%" colspan="3"><input type="password" name="pass" maxlength="32" id="pass" /></td><tr>
  57. </table>
  58. <input type="hidden" name="send" value="1" />
  59. <input type="submit" value="Zaloguj" />
  60. </form>
  61.  
  62. <?php
  63. }
  64.  
  65. require 'footer.php';
  66. ?>
  67.  


W bazie mam kolumnę logdate int unsigned
nospor
NADAL nigdzie tutaj NIE WYCIAGASZ $id...
Podalem ci linka do tematu, gdzie masz napisane jak masz debugowac kod. Poraz ostatni Cię proszę, byś tam zajrzał i się do niego zastosował.
bolus150
  1. echo '<p>'.$user['id'].'</p>';
- tym mi wypisuje na ekran id użytkownika
nospor
super, a teraz znajdz 10 roznic:

$user['id']
$id
bolus150
Notice: Undefined index: login in /virtual/kipfan.cba.pl/page/login.html on line 12

Notice: Undefined index: pass in /virtual/kipfan.cba.pl/page/login.html on line 13

Notice: Undefined index: send in /virtual/kipfan.cba.pl/page/login.html on line 16

dotyczy:
  1. $login = htmlspecialchars(mysql_real_escape_string($_POST['login']));
  2. $pass = mysql_real_escape_string($_POST['pass']);
  3.  
  4.  
  5. if ($_POST['send'] == 1) {
nospor
a znalazles 10 roznic
$user['id']
$id
?
bolus150
A takie coś wypisuje mi jak wcisnę przycisk zaloguj:

Strict Standards: Non-static method user::passSalter() should not be called statically in /virtual/kipfan.cba.pl/page/login.html on line 27

Strict Standards: Non-static method user::getData() should not be called statically in /virtual/kipfan.cba.pl/page/login.html on line 39
Zostałeś poprawnie zalogowany. Poczekaj strona przekieruje cię automatycznie.
Strict Standards: Non-static method user::isLogged() should not be called statically in /virtual/kipfan.cba.pl/page/login.html on line 47

Strict Standards: Non-static method user::getData() should not be called statically in /virtual/kipfan.cba.pl/page/login.html on line 48

Notice: Undefined variable: id in /virtual/kipfan.cba.pl/page/login.html on line 49

Notice: Undefined variable: id in /virtual/kipfan.cba.pl/page/login.html on line 51

Cytat(nospor @ 27.08.2015, 20:34:57 ) *
a znalazles 10 roznic
$user['id']
$id
?

$user to nie jest zmienna ?
nospor
kurcze... potkniesz pod nos to i tak nie zauwazy...

mysql_query("UPDATE users SET logdate=('".time()."') WHERE id='$id';") or die ('<p>Nie udało się</p>');
echo '<p>'.$user['id'].'</p>'; Tutaj sprawdzałem i ID jest poprawne, a wyżej nie aktualizuje.

W UPDATE jako warunek wkladasz zmienną  $id, a sprawdzasz wartosc w $user['id'].... kurcze, naprawde musze jasniej to pisac?

zamiast
mysql_query("UPDATE users SET logdate=('".time()."') WHERE id='$id';") or die ('<p>Nie udało się</p>');
ma byc
mysql_query("UPDATE users SET logdate=('".time()."') WHERE id='{$user['id']}';") or die ('<p>Nie udało się</p>');

Wkoncu to pod $user['id'] masz wartosc a nie pod $id, no nie??
bolus150
Matko, jaki tępy jestem. A możesz mi powiedzieć dlaczego tyle błędów wywala?
nospor
ODwolujesz sie do inedksow tablicy, ktore nie istnieją, to masz noticy... przykladowo pass i login masz pobrac dopiero w IF a nie przed.
bolus150
A send'a jak poprawić?
nospor
Nie: if ($_POST['send'] == 1) {
a: if (!empty($_POST['send'])) {

Generalnie nie mozesz sie odwolywac do czegos, czego nie ma. Jak tak robisz to leci blad. A empty() to taki skrot. Normalniesz masz wpierw sprawdzic czy cos jest przez isset() a dopiero potem sie do tego dobierac
bolus150
Pięknie działa. Dziękuję smile.gif

Strict Standards: Non-static method user::passSalter() should not be called statically in /virtual/kipfan.cba.pl/page/login.html on line 27

Strict Standards: Non-static method user::getData() should not be called statically in /virtual/kipfan.cba.pl/page/login.html on line 39
Zostałeś poprawnie zalogowany. Poczekaj strona przekieruje cię automatycznie.
Strict Standards: Non-static method user::isLogged() should not be called statically in /virtual/kipfan.cba.pl/page/login.html on line 47

Strict Standards: Non-static method user::getData() should not be called statically in /virtual/kipfan.cba.pl/page/login.html on line 48

Notice: Undefined variable: id in /virtual/kipfan.cba.pl/page/login.html on line 51 - poprawione

A to jak poprawić?
nospor
Komunikat bledu jest wyraźny. Przeczytaj, poszukaj. No zrobze czlowieku cos wkoncu sam wink.gif
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.