Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Co źle w skrypcie?
Forum PHP.pl > Forum > Przedszkole
wolacinio
witam mam problem z pewnym kodem

oto on Fatal error: Call to a member function query() on a non-object in C:\Program Files\WebServ\httpd\laa\funkcje_uwierz.php on line 37


a plik funkcje_uwierz to

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


Oto laczenie z baza danych zmieniona przezmnie
  1. <?php
  2.  
  3. FUNCTION lacz_bd()
  4. {
  5. $wynik = mysql_connect('localhost', 'root', 'root', 'zakladki');
  6. IF (!$wynik)
  7. throw new Exception('Połączenie z serwerem bazy danych nie powiodło się');
  8. else
  9. RETURN $wynik;
  10.  
  11. }
  12.  
  13. ?>


a tak wygladała przed przeróbką

  1. <?php
  2.  
  3. FUNCTION lacz_bd()
  4. {
  5. $wynik = new mysqli_connect('localhost', 'uzyt_zak', 'haslo', 'zakladki');
  6. IF (!$wynik)
  7. throw new Exception('Połączenie z serwerem bazy danych nie powiodło się');
  8. else
  9. RETURN $wynik;
  10. }
  11.  
  12. ?>



Prosze o Pomoc winksmiley.jpg
erix
Co w źle w tytule?

edit: otwieram
wolacinio
Prosze o pomoc
pyro
Zmień tagi SQL na PHP, żeby było czytelniej i będzie widać która to ta 37 linijka. Wtedy ktoś pomoże.

//add

Uno momento. Nie wiem jak to zrobiłem, ale nie czytając kodu, przewijając stronę do góry obiło mi się o oczy tongue.gif:

Cytat
$wynik = mysql_connect('localhost', 'root', 'root', 'zakladki');


mysql_connect to nie mysqli_connect. W nim się nie podaje nazwy bazy danych. Pewnie chodziło Ci o mysqli_connect();

// edit

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



