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

question-closed PHP - dlaczego mi to nie działa?

Object Storage Arubacloud
0 głosów
327 wizyt
pytanie zadane 8 grudnia 2017 w PHP przez Vorex444 Dyskutant (9,610 p.)
zamknięte 8 grudnia 2017 przez Vorex444

Cześć, nie wiem dlaczcego ale w linijcie gdzie jest kod odpowiedzialny za logowanie to zawsze wykonuje się if, nawet jak podam błędne dane, nie wiem gdzie mam błąd, tak wygląda cały kod:

<?php

$host = "localhost";
$user = "root";
$pass = "";
$base = "users";

$connect = new mysqli($host,$user,$pass,$base);

    //rejestracja
    if (isset($_POST['register']))
    {
        $email = $_POST['email'];
        $password1 = $_POST['password1'];
        $password2 = $_POST['password2'];
        $name = $_POST['name'];
        $lastName = $_POST['lastName'];

        if($password1 == $password2)
        {
            $connect->query("INSERT INTO `uzytkownicy` (`id`, `email`, `password`, `password2`, `name`, `lastname`) VALUES ('NULL', '$email','$password1','$password2','$name','$lastName')");
        }
        else
        {
            echo "Hasła nie są takie same!";
        }
    }
    
    //logowanie
    if(isset($_POST['login']))
    {
        $lemail = $_POST['lemail'];
        $lpass = $_POST['lpassword'];
        if ($connect->query("SELECT email, password FROM uzytkownicy WHERE email = '$lemail' AND password = '$lpass'"))
            {
               echo "Zalogowano";
            }
        else
            {
                echo "Wpisano złe dane";
            }
    }
?>

 

komentarz zamknięcia: problem rozwiazny

1 odpowiedź

0 głosów
odpowiedź 8 grudnia 2017 przez Ivan Maniak (60,650 p.)
wybrane 8 grudnia 2017 przez Vorex444
 
Najlepsza

Mysqli::connect() zwraca false, tylko gdy wystąpił jakiś błąd w zapytaniu, w innych przypadkach true lub mysqli_result. [http://php.net/manual/en/mysqli.query.php]

komentarz 8 grudnia 2017 przez Vorex444 Dyskutant (9,610 p.)
nie czaje :D
1
komentarz 8 grudnia 2017 przez Ivan Maniak (60,650 p.)
if ($connect->query("SELECT email, password FROM uzytkownicy WHERE email = '$lemail' AND password = '$lpass'"))

U ciebie ta linijka "sprawdza" czy login i hasło istnieje w bazie, a tak naprawdę to sprawdza czy query zwróci cokolwiek, nawet "nic". Jeżeli zwróci "nic" to i tak przejdzie.

Wszystko co musisz zrobić to przypisać query do jakiejś zmiennej, a następnie sprawdzić czy ta zmienna (obiekt mysqli_result) ma w sobie dane użytkownika. Jeżeli będzie miała to oznacza, że taki użytkownik istnieje.

Nie jestem pewien jaki jest najlepszy sposób na sprawdzenie, ale można to zrobić, sprawdzając czy $result->num_rows jest większe od zera, jeżeli tak to użytkownik istnieje.

 

Podobne pytania

0 głosów
3 odpowiedzi 265 wizyt
0 głosów
0 odpowiedzi 374 wizyt
0 głosów
1 odpowiedź 380 wizyt
pytanie zadane 17 marca 2020 w C i C++ przez fff Gaduła (3,950 p.)

92,596 zapytań

141,446 odpowiedzi

319,720 komentarzy

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

...