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

question-closed Błąd w systemie logowania - "Only variables should be passed by reference"

Object Storage Arubacloud
0 głosów
520 wizyt
pytanie zadane 7 sierpnia 2017 w PHP przez Wonderpol Gaduła (3,730 p.)
zamknięte 7 sierpnia 2017 przez Arkadiusz Waluk
  class Auth{
        
        private $salt = 'dsabdjslajdk321jkwlhlaud12hwa32iu';

        function __construct(){

        }
    
        function validateLogin($user, $pass){

            global $Database;

            if($stmt = $Database->prepare("SELECT * FROM users WHERE username = ? AND password = ?")){
                $stmt ->bind_param("ss", $user, md5($pass.$this->salt));
                $stmt->execute();
                $stmt->store_result();

                if($stmt->num_rows > 0){
                    $stmt->close();
                    return TRUE;
                } else {
                    $stmt->close();
                    return FALSE;
                }
            }else{
                die();
            }

        }

    function checkLoginStatus(){

        if(isset($_SESSION['loggedin'])){
            return TRUE;
        }else{
            return FALSE;
        }

    }

    function logout(){
        session_destroy();
        session_start();
    }

}

 

Siemka w zaznaczonym miejscu dostaje taki błąd :

Notice: Only variables should be passed by reference in C:\Programs\xampp\htdocs\sk_login\models\m_auth.php on line 16

komentarz zamknięcia: Rozwiązane
komentarz 7 sierpnia 2017 przez Wonderpol Gaduła (3,730 p.)
Można zamknąć znalazłem rozwiązanie :)
komentarz 7 sierpnia 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)

Tytułuj proszę jakoś lepiej pytania następnym razem - dodawanie "POMOCY!!!" naprawdę nie ma sensu i niczego nie przyśpiesza (a wręcz przeciwnie).

A zupełnie przy okazji słowo o tym kodzie:

  • Zmienne globalne to zło.
  • Hasło powinno być hashowane przy użyciu password_hash i sprawdzane przez password_verify, md5 jest słabe.
  • Używasz chyba mysqli, polecam bardziej PDO.
  • Nie przestrzegasz standardów PSR-2, a to bardzo powszechny standard, więc myślę, że warto.

Jeśli więc jest to faktycznie z jakiegoś kursu to polecałbym zmienić źródło nauki. 

komentarz 7 sierpnia 2017 przez Wonderpol Gaduła (3,730 p.)
Ok, dzięki za rady.

Ps. Z chęcią bym uczył się z twojego kursu tylko niestety wolę bardziej edukacje w postaci filmu oraz na przykładzie w tym wypadku np. systemu logowania :) Jeżeli zrobisz coś takiego to się nawet nie będę zastanawiał tylko rzucę tamto w ch*j i będe czytał u Ciebie
komentarz 7 sierpnia 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
Heh, dzięki. Wideo raczej nie planuję, przykłady jak najbardziej. Ciągle się zabieram za kolejny rozdział gdzie będzie właśnie obiektowość i Composer w praktyce.
komentarz 7 sierpnia 2017 przez Wonderpol Gaduła (3,730 p.)
Tego mi właśnie brakuję gdyż nie interesuje mnie pisanie "zwyczajnie" wolę właśnie obiektowo. Jeżeli chciałbyś zobaczyć jakie głupoty są na tym kursie to mogę ci podać na privie dane do mojego konta, i pytanko czy polecił byś jakiś kurs(sposób nauki) angulara 4 ?czy lepiej do końca się nauczyć php ?
komentarz 8 sierpnia 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
Nie dzięki, nie ma takiej potrzeby. Z resztą pewnie jest to zabronione gdzieś w ich regulaminie, więc szkoda sobie robić problemów. Do Angulara nic nie polecę bo go nie znam, działam głównie w PHP. A "do końca" nauczyć się czegoś prawdopodobnie nigdy się nie da. Zawsze czegoś będzie można się douczyć, albo poznać w tym coś nowego. Także jeśli czujesz, że już coś z tego PHP wiesz i potrzebujesz też frameworka na frontendzie to ucz się i Angulara, nie widzę problemu.
komentarz 8 sierpnia 2017 przez Wonderpol Gaduła (3,730 p.)
Ok dzięki czekam na następne lekcje na twoim kursie oczywiście obiektowe i z przykładami :)

1 odpowiedź

+2 głosów
odpowiedź 7 sierpnia 2017 przez 1SnajpeR7 Użytkownik (930 p.)
wybrane 7 sierpnia 2017 przez Wonderpol
 
Najlepsza

Spróbuj 

md5($pass.$this->salt)

Dać do jakiejś zmiennej i w metodzie bind_param przesłać właśnie tą zmienną.

Odsyłam do manuala:

http://php.net/manual/en/mysqli-stmt.bind-param.php

komentarz 7 sierpnia 2017 przez Wonderpol Gaduła (3,730 p.)
Rozumiem tylko ja to robię z kursem z platformy strefakursów i tam jest tak samo jak ja mam i wszystko im działa

https://scr.hu/K0NgA0
komentarz 7 sierpnia 2017 przez Wonderpol Gaduła (3,730 p.)
Ale spróbuję :D
komentarz 7 sierpnia 2017 przez Wonderpol Gaduła (3,730 p.)

Dzięki tak to rozwiązałem jak pisałeś i jest git 

function validateLogin($user, $pass){

			global $Database;

			 $pass = md5($pass.$this->salt);

			 if($stmt = $Database->prepare("SELECT * FROM users WHERE username = ? AND password = ?")){
	            $stmt->bind_param("ss", $user, $pass);
	            $stmt->execute();
	            $stmt->store_result();

 

Podobne pytania

0 głosów
1 odpowiedź 188 wizyt
pytanie zadane 6 kwietnia 2019 w PHP przez Matinowsky Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 214 wizyt
pytanie zadane 7 lutego 2018 w SQL, bazy danych przez Hardwell Dyskutant (8,980 p.)
0 głosów
1 odpowiedź 455 wizyt
pytanie zadane 25 lutego 2016 w PHP przez Kubala94 Początkujący (360 p.)

92,567 zapytań

141,420 odpowiedzi

319,615 komentarzy

61,952 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!

...