Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]Co źle w skrypcie?, Prosze o Pomoc
wolacinio
post 15.07.2009, 16:30:03
Post #1





Grupa: Zarejestrowani
Postów: 85
Pomógł: 1
Dołączył: 2.06.2009

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


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
Go to the top of the page
+Quote Post
erix
post 15.07.2009, 16:40:47
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Co w źle w tytule?

edit: otwieram


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
wolacinio
post 16.07.2009, 09:04:05
Post #3





Grupa: Zarejestrowani
Postów: 85
Pomógł: 1
Dołączył: 2.06.2009

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


Prosze o pomoc
Go to the top of the page
+Quote Post
pyro
post 16.07.2009, 09:08:23
Post #4





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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?

Ten post edytował pyro 16.07.2009, 09:14:36


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
wolacinio
post 16.07.2009, 09:15:52
Post #5





Grupa: Zarejestrowani
Postów: 85
Pomógł: 1
Dołączył: 2.06.2009

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


  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

Ten post edytował wolacinio 16.07.2009, 09:19:31
Go to the top of the page
+Quote Post
Spawnm
post 16.07.2009, 09:19:12
Post #6





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Proszę poprawić BBcode ,
jeśli dajesz kod php używaj bbcode dla php , nie dla sql , nie dla html !
Go to the top of the page
+Quote Post
wolacinio
post 16.07.2009, 09:21:08
Post #7





Grupa: Zarejestrowani
Postów: 85
Pomógł: 1
Dołączył: 2.06.2009

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


to co mam dać?
Go to the top of the page
+Quote Post
blooregard
post 16.07.2009, 09:25:36
Post #8


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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.


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
wolacinio
post 16.07.2009, 09:29:21
Post #9





Grupa: Zarejestrowani
Postów: 85
Pomógł: 1
Dołączył: 2.06.2009

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


  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();

Ten post edytował wolacinio 16.07.2009, 09:31:23
Go to the top of the page
+Quote Post
blooregard
post 16.07.2009, 09:37:44
Post #10


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




A co to jest to lacz_bd() ? Klasa ? Funkcja ?


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
wolacinio
post 16.07.2009, 09:48:07
Post #11





Grupa: Zarejestrowani
Postów: 85
Pomógł: 1
Dołączył: 2.06.2009

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


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. ?>
Go to the top of the page
+Quote Post
pyro
post 16.07.2009, 09:51:30
Post #12





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
wolacinio
post 16.07.2009, 09:54:58
Post #13





Grupa: Zarejestrowani
Postów: 85
Pomógł: 1
Dołączył: 2.06.2009

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


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. ?>
Go to the top of the page
+Quote Post
blooregard
post 16.07.2009, 10:03:16
Post #14


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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.

Ten post edytował blooregard 16.07.2009, 10:03:51


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
wolacinio
post 16.07.2009, 10:10:31
Post #15





Grupa: Zarejestrowani
Postów: 85
Pomógł: 1
Dołączył: 2.06.2009

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


nadal bład sad.gif chce moge podesłac ci strone
Go to the top of the page
+Quote Post
pyro
post 16.07.2009, 10:20:24
Post #16





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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.

Ten post edytował pyro 16.07.2009, 10:21:51


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
blooregard
post 16.07.2009, 10:31:46
Post #17


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
wolacinio
post 16.07.2009, 10:58:46
Post #18





Grupa: Zarejestrowani
Postów: 85
Pomógł: 1
Dołączył: 2.06.2009

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


wychodzi nadal bład

Fatal error: Class 'mysql' not found in C:\Program Files\WebServ\httpd\laa\funkcje_bazy.php on line 5
Go to the top of the page
+Quote Post
erix
post 16.07.2009, 11:32:21
Post #19





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Popatrz uważnie na kod, który podał ~pyro.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
wolacinio
post 16.07.2009, 12:27:47
Post #20





Grupa: Zarejestrowani
Postów: 85
Pomógł: 1
Dołączył: 2.06.2009

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


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
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: 16.07.2025 - 05:21