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
<?php require_once('funkcje_bazy.php'); FUNCTION rejestruj($nazwa_uz, $email, $haslo) // zarejestrowanie nowej osoby w bazie danych // zwraca true lub komunikat o błędzie { // połączenie z bazą danych $lacz = lacz_bd(); // sprawdzenie, czy nazwa użytkownika nie powtarza się $wynik = $lacz->query("select * from uzytkownik where nazwa_uz='$nazwa_uz'"); IF (!$wynik) throw new Exception('Wykonanie zapytania nie powiodło się.'); IF ($lacz->num_rows>0) throw new Exception('Nazwa użytkownika zajęta — proszę wrócić i wybrać inną.'); // jeżeli wszystko w porządku, umieszczenie w bazie danych $wynik = $lacz->query("insert into uzytkownik values ('$nazwa_uz', sha1('$haslo'), '$email')"); IF (!$wynik) throw new Exception('Rejestracja w bazie danych niemożliwa — proszę spróbować później.'); RETURN true; } FUNCTION loguj($nazwa_uz, $haslo) // sprawdzenie nazwy użytkownika i hasła w bazie danych // jeżeli się zgadza, zwraca true // jeżeli nie, wyrzuca wyjątek { // połączenie z bazą danych $lacz = lacz_bd(); // sprawdzenie unikatowości nazwy użytkownika $wynik = $lacz->query("select * from uzytkownik where nazwa_uz='$nazwa_uz' and haslo = sha1('$haslo')"); IF (!$wynik) throw new Exception('Logowanie nie powiodło się.'); IF ($wynik->num_rows>0) RETURN true; else throw new Exception('Logowanie nie powiodło się.'); } FUNCTION sprawdz_prawid_uzyt() // sprawdzenie czy użytkownik jest zalogowany i powiadomienie go jeżeli nie { IF (isset($_SESSION['prawid_uzyt'])) { echo 'Zalogowano jako '.stripslashes($_SESSION['prawid_uzyt']).'.'; echo '<br />'; } else { // nie jest zalogowany do_html_heading('Problem:'); echo 'Brak zalogowania.<br />'; tworz_HTML_URL('logowanie.php', 'Logowanie'); tworz_stopke_html(); exit; } } FUNCTION zmien_haslo($nazwa_uz, $stare_haslo, $nowe_haslo) // zmiana hasła użytkownika ze stare_haslo na nowe_haslo // zwraca true lub false { // jeżeli stare hasło jest prawidłowe zmiana nowe_haslo i zwrócenie true // w przeciwnym wypadku wyrzucenie wyjątku loguj($nazwa_uz, $stare_haslo); $lacz = lacz_bd(); $wynik = $lacz->query("update uzytkownik set haslo = sha1('$nowe_haslo') where nazwa_uz = '$nazwa_uz'"); IF (!$wynik) throw new Exception('Zmiana hasła nie powiodła się.'); else RETURN true; // zmiana udana } FUNCTION pobierz_losowe_slowo($dlugosc_min, $dlugosc_max) //pobranie losowego słowa ze słownika o określonej długości zwrócenie go { // generowanie losowego słowa $slowo = ''; // tę ścieżkę należy dostosować do ustawień własnego systemu $slownik = '/usr/dict/words'; // słownik ispell $wp = @fopen($slownik, 'r'); IF(!$wp) RETURN false; $wielkosc = filesize($slownik); // przejście do losowej pozycji w słowniku srand ((double) microtime() * 1000000); $losowa_pozycja = rand(0, $wielkosc); fseek($wp, $losowa_pozycja); // pobranie ze słownika następnego pełnego słowa o właściwej długości while (strlen($slowo)< $dlugosc_min || strlen($slowo)>$dlugosc_max || strstr($slowo, "'")) { IF (feof($wp)) fseek($wp, 0); // jeżeli koniec pliku, przeskocz na początek $slowo = fgets($wp, 80); // przeskoczenie pierwszego słowa bo może BYć niepełne $slowo = fgets($wp, 80); // potencjalne hasło }; $slowo=trim($slowo); // obcięcie początkowego \n z funkcji fgets RETURN $slowo; } FUNCTION ustaw_haslo($nazwa_uz) // ustawienie hasła użytkownika na losową wartość // zwraca nowe hasło lub false w przypadku niepowodzenia { // pobranie losowego słowa ze słownika o długości pomiędzy 6 i 13 znaków $nowe_haslo = pobierz_losowe_slowo(6, 13); IF($nowe_haslo==false) throw new Exception('Wygenerowanie nowego hasła nie powiodło się.'); // dodanie liczby pomiędzy 0 i 999 w celu stworzenia lepszego hasła srand ((double) microtime() * 1000000); $losowa_liczba = rand(0, 999); $nowe_haslo .= $losowa_liczba; // ustawienie nowego hasła w bazie danych lub zwrócenie false $lacz = lacz_bd(); RETURN false; $wynik = $lacz->query("update uzytkownik set haslo = sha1('$nowe_haslo') where nazwa_uz = '$nazwa_uz'"); IF (!$wynik) throw new Exception('Zmiana hasła nie powiodła się.'); // hasło nie zmienione else RETURN $nowe_haslo; // hasło zmienione pomyślnie } FUNCTION powiadom_haslo($nazwa_uz, $haslo) // powiadomienie użytkownika o zmianie hasła { $lacz = lacz_bd(); $wynik = $lacz->query("select email from uzytkownik where nazwa_uz='$nazwa_uz'"); IF (!$wynik) { throw new Exception('Nie znaleziono adresu e-mail'); } else IF ($wynik->num_rows==0) { throw new Exception('Nie znaleziono adresu e-mail'); // nazwy użytkownika nie ma w bazie danych } else { $wiersz = $wynik->fetch_object(); $email = $wiersz->email; $od = "From: obsluga@zakladkaphp \r\n"; $wiad = "Hasło systemu ZakładkaPHP zostało zmienione na $haslo \r\n" ."Proszę zmienić je przy następnym logowaniu. \r\n"; IF (mail($email, 'Informacja o logowaniu ZakładkaPHP', $wiad, $od)) RETURN true; else throw new Exception('Wysłanie e-maila nie powiodło się'); } } ?>
Oto laczenie z baza danych zmieniona przezmnie
<?php FUNCTION lacz_bd() { $wynik = mysql_connect('localhost', 'root', 'root', 'zakladki'); IF (!$wynik) throw new Exception('Połączenie z serwerem bazy danych nie powiodło się'); else RETURN $wynik; } ?>
a tak wygladała przed przeróbką
<?php FUNCTION lacz_bd() { $wynik = new mysqli_connect('localhost', 'uzyt_zak', 'haslo', 'zakladki'); IF (!$wynik) throw new Exception('Połączenie z serwerem bazy danych nie powiodło się'); else RETURN $wynik; } ?>
Prosze o Pomoc
