Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Co źle w skrypcie?, Prosze o Pomoc
wolacinio
post
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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
erix
post
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
Go to the top of the page
+Quote Post
wolacinio
post
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
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 (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post
wolacinio
post
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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Ten post edytował wolacinio 16.07.2009, 09:19:31
Go to the top of the page
+Quote Post
Spawnm
post
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
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
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.
Go to the top of the page
+Quote Post
wolacinio
post
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
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 ?
Go to the top of the page
+Quote Post
wolacinio
post
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
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(); (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif)

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

NIE

[ html]
[/html]

tylko

[ php]
[/php]

bo kod jest nieczytelny
Go to the top of the page
+Quote Post
wolacinio
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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
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
Go to the top of the page
+Quote Post
wolacinio
post
Post #15





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

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


nadal bład (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) chce moge podesłac ci strone
Go to the top of the page
+Quote Post
pyro
post
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
Go to the top of the page
+Quote Post
blooregard
post
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 (IMG:http://forum.php.pl/style_emoticons/default/ohmy.gif)
Tak to jest jak się spi po 2 godziny na dobę. Widzę, co chcę widzieć, a nie to, co jest.
Go to the top of the page
+Quote Post
wolacinio
post
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
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.
Go to the top of the page
+Quote Post
wolacinio
post
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 05:00