Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Logowanie + pobieranie danyc o użytkowniku z bazy
Forum PHP.pl > Forum > Przedszkole
DeathLess
Witam...

Posiadam taki skrypcik do logowania się:

  1. <?php
  2. mysql_connect("localhost","*********","**********");
  3. mysql_select_db("nazwa_bazy");
  4.  
  5. if(isset($_SESSION['zalogowany'])) {
  6.  
  7.  
  8. }
  9. else{
  10.  
  11. if(isset($_POST['wyslij'])) {
  12.  
  13.  
  14. if(mysql_num_rows(mysql_query("SELECT kod_lokalu, pass
  15. FROM czlonek WHERE kod_lokalu = '".$_POST['kod_lokalu']."'
  16. && pass = '".$_POST['pass']."' ")) > 0) {
  17.  
  18.  
  19. if(mysql_num_rows(mysql_query("SELECT kod_lokalu FROM czlonek
  20. WHERE kod_lokalu = '".$_POST['kod_lokalu']."'
  21. && pass = '".$_POST['pass']."' ")) > 0 ) {
  22.  
  23.  
  24.  
  25. $_SESSION['zalogowany'] = true;
  26. $_SESSION['kod_lokalu'] = $_POST['kod_lokalu'];
  27. $_SESSION['pass'] = $_POST['pass'];
  28. $_SESSION['saldo'] = $_POST['saldo'];
  29. $_SESSION['saldo_woda'] = $_POST['saldo_woda'];
  30.  
  31. header("Location: e-bom_logtest.php");
  32.  
  33.  
  34. }
  35. else {
  36.  
  37. echo "Złe hasło, proszę spróbować ponownie";
  38. }
  39. } else {
  40. echo "Nie ma takiego użytkownika";
  41. }
  42. } else {
  43.  
  44. ?>


Wszystko działa...
Jednak potrzebuję aby ten skrypt poza pobieraniem loginu i hasla i zapisywaniu ich w sesji pobierał dane z rekordów saldo i saldo_woda....


Prosił bym o pomoc w tej sprawie...
Jeśli juz taki temat jest to przepraszam za dubla...

Pozdrawiam...
blahy
wg mnie to ten skrypt srednio dziala. taka sama fraza where sprawdzasz raz czy istneje uzytkownik a pozniej czy haslo jest dobre? saldo i saldo_woda chcesz pobrac z bazy? to jak wszystko jest ok to wykonaj zapytanie do bazy i zapisz otrzymane wyniki do sesji. w tym momencie zapisujesz saldo i saldo_woda z formularza (masz tam takie pola?). nie sprawdzasz formularza i danych do niego wprowadzonych
DeathLess
Cytat(blahy @ 27.07.2010, 15:54:40 ) *
saldo i saldo_woda chcesz pobrac z bazy?


Tak...

Nie do końca Cię rozumiem...haha.gif

Ja ten skrypt znalazłem i przerobiłem pod siebie...
To mógłbyś mi napisać jak takie zapytanie ma wyglądać...
Coś w tym stylu:

  1. if(mysql_num_rows(mysql_query("SELECT saldo, saldo_woda
  2. FROM czlonek WHERE kod_lokalu = '".$_POST['kod_lokalu']."') {


Jeśli nie to proszę o podpowiedź...
Neeke
Jeżeli masz relacyjną baze danych to wystarczy wykonać takie zapytanie:

http://dev.mysql.com/doc/refman/5.0/en/lef...timization.html


A jeżeli masz to wszystko w jednej tabeli to nie łatwiej

Jest wykonać jedno zapytanioe do bazy danych a później wykonywać sprawdzenie?

dodatkowo w jednym zapytaniu możesz pobrac wszytskie interesujące cię informacje
DeathLess
Cytat(Neeke @ 27.07.2010, 18:40:54 ) *
A jeżeli masz to wszystko w jednej tabeli to nie łatwiej


Tak mam wszystko w jednej tabeli...

Teraz mam pytanko co jest źle w tym zapisie...questionmark.gif
  1. $res = mysql_query("SELECT saldo, saldo_woda FROM członek
  2. WHERE kod_lokalu = '".$_POST['kod_lokalu']."' && pass = '".$_POST['pass']."' ");
  3.  
  4.  
  5. $_SESSION['zalogowany'] = true;
  6. $_SESSION['kod_lokalu'] = $_POST['kod_lokalu'];
  7. $_SESSION['pass'] = $_POST['pass'];
  8. $_SESSION['saldo'] = $POST['saldo'];
  9. $_SESSION['saldo_woda'] = $POST['saldo_woda'];


Problem jest taki że nie pobiera mi danych z bazy...

I na wyświetlanie info na stronie mam taki kod:

  1. <?php
  2.  
  3. if (isset($_SESSION['zalogowany'])) {
  4. $kod_lokalu = trim($_SESSION['kod_lokalu']);
  5. $saldo = trim($_SESSION['saldo']);
  6. $saldo_woda = trim($_SESSION['saldo_woda']);
  7. print("Jesteś zalogowany jako $kod_lokalu.<br />");
  8. print("Twoje salodo za ekspoloatację wynosi: $saldo<br />");
  9. print("Twoje salodo za wodę wynosi: $saldo_woda<br />");
  10. }
  11.  
  12. ?>

dg2001
  1. $res = mysql_query("SELECT saldo, saldo_woda FROM członek WHERE kod_lokalu = '".$_POST['kod_lokalu']."' && pass = '".$_POST['pass']."' ");
  2.  
  3. //brakuje ci tego
  4. $dane = mysql_fetch_assoc($res);
  5.  
  6. $_SESSION['zalogowany'] = true;
  7. $_SESSION['kod_lokalu'] = $_POST['kod_lokalu'];
  8. $_SESSION['pass'] = $_POST['pass'];
  9. $_SESSION['saldo'] = $dane['saldo'];
  10. $_SESSION['saldo_woda'] = $dane['saldo_woda'];


I przydało by cię się filtrowanie tych danych pobieranych z $_POST[''] winksmiley.jpg
DeathLess
Cos jest nie tak wyskakuje mi taki blad:

Kod
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in logowanie.php on line 28


blahy
w takim razie samo zapytanie do bazy jest zle. po 1 sprawdz czy otrzymujesz jeden wynik za pomoca mysql_num_rows. a jeszcze wczesniej odpal myadmina i wpisz to zapytanie z dobrymi danymi i zobacz jaki dostaniesz wynik.
dg2001
  1. $res = mysql_query("SELECT saldo, saldo_woda FROM członek WHERE kod_lokalu = '".$_POST['kod_lokalu']."' && pass = '".$_POST['pass']."' ");


Jak dobrze zauważyłem tabela to "CZŁONEK" worriedsmiley.gif a czy w MySql nie można stosować polskich znaczków przy nazewnictwie tabel haha.gif nie machło ci się coś z nazwą tabeli ?

może tak
  1. $res = mysql_query("SELECT saldo, saldo_woda FROM czlonek WHERE kod_lokalu = '".$_POST['kod_lokalu']."' AND pass = '".$_POST['pass']."' LIMIT 1 ");


LIMIT 1 na końcu dlatego że z założenia i tak się nie pobierze więcej niż 1 usera worriedsmiley.gif a bezpieczniejsze worriedsmiley.gif
DeathLess
Juz nie mam zadnego bledu...ale samo wyświetlanie mi nie działa...

Moze tu jest cos zle...

  1. <?php
  2.  
  3. if (isset($_SESSION['zalogowany'])) {
  4. $kod_lokalu = trim($_SESSION['kod_lokalu']);
  5. $saldo = trim($_SESSION['saldo']);
  6. $saldo_woda = trim($_SESSION['saldo_woda']);
  7. print("Jesteś zalogowany jako $kod_lokalu.<br />");
  8. print("Twoje salodo za ekspoloatację wynosi: $saldo<br />");
  9. print("Twoje salodo za wodę wynosi: $saldo_woda<br />");
  10. }
  11.  
  12. ?>


Napisalem juz taki warunek:
  1. $res = mysql_query("SELECT saldo, saldo_woda FROM czlonek WHERE kod_lokalu = 'test' AND pass = 'test' LIMIT 1 ");;
  2.  
  3.  
  4. $dane = mysql_query($res);


i też nic nie wyświetla...

Dodałem kod ktory wyswietla mi wszystkie dane sesji i dostalem to:

Kod
Array ( [zalogowany] => 1 [kod_lokalu] => test [pass] => test [saldo] => [saldo_woda] => )


czyli jednak samo dodawanie do sesji nie dziala...

Przekazywane jest tylko login i pass a pozostale dane nie...

Jak to naprawic...questionmark.gif
dg2001
  1. $kod_lokalu = trim($_SESSION['kod_lokalu']);
  2. $saldo = trim($_SESSION['saldo']);
  3. $saldo_woda = trim($_SESSION['saldo_woda']);


A dlaczego traktujesz trim $_SESSION ? worriedsmiley.gif raczej powinieneś filtrować dane z $_POST a nie z $_SESSION worriedsmiley.gif

  1. $res = mysql_query("SELECT saldo, saldo_woda FROM czlonek WHERE kod_lokalu = 'test' AND pass = 'test' LIMIT 1 ");;
  2.  
  3. //żeby ci działało musisz przetworzyć te dane, same się nie wyciągną z zmiennej $dane
  4. //czyli nie tak $dane = mysql_query($res);
  5. //a tak
  6. $dane = mysql_fetch_assoc($res);
  7.  
  8. //a później
  9. echo $dane['saldo'].' '.$dane['saldo_woda'];
  10.  
  11. //a żeby działała ci sesja to musisz te wartości wrzucić w sesje, czyli
  12. $_SESSION['saldo'] = $dane['saldo'];
  13. $_SESSION['saldo_woda'] = $dane['saldo_woda'];


Spróbuj tak jak wyżej czy ci się wyświetlą te wartości.
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.