Problem z funkcją logowania

0

Cześć, mam problem z logowaniem na mojej stronie, z góry uprzedzam, że dopiero zaczynam z PHP. A więc mój problem jest taki, że gdy chcę się zalogować przenosi mnie tylko do pliku w którym wszystko się dzieje. To jest mój kod:

 <?php
session_start();
require_once "sql.php";

$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);

if($polaczenie->connect_errno!=0)
{
	echo "Błąd: ".$polaczenie->connect_errno;
}
else
{
$login = $_POST['login'];
$password = $_POST['password'];

$login = htmlentities($login, ENT_QUOTES, "UTF-8");
$password = htmlentities($password, ENT_QUOTES, "UTF-8");
if ($rezultat = @$polaczenie->query(
		sprintf("SELECT * FROM uzytkownicy WHERE user='%s' AND pass='%s'",
		mysqli_real_escape_string($polaczenie,$login),
		mysqli_real_escape_string($polaczenie,$password))))
{
	$liczbausers = $rezultat->num_rows;
	if ($liczbausers>0)
	{
		unset($_SESSION['blad']);
		$_SESSION['zalogowany'] = true;
		$wiersz = $rezultat->fetch_assoc();
		$_SESSION['user'] = $wiersz['user'];
		$_SESSION['password'] = $wiersz['password'];
		$rezultat->free_result();
		header('Location: zalogowano.php');
	}
	else
	{
			$_SESSION['blad'] = '<span style="color:red"> Nieprawidłowy login lub hasło! </span>';
			header('Location: logowanie.php');
	}

}
$polaczenie->close();
}

?>

Z góry dzięki! :)

0

"przenosi mnie tylko do pliku w którym wszystko się dzieje" - co masz przez to na myśli?

Poczytaj o PDO :)

1

Jeśli chodzi o Twój główny problem to pewnie wysyłasz coś do przeglądarki przed użyciem funkcji header() stąd przekierowanie nie działa. Możesz spróbować też podać tam absolutny url tak jak zalecają w dokumentacji. Sam kod nie jest też najlepszej jakości, poczytaj trochę więcej, zobacz jakieś dobre przykłady prostego logowania i spróbuj jeszcze raz. Kilka uwag do kodu:

 <?php
session_start();
require_once "sql.php";

//wyciszanie bledow to zla praktyka
$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);

if ($polaczenie->connect_errno != 0) {
    echo "Błąd: " . $polaczenie->connect_errno;
} else {
    $login = $_POST['login'];
    $password = $_POST['password'];

    $login = htmlentities($login, ENT_QUOTES, "UTF-8");
    $password = htmlentities($password, ENT_QUOTES, "UTF-8");

    //wyciszanie bledow to zla praktyka
    if ($rezultat = @$polaczenie->query(
        sprintf("SELECT * FROM uzytkownicy WHERE user='%s' AND pass='%s'",
            mysqli_real_escape_string($polaczenie, $login),
            mysqli_real_escape_string($polaczenie, $password)))
    ) {
        $liczbausers = $rezultat->num_rows;

        if ($liczbausers > 0) {
            unset($_SESSION['blad']);
            $_SESSION['zalogowany'] = true;
            $wiersz = $rezultat->fetch_assoc();
            $_SESSION['user'] = $wiersz['user'];
            $_SESSION['password'] = $wiersz['password']; //to wyglada na powazna luke bezpieczenstwa
            $rezultat->free_result();
            header('Location: zalogowano.php');
            //po takim przekierowaniu warto zakonczyc skrytpt uzywajac exit lub die()
        } else {
            $_SESSION['blad'] = '<span style="color:red"> Nieprawidłowy login lub hasło! </span>';
            header('Location: logowanie.php');
        }

    }
    $polaczenie->close(); //jak juz zamykasz polaczenie recznie to warto to wyciagnac poza tego ifa
}

0

Sugeruje również od początku używać języka angielskiego do nazw zmiennych i dobrze
przemyśleć nazwę , aby jednoznacznie mówiła do czego ona jest.

1 użytkowników online, w tym zalogowanych: 0, gości: 1