Magmus 5 Stycznia 2019 5 Stycznia 2019 Witam otóż uczę się programowania obiektowego w php i chciałem spróbować napisać panel logowania lecz napotkałem problem. Zaznaczę że od dziś zacząłem się uczyć programowania obiektowego. Bym był wdzięczny jeśli mógłby mi ktoś pomóc by ten skrypt nie wywalał błędu. kod: index.php <?php include("config.php"); class login extends base { public function __construct($tlogin, $tpass) { $result = new base(); $result = $this->select->query("SELECT * FROM users WHERE login=".$tlogin." AND password=".$tpass); } } if(isset($_POST['send'])){ $sprawdz = new login("test", "123"); } ?> <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>"> <input type="text" name="login"> <input type="password" name="pass"> <input type="submit" name="send" value="Zaloguj się"> </form> config.php: <?php class base{ public $host = "localhost"; public $user = "root"; public $password = ""; public $base = "test"; protected $select; public function __construct(){ $this->select = mysqli_connect($this->host, $this->user, $this->password, $this->base); if(!$this->select){ echo "Wystąpił błąd przy łączeniu z bazą danych"; exit(); } else { //$this->select->set_chatset("utf8"); echo "d"; } } } ?> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 5 Stycznia 2019 5 Stycznia 2019 Nazwy klas powinieneś pisać z wielkiej litery. Korzystasz z jakiegoś FW czy to czyste PHP? Jaki błąd dostajesz? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Magmus 5 Stycznia 2019 Autor 5 Stycznia 2019 Czysty PHP Błąd: Cytuj Fatal error: Uncaught Error: Call to a member function query() on null in C:\xampp\htdocs\class\index.php:11 Stack trace: #0 C:\xampp\htdocs\class\index.php(20): login->__construct('test', '123') #1 {main} thrown in C:\xampp\htdocs\class\index.php on line 11 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 5 Stycznia 2019 5 Stycznia 2019 To jest nullem, czyli nie masz połącznia z bazą: $this->select Klasa Base ma pole 'select' jako protected, więc nie wyjdzie poza klasę nawet jak jakaś inna klasa będzie po niej dziedziczyć. Poczytaj o enkapsulacji danych dla OOP. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Magmus 5 Stycznia 2019 Autor 5 Stycznia 2019 A miałbyś jakiś pomysł jak zrobić zapytanie do bazy danych za pomocą klas/obiektów czy jak to się nazywa ale bez OOP bo ja zbytnio nie wiem a to co tam mam z jednego przykładu odgapiłem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mativve Online 6 Stycznia 2019 Mativve jest moderatorem 6 Stycznia 2019 Może źródło nie jest jakieś super świetne, ale dzięki temu ogarnąłem mniej więcej o co w tym chodzi: (Dobrze jest korzystać z OOP i PDO ) PDO https://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO OOP http://www.codingcage.com/2015/09/login-registration-email-verification-forgot-password-php.html - Ilość kodu jest duża bo jest tam cały system rejestacji itd, ale jeśli przeczytasz wszystko co tam jest zawarte samemu pisząc własny kod z własnymi nazwami pojmiesz o co w tym chodzi OOP Polecam jeszcze obejrzeć sobie https://www.youtube.com/watch?v=8DjzIuu49Rk&list=PL0eyrZgxdwhypQiZnYXM7z7-OTkcMgGPh - żeby wizualnie zrozumieć o co w tym chodzi. Jeszcze zabezpieczyć lepiej to wszystko (chyba, że się nie da) i gotowe Sam korzystałem z tych źródeł i uważam, że na start są dobre. PS: Oczywiście nie można zapomnieć o dokumentacji PHP http://php.net/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kontynuuj dyskusję
Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.