Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]query błąd
Forum PHP.pl > Forum > Przedszkole
Kaarpiik
witam =) robie sobie narazie logowanie do serwisu. jest formularz do rejestracji wpisuje email nazwe_uz haslo powtarzam haslo i wyskakuje mi błąd:
"Fatal error: Call to a member function mysql_query() on a non-object in C:\Program Files\WebServ\httpd\funkcje_uwierz.php on line 13"
to jest ta linijka:
$wynik = $lacz->mysql_query("select * from uzytkownik where nazwa_uz='$nazwa_uz'");

przedstawiam Wam moje dwa pliki:

funkcje_bazy.php
  1. <?php
  2. function lacz_bd()
  3. {
  4.  $wynik = mysql_connect('localhost', 'root', 'sialala', 'baza'); 
  5.  if (!$wynik)
  6. echo('Połączenie z serwerem bazy danych nie powiodło się');
  7.  else
  8. return $wynik;
  9. }
  10. ?>

oraz funkcje_uwierz.php
  1. <?php
  2.  
  3. require_once('funkcje_bazy.php');
  4.  
  5. function rejestruj($nazwa_uz, $email, $haslo)
  6. // zarejestrowanie nowej osoby w bazie danych
  7. // zwraca true lub komunikat o błędzie
  8. {
  9.  // połączenie z bazą danych
  10. $lacz = lacz_bd();
  11.  
  12. // sprawdzenie, czy nazwa użytkownika nie powtarza się
  13. $wynik = $lacz->mysql_query("select * from uzytkownik where nazwa_uz='$nazwa_uz'"); 
  14. if (!$wynik)
  15.  throw new Exception('Wykonanie zapytania nie powiodło się.');
  16. if ($lacz->num_rows>0) 
  17.  throw new Exception('Nazwa użytkownika zajęta — proszę wrócić i wybrać inną.');
  18.  
  19. // jeżeli wszystko w porządku, umieszczenie w bazie danych
  20. $wynik = $lacz->query("insert into uzytkownik values 
  21.  ('$nazwa_uz', sha1('$haslo'), '$email')");
  22. if (!$wynik)
  23. throw new Exception('Rejestracja w bazie danych niemożliwa — proszę spróbować później.');
  24.  
  25. return true;
  26. }
  27.  
  28. function loguj($nazwa_uz, $haslo)
  29. // sprawdzenie nazwy użytkownika i hasła w bazie danych
  30. // jeżeli się zgadza, zwraca true
  31. // jeżeli nie, wyrzuca wyjątek
  32. {
  33. // połączenie z bazą danych
  34. $lacz = lacz_bd();
  35.  
  36. // sprawdzenie unikatowości nazwy użytkownika
  37. $wynik = $lacz->query("select * from uzytkownik 
  38.  where nazwa_uz='$nazwa_uz'
  39.  and haslo = sha1('$haslo')");
  40. if (!$wynik)
  41.  throw new Exception('Logowanie nie powiodło się.');
  42.  
  43. if ($wynik->num_rows>0)
  44.  return true;
  45. else 
  46.  throw new Exception('Logowanie nie powiodło się.');
  47. }
  48.  
  49. function sprawdz_prawid_uzyt()
  50. // sprawdzenie czy użytkownik jest zalogowany i powiadomienie go jeżeli nie
  51. {
  52. if (isset($_SESSION['prawid_uzyt']))
  53. {
  54. echo 'Zalogowano jako '.stripslashes($_SESSION['prawid_uzyt']).'.';
  55. echo '<br />';
  56. }
  57. else
  58. {
  59.  // nie jest zalogowany 
  60.  do_html_heading('Problem:');
  61.  echo 'Brak zalogowania.<br />';
  62.  tworz_HTML_URL('logowanie.php', 'Logowanie');
  63.  tworz_stopke_html();
  64.  exit;
  65. }
  66. }
  67.  
  68. function zmien_haslo($nazwa_uz, $stare_haslo, $nowe_haslo)
  69. // zmiana hasła użytkownika ze stare_haslo na nowe_haslo
  70. // zwraca true lub false
  71. {
  72. // jeżeli stare hasło jest prawidłowe zmiana nowe_haslo i zwrócenie true
  73. // w przeciwnym wypadku wyrzucenie wyjątku
  74. loguj($nazwa_uz, $stare_haslo);
  75. $lacz = lacz_bd();
  76. $wynik = $lacz->query("update uzytkownik
  77.  set haslo = sha1('$nowe_haslo')
  78.  where nazwa_uz = '$nazwa_uz'");
  79. if (!$wynik)
  80. throw new Exception('Zmiana hasła nie powiodła się.');
  81. else
  82. return true; // zmiana udana
  83. }
  84.  
  85. function pobierz_losowe_slowo($dlugosc_min, $dlugosc_max)
  86. //pobranie losowego słowa ze słownika o określonej długości zwrócenie go
  87. {
  88. // generowanie losowego słowa
  89. $slowo = '';
  90. // tę ścieżkę należy dostosować do ustawień własnego systemu
  91. $slownik = '/usr/dict/words'; // słownik ispell
  92. $wp = @fopen($slownik, 'r');
  93. if(!$wp)
  94. return false; 
  95. $wielkosc = filesize($slownik);
  96.  
  97. // przejście do losowej pozycji w słowniku
  98. srand ((double) microtime() * 1000000);
  99. $losowa_pozycja = rand(0, $wielkosc);
  100. fseek($wp, $losowa_pozycja);
  101.  
  102. // pobranie ze słownika następnego pełnego słowa o właściwej długości
  103. while (strlen($slowo)< $dlugosc_min || strlen($slowo)>$dlugosc_max || strstr($slowo, "'"))
  104. {
  105.  if (feof($wp))  
  106. fseek($wp, 0); // jeżeli koniec pliku, przeskocz na początek
  107.  $slowo = fgets($wp, 80); // przeskoczenie pierwszego słowa bo może być niepełne
  108.  $slowo = fgets($wp, 80); // potencjalne hasło
  109. };
  110. $slowo=trim($slowo); // obcięcie początkowego \n z funkcji fgets
  111. return $slowo;
  112. }
  113.  
  114. function ustaw_haslo($nazwa_uz)
  115. // ustawienie hasła użytkownika na losową wartość 
  116. // zwraca nowe hasło lub false w przypadku niepowodzenia
  117. { 
  118. // pobranie losowego słowa ze słownika o długości pomiędzy 6 i 13 znaków
  119. $nowe_haslo = pobierz_losowe_slowo(6, 13);
  120.  
  121. if($nowe_haslo==false)
  122. throw new Exception('Wygenerowanie nowego hasła nie powiodło się.');
  123. // dodanie liczby pomiędzy 0 i 999 w celu stworzenia lepszego hasła
  124. srand ((double) microtime() * 1000000);
  125. $losowa_liczba = rand(0, 999); 
  126. $nowe_haslo .= $losowa_liczba;
  127.  
  128. // ustawienie nowego hasła w bazie danych lub zwrócenie false
  129. $lacz = lacz_bd();
  130. return false;
  131. $wynik = $lacz->query("update uzytkownik
  132.  set haslo = sha1('$nowe_haslo')
  133.  where nazwa_uz = '$nazwa_uz'");
  134. if (!$wynik)
  135. throw new Exception('Zmiana hasła nie powiodła się.'); // hasło nie zmienione
  136. else
  137. return $nowe_haslo; // hasło zmienione pomyślnie
  138. }
  139.  
  140. function powiadom_haslo($nazwa_uz, $haslo)
  141. // powiadomienie użytkownika o zmianie hasła
  142. {
  143. $lacz = lacz_bd();
  144. $wynik = $lacz->query("select email from uzytkownik
  145.  where nazwa_uz='$nazwa_uz'");
  146. if (!$wynik)
  147. {
  148. throw new Exception('Nie znaleziono adresu e-mail');
  149. }
  150. else if ($wynik->num_rows==0)
  151. {
  152. throw new Exception('Nie znaleziono adresu e-mail'); // nazwy użytkownika nie ma w bazie danych
  153. }
  154. else
  155. {
  156. $wiersz = $wynik->fetch_object();
  157. $email = $wiersz->email;
  158. $od = "From: obsluga@zakladkaphp r\n";
  159. $wiad = "Hasło systemu ZakładkaPHP zostało zmienione na $haslo r\n"
  160. ."Proszę zmienić je przy następnym logowaniu. r\n";
  161.  
  162.  
  163. if (mail($email, 'Informacja o logowaniu ZakładkaPHP', $wiad, $od))
  164. return true;
  165. else
  166. throw new Exception('Wysłanie e-maila nie powiodło się');
  167. }
  168. } 
  169.  
  170. ?>


i nie wiem o co chodzi =/
próbowałem wpisac samo query i też nie działało...
wersja php 5.2.5
wersja mysql 5.0.45

jestem bardzo początkujący więc prosze o podpowiedz biggrin.gif

pyro
ale co ty wogóle robisz.

1. błąd mówi sam za siebie.
2. skad ci sie wzielo $lacz->mysql_query, $lacz nie jest zadnym obiektem i nic z tych rzeczy
elemek
powinno być:

  1. <?php
  2. $db = $lacz();
  3. $wynik = mysql_query("update uzytkownik set haslo = sha1('$nowe_haslo') where nazwa_uz = '$nazwa_uz'", $db);
  4. ?>


a nie:
  1. <?php
  2. $wynik = $lacz->query("update uzytkownik
  3.  set haslo = sha1('$nowe_haslo')
  4.  where nazwa_uz = '$nazwa_uz'");
  5. ?>
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.