Pomimo, że pierwszy <button> w formularzu np. w Chromie jest domyślnie typowany do submit dobrze jest to "jawnie" zapisać
<button type="submit" class="button">Zaloguj się</button>
a błąd Moim zdaniem masz tu, ten apostrof jest niepotrzebny - przed SELECT
$sql="'SELECT * FROM users WHERE login='$login' AND haslo='$haslo'"
dlatego zapytanie zwraca błąd przez co kod w if-e się nie wykonuje.
P.S. Do sprawdzania czy formularz zwraca oczekiwane dane możesz użyć var_dump()
<?php
$conn = @mysqli_connect("localhost", "root" ,"", "klienci");
if($conn->connect_errno!=0)
{
echo "Error: ".$conn->connect_errno;
}
else
{
var_dump($_POST); // <= TUTAJ
$login = $_POST['login'];
$haslo = $_POST['haslo'];
$sql="SELECT * FROM users WHERE login='$login' AND haslo='$haslo'";
if($result = @$conn->query($sql))
{
$users = $result->num_rows;
if($users==1)
{
$row = $result->fetch_assoc();
$login = $row['login'];
$result->close();
echo $login;
}
else
{
}
}
$conn->close();
}
?>
Na Twoim miejscu "przerobiłbym" trochę ten skrypt php, ponieważ każde "wywołanie" logowanie.php w pierwszej kolejności "tworzy" połączenie do bazy danych ( @mysqli_connect ) przed sprawdzeniem zawartości zmiennych z formularza choćby najprostszym poleceniem np. empty()