Cześć,
Mniej więcej od momentu jak wprowadziłem zabezpieczenie przeciwko SQL Injection, system logowania przestał mi działać. Analizowałem kod już kilkukrotnie, jednak nie widzę błędów. Zerkniesz na kod?
<?php
session_start();
//include 'dbconnect.php';
//nie przetestowane. Istnieje ryzyko błędu.
if ((!isset($_POST['login'])) || (!isset($_POST['password'])))
{
header('Location: signin.php');
exit();
}
require_once "dbconnect.php";
$connection = new mysqli($host, $db_user, $db_password, $db_name); //or die("Connect failed: %s\n". $conn -> error);
if($connection->connect_errno!=0)
{
echo "Error: ".$connection->connect_errno;
}
else {
$login = $_POST['login'];
$password = $_POST['password'];
//nietestowane. Do sprawdzenia. Ochrona SQL Injection
$login = htmlentities($login, ENT_QUOTES, "UTF-8");
$password = htmlentities($password, ENT_QUOTES, "UTF-8");
//$sql = "SELECT * FROM identity WHERE Login='$login' AND Password='$password'";
if($result = $connection->query(
sprintf("SELECT * FROM identity WHERE Login='%s' AND Password='%s'",
mysqli_real_escape_string($connecion, $login),
mysqli_real_escape_string($connecion, $password))))
{
$user_count = $result->num_rows;
if($user_count>0)
{
$_SESSION['loggedin']=true;
$row=$result->fetch_assoc();
$_SESSION['Id']=$row['Id'];
$_SESSION['Login']=$row['Login'];
//Można dodać session dla e-maila
//$Login = $row['Login'];
unset($_SESSION['error']);
$result->free_result();
header('Location: home.php');
echo $Login;
}
else
{
$_SESSION['error']='<span style="color:red">Nieprawidłowy login lub hasło!</span>';
header('Location:signin.php');
}
}
$connecion->close();
}
//$login = $_POST['login'];
//$password = $_POST['password'];
?>