Sprawdzenie if isset

Mam taki kod

<?php

     if(isset($login))

      {

       if(isset($haslo))

       {

        echo "gotowe";

       }

       else

           echo "Nie zostało podane hasło";

      }

     else

         echo "Nie został podany login";

     ?>

I nawet jak w formularzu nie podam loginu czy hasła toi tak wyświetla się napis gotowe

Zmień $login na $_POST[“login”], drugi wpis analogicznie.

Czyli jest wszystko jak należy!

if(isset($haslo)) sprawdza tylko czy zmienna istnieje …a nie czy nie jest pusta.

dorzuć warunek sprawdzający zawartość np && !empty($haslo) albo && $hasło!=’'

analogicznie dla loginu.

Poza tym jak napisał _Puma, stosuj lepiej tablice $_POST / $_GET, bo zmienne globalne są często wyłączone.

Dokładnie, isset sprawdza istnienie, w tym tylko problem że pole z formualrza które jest puste istnieje w sensie zmiennej, a jedynie jej zawartość jest pusta.

Możliwe, że sobie wcześniej przypisał: $haslo = $_GET[‘haslo’];

Nie mniej samo sprawdzanie isset powinno też tam być, choćby po to jakby ktoś wywołał skrypt nie przez formularz. Fakt że PHP wyrzuci wtedy tylko warning, ale chyba warto programować od początku porządnie :).

spróbuj z empty

$login2 = $_POST['login'];

if (empty($login2)) {

    echo 'Login nie został uzupełniony..';

}

Wg mnie to powinno być jako “rama” strony z logowaniem. NIC nie powinno się wyświetlać jeśli wykryte jest, że strona nie została “uruchomiona” z formularza, API…czyli przypadków przewidzianych