PHP dlaczego tyle błędów

0

Dzisiaj zacząłem pisać osbiektowo system logowania w PHP napisałem taki kod

<?php
class Login{
     
    public function connect() :object
    {
        require_once('config.php');
        try{
        $this->pdo = new PDO("mysql:host=$host;dbname=$db",$dbusername, $dbpassword);
        $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $this->pdo;
        }
        catch(PDOexception $e){
            echo $e->getMessage();
        }
    }
 
    private function readLoginForm() :string
    {
        $this->login = $_POST['login'];
        $this->password = $_POST['password'];
        return $this->login; $this->password;
    }
 
    private function sendSql() :object
    {
        $this->connect();
        $this->readLoginForm();
        $this->sql = $this->pdo->prepare("SELECT * FROM users WHERE username=:login AND password=:password");
        $this->sql->bindParam(':login', $this->login);
        $this->sql->bindParam(':password', $this->password);
        $this->sql->execute();
        return $this->sql;
    }
 
    public function login(){
        $this->sendSql();
        $this->result = $this->sql->rowCount();
        if($this->result > 0){
            echo 'zalogowany';
            $this->pdo = null;
        }else{
            echo 'niezalogowany';
            $this->pdo = null;
        }
    }
 
}
 
$login = new Login();
$login->login();
 
?>

i wszystko działa prócz jednego

http://prntscr.com/mbn7m8

wysypuje mi się kilka błędów chciałbym wiedzieć dlaczego tak się dzieje i jak temu zapobiec?

0

Spróbuj dać require_once zaraz po znaczniki otwierajacym php.

Sprawdź też czy w tym pliku który includujesz masz dane zmienne.

A czy to co masz na screenie to cały kod projektu? Może gdzieś indziej staraj się skorzystać z bazy, w jakiś inny sposób i nie wykrywa Ci tam zmiennych z config.php

0
axelbest napisał(a):

Spróbuj dać require_once zaraz po znaczniki otwierajacym php.

Sprawdź też czy w tym pliku który includujesz masz dane zmienne.

A czy to co masz na screenie to cały kod projektu? Może gdzieś indziej staraj się skorzystać z bazy, w jakiś inny sposób i nie wykrywa Ci tam zmiennych z config.php

tak jak myślałem jeżeli zincluduje to przed klasą to nie zadziała wcale

0

Czy to co wrzuciłes to cały kod? A w config.php są tylko dane do bazy? Dziwne że to działa, zwłaszcza jak Ci return zwraca tylko jednego stringa, bo masz średnik pomiędzy stringami w metodzie readLoginForm.

W sumie moim zdaniem to raczej nie ma prawa działać. Ale sprawdzę to za godzinę jak będę przy kompie.

0
axelbest napisał(a):

Czy to co wrzuciłes to cały kod? A w config.php są tylko dane do bazy? Dziwne że to działa, zwłaszcza jak Ci return zwraca tylko jednego stringa, bo masz średnik pomiędzy stringami w metodzie readLoginForm.

W sumie moim zdaniem to raczej nie ma prawa działać. Ale sprawdzę to za godzinę jak będę przy kompie.

ten średnik jest wymagany beż średnika(z przecinkiem) interpreter wyrzuca błąd że nie odpowiedni znak i że mam zamienić go na średnik

1

Ok, sprawa okazuje się prosta. Skoro masz klasę Login, to php traktuje Twoją metode login jako konstruktor - zmień jej nazwę na cokolwiek innego i będzie grało :)

O tym że mam rację, niech przekona Cię ten kod

class Abc{
	function abc(){
		echo "hello";
	}
}
$x = new Abc();

Tak więc w sumie aby Twój obecny kod zadziałał i żebyś nie zmieniał nazwy metody login - utwórz pusty konstruktor -> public function __construct(){}

Poczytaj też czym są konstruktory - bo przy OOP to ważna rzecz.

0
axelbest napisał(a):

Ok, sprawa okazuje się prosta. Skoro masz klasę Login, to php traktuje Twoją metode login jako konstruktor - zmień jej nazwę na cokolwiek innego i będzie grało :)

O tym że mam rację, niech przekona Cię ten kod

class Abc{
	function abc(){
		echo "hello";
	}
}
$x = new Abc();

Tak więc w sumie aby Twój obecny kod zadziałał i żebyś nie zmieniał nazwy metody login - utwórz pusty konstruktor -> public function __construct(){}

Poczytaj też czym są konstruktory - bo przy OOP to ważna rzecz.

dziękuję ci bardzo :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1