Skocz do zawartości
PL
Szukaj na Pecetowiczu
  • Utwórz konto

Obiektowe programowanie PHP. Jak napisać panel logowania?


Rekomendowane odpowiedzi

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

Nazwy klas powinieneś pisać z wielkiej litery.

  1. Korzystasz z jakiegoś FW czy to czyste PHP?
  2. Jaki błąd dostajesz?
Odnośnik do komentarza
Udostępnij na innych stronach

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

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

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

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

Kontynuuj dyskusję

Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.

  • Dodaj nową pozycję...
  • Dodaj nową pozycję...