• 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
374 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 285 wizyt
0 głosów
0 odpowiedzi 390 wizyt
0 głosów
1 odpowiedź 419 wizyt
pytanie zadane 17 marca 2020 w C i C++ przez fff Gaduła (3,950 p.)

92,760 zapytań

141,684 odpowiedzi

320,470 komentarzy

62,104 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

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!

...