37 linika to $wynik = $lacz->query("select * from uzytkownik

nadal nie wiem jak zrobic zeby było pokazane liniki?


Prosze bardzo

pyro nie rozumie tego
  1. mysql_connect to nie mysqli_connect. W nim się nie podaje nazwy bazy danych. Pewnie chodziło Ci o mysqli_connect();


mam zmienic na mysqli_connect questionmark.gif
Spawnm
Proszę poprawić BBcode ,
jeśli dajesz kod php używaj bbcode dla php , nie dla sql , nie dla html !
wolacinio
to co mam dać?
blooregard
Cytat
$lacz = lacz_bd();

A nie powinno być $lacz = new lacz_bd(); ?

Tu wywołujesz metodę klasy:
Cytat
$wynik = $lacz->query

Więc $lacz to obiekt klasy lacz_bd(), tak?

Dlatego wywala Ci błąd, że używasz metody query() na czymś, co nie jest obiektem, bo go nie tworzysz prawidłowo, właściwie wogóle go nie tworzysz.
wolacinio
  1. $łacz to zmienna która odnosi sie do lacz_bd

to co mam zrobić ?


zmieniłem na $lacz = new lacz_bd(); i wyszedł taki bład

  1. Fatal error: Class 'lacz_bd' not found in C:\Program Files\WebServ\httpd\p\rozdzial_26\funkcje_uwierz.php on line 34


34 linika to $lacz = new lacz_bd();
blooregard
A co to jest to lacz_bd() ? Klasa ? Funkcja ?
wolacinio
funkcja

tu masz dokładnie
  1. <?php
  2.  
  3. function lacz_bd()
  4. {
  5.   $wynik = new mysqli_connect('localhost', 'uzyt_zak', 'haslo', 'zakladki');
  6.   if (!$wynik)
  7.      throw new Exception('Połšczenie z serwerem bazy danych nie powiodło się');
  8.   else
  9.      return $wynik;
  10. }
  11.  
  12. ?>
pyro
Cytat(blooregard @ 16.07.2009, 10:37:44 ) *
A co to jest to lacz_bd() ? Klasa ? Funkcja ?


blooregard, nie wiem jak ty to wypatrzyłeś, że powinno być new lacz_bd(); wstydnis.gif

Powinieneś zmienić na mysqli. Poza tym nie tag HTML, a PHP

NIE

[ html]
[/html]

tylko

[ php]
[/php]

bo kod jest nieczytelny
wolacinio
to powiedz pyro jak ma być

oto poprawiony kod winksmiley.jpg

  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->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 where nazwa_uz='$nazwa_uz' and haslo = sha1('$haslo')");
  38. if (!$wynik)
  39. throw new Exception('Logowanie nie powiodło się.');
  40.  
  41. if ($wynik->num_rows>0)
  42. return true;
  43. else
  44. throw new Exception('Logowanie nie powiodło się.');
  45. }
  46.  
  47. function sprawdz_prawid_uzyt()
  48. // sprawdzenie czy użytkownik jest zalogowany i powiadomienie go jeżeli nie
  49. {
  50. if (isset($_SESSION['prawid_uzyt']))
  51. {
  52. echo 'Zalogowano jako '.stripslashes($_SESSION['prawid_uzyt']).'.';
  53. echo '<br />';
  54. }
  55. else
  56. {
  57. // nie jest zalogowany
  58. do_html_heading('Problem:');
  59. echo 'Brak zalogowania.<br />';
  60. tworz_HTML_URL('logowanie.php', 'Logowanie');
  61. tworz_stopke_html();
  62. }
  63. }
  64.  
  65. function zmien_haslo($nazwa_uz, $stare_haslo, $nowe_haslo)
  66. // zmiana hasła użytkownika ze stare_haslo na nowe_haslo
  67. // zwraca true lub false
  68. {
  69. // jeżeli stare hasło jest prawidłowe zmiana nowe_haslo i zwrócenie true
  70. // w przeciwnym wypadku wyrzucenie wyjątku
  71. loguj($nazwa_uz, $stare_haslo);
  72. $lacz = lacz_bd();
  73. $wynik = $lacz->query("update uzytkownik
  74. set haslo = sha1('$nowe_haslo')
  75. where nazwa_uz = '$nazwa_uz'");
  76. if (!$wynik)
  77. throw new Exception('Zmiana hasła nie powiodła się.');
  78. else
  79. return true; // zmiana udana
  80. }
  81.  
  82. function pobierz_losowe_slowo($dlugosc_min, $dlugosc_max)
  83. //pobranie losowego słowa ze słownika o określonej długości zwrócenie go
  84. {
  85. // generowanie losowego słowa
  86. $slowo = '';
  87. // tę ścieżkę należy dostosować do ustawień własnego systemu
  88. $slownik = '/usr/dict/words'; // słownik ispell
  89. $wp = @fopen($slownik, 'r');
  90. if(!$wp)
  91. return false;
  92. $wielkosc = filesize($slownik);
  93.  
  94. // przejście do losowej pozycji w słowniku
  95. srand ((double) microtime() * 1000000);
  96. $losowa_pozycja = rand(0, $wielkosc);
  97. fseek($wp, $losowa_pozycja);
  98.  
  99. // pobranie ze słownika następnego pełnego słowa o właściwej długości
  100. while (strlen($slowo)< $dlugosc_min || strlen($slowo)>$dlugosc_max || strstr($slowo, "'"))
  101. {
  102. if (feof($wp))
  103. fseek($wp, 0); // jeżeli koniec pliku, przeskocz na początek
  104. $slowo = fgets($wp, 80); // przeskoczenie pierwszego słowa bo może być niepełne
  105. $slowo = fgets($wp, 80); // potencjalne hasło
  106. };
  107. $slowo=trim($slowo); // obcięcie początkowego \n z funkcji fgets
  108. return $slowo;
  109. }
  110.  
  111. function ustaw_haslo($nazwa_uz)
  112. // ustawienie hasła użytkownika na losową wartość
  113. // zwraca nowe hasło lub false w przypadku niepowodzenia
  114. {
  115. // pobranie losowego słowa ze słownika o długości pomiędzy 6 i 13 znaków
  116. $nowe_haslo = pobierz_losowe_slowo(6, 13);
  117.  
  118. if($nowe_haslo==false)
  119. throw new Exception('Wygenerowanie nowego hasła nie powiodło się.');
  120. // dodanie liczby pomiędzy 0 i 999 w celu stworzenia lepszego hasła
  121. srand ((double) microtime() * 1000000);
  122. $losowa_liczba = rand(0, 999);
  123. $nowe_haslo .= $losowa_liczba;
  124.  
  125. // ustawienie nowego hasła w bazie danych lub zwrócenie false
  126. $lacz = lacz_bd();
  127. return false;
  128. $wynik = $lacz->query("update uzytkownik
  129. set haslo = sha1('$nowe_haslo')
  130. where nazwa_uz = '$nazwa_uz'");
  131. if (!$wynik)
  132. throw new Exception('Zmiana hasła nie powiodła się.'); // hasło nie zmienione
  133. else
  134. return $nowe_haslo; // hasło zmienione pomyślnie
  135. }
  136.  
  137. function powiadom_haslo($nazwa_uz, $haslo)
  138. // powiadomienie użytkownika o zmianie hasła
  139. {
  140. $lacz = lacz_bd();
  141. $wynik = $lacz->query("select email from uzytkownik where nazwa_uz='$nazwa_uz'");
  142. if (!$wynik)
  143. {
  144. throw new Exception('Nie znaleziono adresu e-mail');
  145. }
  146. else if ($wynik->num_rows==0)
  147. {
  148. throw new Exception('Nie znaleziono adresu e-mail'); // nazwy użytkownika nie ma w bazie danych
  149. }
  150. else
  151. {
  152. $wiersz = $wynik->fetch_object();
  153. $email = $wiersz->email;
  154. $od = "From: obsluga@zakladkaphp r\n";
  155. $wiad = "Hasło systemu ZakładkaPHP zostało zmienione na $haslo r\n"
  156. ."Proszę zmienić je przy następnym logowaniu. r\n";
  157.  
  158.  
  159. if (mail($email, 'Informacja o logowaniu ZakładkaPHP', $wiad, $od))
  160. return true;
  161. else
  162. throw new Exception('Wysłanie e-maila nie powiodło się');
  163. }
  164. }
  165.  
  166. ?>
blooregard
Cytat
blooregard, nie wiem jak ty to wypatrzyłeś, że powinno być new lacz_bd();

Jak to jak wypatrzyłem?

Po tym:
Cytat
$wynik = $lacz->query("select * from uzytkownik where nazwa_uz='$nazwa_uz'");

i tym:
Cytat
Fatal error: Call to a member function query() on a non-object in C:\Program Files\WebServ\httpd\laa\funkcje_uwierz.php on line 37


O ile wiem, a może się mylę, jeśli tak, to mnie popraw - błąd w linijce 37, czyli tej:
Cytat
37 linika to $wynik = $lacz->query("select * from uzytkownik

wskazuje na odwołanie do metody obiektu, którym $lacz nie jest.
wolacinio
nadal bład sad.gif chce moge podesłac ci strone
pyro
Cytat(blooregard @ 16.07.2009, 11:03:16 ) *
Jak to jak wypatrzyłem?

Po tym:

i tym:


O ile wiem, a może się mylę, jeśli tak, to mnie popraw - błąd w linijce 37, czyli tej:

wskazuje na odwołanie do metody obiektu, którym $lacz nie jest.


To chyba oczywiste. Widziałeś kiedyś, żeby mysql_connect zwracał obiekt? Bo ja nigdy.

wolacinio, a zmieniłeś spowrotem na mysqli_connect()?

// edit

Przyjrzyj się następnym razem swojemu kodowi:

Powinno być tak:

  1. <?php
  2.  
  3. function lacz_bd()
  4. {
  5. $wynik = new mysqli('localhost', 'uzyt_zak', 'haslo', 'zakladki');
  6. if (!$wynik)
  7. throw new Exception('Połączenie z serwerem bazy danych nie powiodło się');
  8. else
  9. return $wynik;
  10. }
  11.  
  12. ?>


Zmieniłem new mysqli_connect() na new mysqli.

Spróbuj z tym czy działa.
blooregard
@Pyro: Dobra, mój błąd, nie widziałem tej definicji f-cji lacz_db() u Ciebie ohmy.gif
Tak to jest jak się spi po 2 godziny na dobę. Widzę, co chcę widzieć, a nie to, co jest.
wolacinio
wychodzi nadal bład

Fatal error: Class 'mysql' not found in C:\Program Files\WebServ\httpd\laa\funkcje_bazy.php on line 5
erix
Popatrz uważnie na kod, który podał ~pyro.
wolacinio
no to mówie

nadal bład jak zmieniłem tak jak mówił pyro

Fatal error: Class 'mysqli' not found in C:\Program Files\WebServ\httpd\laa\funkcje_bazy.php on line 5
Fifi209
Cytat(wolacinio @ 16.07.2009, 12:27:47 ) *
no to mówie

nadal bład jak zmieniłem tak jak mówił pyro

Fatal error: Class 'mysqli' not found in C:\Program Files\WebServ\httpd\laa\funkcje_bazy.php on line 5


Dobra pokaż te kody teraz po przeróbkach bo inaczej nikt się z Tobą nie dogada.
erix
Cytat
Fatal error: Class 'mysqli' not found in C:\Program Files\WebServ\httpd\laa\funkcje_bazy.php on line 5

A masz włączone rozszerzenie mysqli w php.ini?
pyro
Cytat(wolacinio @ 16.07.2009, 13:27:47 ) *
no to mówie

nadal bład jak zmieniłem tak jak mówił pyro

Fatal error: Class 'mysqli' not found in C:\Program Files\WebServ\httpd\laa\funkcje_bazy.php on line 5


Przed chwilą mówiłeś

Cytat
Fatal error: Class 'mysql' not found in C:\Program Files\WebServ\httpd\laa\funkcje_bazy.php on line 5


między mysql a mysqli jest roznica. Jeżeli nie działa, to znaczy, że masz prawdopodobnie wyłączone rozszerzenie MySQLi
wolacinio
Cytat(pyro @ 16.07.2009, 14:32:48 ) *
Przed chwilą mówiłeś
między mysql a mysqli jest roznica. Jeżeli nie działa, to znaczy, że masz prawdopodobnie wyłączone rozszerzenie MySQLi


nom nie mam żadnego rozszerzenia php.ini czy jakies mysqli nic takiego nie robiłem
Fifi209
Cytat(wolacinio @ 16.07.2009, 14:39:23 ) *
nom nie mam żadnego rozszerzenia php.ini czy jakies mysqli nic takiego nie robiłem


Najpierw poczytaj co to php.ini a potem gadaj pierdoły. Wykaż chęci.
wolacinio
dobra przeczytam o tym php.ini i rozszerzeniu MySQLi

ale nadal prosze o pomoc
erix
Pomoc w czym?

Mamy pokazać, co i jak przeklepać? A może jeszcze za Ciebie zrobić?

Wyluzuj, tego jest tyle na Sieci, że wystarczy poszukać...
wolacinio
dobra moze mnie poniosło winksmiley.jpg sorki wam

szukałem ale to nie jest takie łatwe
ale nie bede siedziec wiec wezme sie za szukanie

edit://

zrobilem tak ja tu

ustawienia pliku .ini


tylko jedynie tego nie zrozumiałem

Ostatnim krokiem jest podłączenie PHP do serwera Apache. Jeżeli zamierzamy zrobić to jako CGI, na koniec pliku konfiguracyjnego Apache dopisujemy:
ScriptAlias /php5/ "D:/Serwer/php5/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php5/php-cgi.exe"

W przypadku modułu linijek jest nieco mniej:
LoadModule php5_module "D:/Serwer/php5/php5apache2_2.dll"
AddType application/x-httpd-php .php

Możesz także dodać jeszcze jedną linijkę:
PHPIniDir "E:/jakis_katalog"


ref

ref

ref
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.