• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jaki typ wpisać gdy zwracam stałą

Object Storage Arubacloud
0 głosów
153 wizyt
pytanie zadane 22 grudnia 2017 w PHP przez `Krzychuu Stary wyjadacz (13,940 p.)

Witam

Piszę projekt w PHP 7, jaki typ skalarny muszę dodać żeby było wszystko prawidłowo, w pliku ze stałymi mam takie coś: 

define("LOGIN_SUCCESS", 1);

mam teraz dodany int ale nie wiem czy dobrze zrobiłem.

1 odpowiedź

+3 głosów
odpowiedź 22 grudnia 2017 przez CzikaCarry Szeryf (75,340 p.)
wybrane 22 grudnia 2017 przez `Krzychuu
 
Najlepsza
LOGIN_SUCCESS wskazuje, że albo logowanie się powiodło, albo nie (przyjmuje tylko 2 wartości), zatem typ powinien być bool. Poza tym nie wiem dlaczego ma to być stała, nie lepiej zmienna?
komentarz 22 grudnia 2017 przez `Krzychuu Stary wyjadacz (13,940 p.)

najpierw sprawdzam czy zalogowano, jeżeli zalogowano zwraca LOGIN_SUCCESS i w innej podstronie sprawdzam switch, mam coś takiego:

if(isset($_POST['login'])) {
    switch($CheckValue->verifyLogin($_POST['login'], $_POST['password'])) {
        case LOGIN_SUCCESS:
            header("Location: templates/index.php");
            break;
    }
}

 

komentarz 22 grudnia 2017 przez CzikaCarry Szeryf (75,340 p.)
No to wszystko w porządku, chyba, że w tym switchu chcesz "łapać" błędy (np, że hasło niepoprawne, hasło za krótkie czy zakazane znaki), chociaż robienie tego tym miejscu to raczej zły pomysł. Zamiast tego switch... case dałbym po prostu if else.
komentarz 22 grudnia 2017 przez `Krzychuu Stary wyjadacz (13,940 p.)

zrobiłem tak:

 public function getLogin(string $login, string $password):int
    {
        $this->password = $password;

        try {
            $this->DBManager->checkConnect();
            $this->login = $this->DBManager->getConnection()->real_escape_string($login);

            $query = $this->DBManager->getConnection()->query("SELECT * FROM `users` WHERE login = '$this->login'");

            if ($query->num_rows >= 1) {
                $row = $query->fetch_assoc();
                if (password_verify($this->password, $row['password'])) {
                    return LOGIN_SUCCESS;
                } else {
                    $_SESSION['RemeberLogin'] = $this->login;
                    return PASSWORD_FAILED;
                }
            } else {
                $_SESSION['RemeberLogin'] = $this->login;
                return LOGIN_FAILED;
            }

        } catch(Exception $e) {
            $_SESSION['LoginException'] = $e->getMessage();
            return LOGIN_EXCEPTION;
        }
    }

 

a w switchu tak jak na górze:

if(isset($_POST['login'])) {
    $CheckValue = new CheckValue();

    switch($CheckValue->verifyLogin($_POST['login'], $_POST['password'])) {
        case LOGIN_SUCCESS:
            header("Location: templates/index.php");
            break;
        case LOGIN_FAILED:
            $_SESSION['LoginFailed'] = true;
            $loginError = "Podany login nie istnieje!";
            $GetMessage->viewMessage("Podany login nie istnieje w naszej bazie danych!", "warning");
            break;
        case PASSWORD_FAILED:
            $_SESSION['PasswordFailed'] = true;
            $passwordError = 'Podane hasło jest nieprawidłowe!';
            $GetMessage->viewMessage("Podane hasło jest nieprawidłowe!", "warning");
            break;
        case LOGIN_VERIFY_FAILED:
            $GetMessage->viewMessage("Musisz wypełnić wymagane pola!", "warning");
            break;
        case LOGIN_EXCEPTION:
            $GetMessage->viewMessage("Wystąpił błąd przy próbię połączenie się z bazą danych { $_SESSION[LoginException] }", "error");
            break;
    }
}

 

komentarz 22 grudnia 2017 przez CzikaCarry Szeryf (75,340 p.)
W takim wypadku musisz robić to na intach (albo inaczej, nie możesz zrobić tego na boolach) i dla każdej ze stałych dać inne wartości.

PS. Rób stałe w klasach, nie globalnie!
komentarz 22 grudnia 2017 przez `Krzychuu Stary wyjadacz (13,940 p.)
Dziękuje za pomoc

Podobne pytania

0 głosów
1 odpowiedź 557 wizyt
pytanie zadane 18 lutego 2020 w PHP przez MAXIM7 Obywatel (1,990 p.)
0 głosów
1 odpowiedź 301 wizyt
pytanie zadane 16 lutego 2020 w PHP przez MAXIM7 Obywatel (1,990 p.)
0 głosów
1 odpowiedź 252 wizyt
pytanie zadane 2 stycznia 2020 w PHP przez MAXIM7 Obywatel (1,990 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...