Problem z funkcją logowania

Odpowiedz Nowy wątek
2017-03-04 07:31
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! :)

edytowany 1x, ostatnio: FireWat, 2017-03-04 07:32

Pozostało 580 znaków

2017-03-04 09:18
0

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

Poczytaj o PDO :)

Pozostało 580 znaków

2017-03-04 09:49

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
}
po takim przekierowaniu warto zakonczyc skrytpt uzywajac exit lub die() skoro już tak - to polecam zrobić funkcję redirectTo($url), OP w kodzie ma 2 razy ten header i zaraz będzie miał 2x header+exit/die. - axelbest 2017-03-04 13:08

Pozostało 580 znaków

2017-03-04 11:43
Karmazynowygołąb
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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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