Masz znak "@" przed $polaczenie->query
if ($rezultat = @$polaczenie->query(
co powoduje, że gdy query zwraca błąd to php "nie reaguje" i wtedy nie wiadomo, czy był poprawny.
Propozycja.
echo $sql; exit(); // po testach usunąć
$sql = sprintf("SELECT * FROM uzytkownicy WHERE user='%s' AND pass='%s'",
mysqli_real_escape_string($polaczenie, $email),
mysqli_real_escape_string($polaczenie, $haslo)
);
// do sparwdzenia poprawności zapytania sql
echo $sql; exit(); // po testach usunąć
if ($rezultat = @$polaczenie->query(sql)) {
Pełny kod
<?php
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = (isset($_POST['email'])) ? $_POST['email'] : '';
$haslo = (isset($_POST['password'])) ? $_POST['password'] : '';
if (!empty($email) && !empty($haslo)) {
$email = htmlentities($email, ENT_QUOTES, "UTF-8");
$haslo = htmlentities($haslo, ENT_QUOTES, "UTF-8");
require_once "connect.php";
$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name, $db_punkty);
if ($polaczenie->connect_errno) {
echo "Error: ".$polaczenie->connect_errno;
exit();
}
$sql = sprintf("SELECT * FROM uzytkownicy WHERE user='%s' AND pass='%s'",
mysqli_real_escape_string($polaczenie, $email),
mysqli_real_escape_string($polaczenie, $haslo)
);
// do sparwdzenia poprawności zapytania sql
echo $sql; exit(); // po testach usunąć
if ($rezultat = @$polaczenie->query(sql)) {
if ($rezultat->num_rows) {
$_SESSION['zalogowany'] = true;
$wiersz = $rezultat->fetch_assoc();
$_SESSION['nick'] = $wiersz['nick'];
$_SESSION['punkty'] = $wiersz['punkty'];
unset($_SESSION['blad']);
$rezultat->free_result();
header('Location: user.php');
}
} else {
$_SESSION['blad'] = '<span style="color:red">Nieprawidłowy login lub hasło!</span>';
header('Location: login.php');
exit();
}
$polaczenie->close();
}
} else {
header('Location: index.php');
}
?>