Cześć. Próbuję stworzyć system rejestracji, ale przy próbie zarejestowania wyskakuje błąd z tytułu.
Kod:
<?php
session_start();
$login = $_POST['login'];
$haslo = $_POST['haslo'];
$haslo1 = $_POST['haslo1'];
$email = $_POST['email'];
$login = htmlentities($login, ENT_QUOTES, "UTF_8");
$haslo = htmlentities($haslo, ENT_QUOTES, "UTF_8");
$haslo1 = htmlentities($haslo1, ENT_QUOTES, "UTF_8");
$email = htmlentities($email, ENT_QUOTES, "UTF_8");
require_once "connect.php";
$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
if ($polaczenie->connect_errno!=0){
echo "Error: ". $polaczenie->connect_errno;
}
else{
if($rezultat2 = @$polaczenie->query(sprintf("SELECT * FROM uzytkownicy WHERE user='%s' AND email='%s'",
mysqli_real_escape_string($polaczenie,$login),
mysqli_real_escape_string($polaczenie,$email))))
{
$ile_wynikow = $rezultat2->num_rows;
if($ile_wynikow == 0)
{
if($haslo == $haslo1){
@$polaczenie->query(sprintf("INSERT INTO uzytkownicy VALUES(NULL, %s, %s, %s)",
mysqli_real_escape_string($polaczenie,$login),
mysqli_real_escape_string($polaczenie,$haslo),
mysqli_real_escape_string($polaczenie,$email)))}
$rezultat2->close();
}
}
if($rezultat = @polaczenie->query(sprintf("SELECT FROM uzytkownicy WHERE user='%s'",
mysqli_real_escape_string($polaczenie, $login))))
{
$ilu_userow = $rezultat->num_rows;
if($ilu_userow>0)
{
$_SESSION['blad_user'] = '<span style="color: red> Ten login jest już użyty</span>"';
}
}
if($rezultat1 = @polaczenie->query(sprintf("SELECT FROM uzytkownicy WHERE email='%s'",
mysqli_real_escape_string($polaczenie, $email))))
{
$ile_emaili = $rezultat1->num_rows;
if($ile_emaili>0)
{
$_SESSION['blad_email'] = '<span style="color: red> Ten E-mail jest już użyty</span>"';
}
}
$polaczenie->close();
}
?>
//TIP:
- Przejdź na PDO.
- Poczytaj dlaczego nie używać @ ( jest to zła praktyka i unikaj jej jak ognia. )
- sprintf nie stosujemy do zapytań SQL :P
- Przejdź na jakiś system szablonów np Twig, bo się zgubisz w kodzie.
- NetBeans dla PHP jako darmowy lub PHPStorm (IDE) zamiast notatnika.
- zamiast htmlentites dac filtry , filter input np.