Witam.
Zabrałem się z stworzenie rejestracji za pomocą kursu Pana Zelenta :) Wszystko śmiga ładnie z wyjątkiem jednej małej, ale jakże istotnej rzeczy - formularz rejestracji nie wpisuje danych do bazy danych.
Mój kod PHP:
<?php
session_start();
if ((isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true))
{
header('Location: uzytkownik.php');
exit();
}
if (isset($_POST['email']))
{
// Załóżmy, że udana walidacja
$wszystko_OK=true;
// Sprawdz nick
$nick = $_POST['nick'];
// Sprawdzenie dlugosci nicka
if ((strlen($nick)< 3 || (strlen($nick)>20)))
{
$wszystko_OK=false;
$_SESSION['e_nick']="Nazwa użytkownika musi mieć od 3 do 20 znaków!";
}
if (ctype_alnum($nick)==false)
{
$wszystko_OK=false;
$_SESSION['e_nick']="Nazwa użytkownika zawiera niedozwolone znaki!";
}
// Sprawdzenie poprawnosci e-mail
$email = $_POST['email'];
$emailB = filter_var($email, FILTER_SANITIZE_EMAIL);
if ((filter_var($emailB, FILTER_VALIDATE_EMAIL)==false) || ($email!=$emailB))
{
$wszystko_OK=false;
$_SESSION['e_email']="Musisz podać poprawny adres e-mail!";
}
// Sprawdzanie poprawnosci hasla
$haslo = $_POST['haslo'];
$powtorzhaslo = $_POST['powtorzhaslo'];
if ((strlen($haslo)< 8))
{
$wszystko_OK=false;
$_SESSION['e_haslo']="Hasło jest za krótkie! (min. 8 znaków)";
}
if ((strlen($haslo)> 20))
{
$wszystko_OK=false;
$_SESSION['e_haslo']="Hasło jest zbyt długie! (max. 20 znaków)";
}
if ($haslo!=$powtorzhaslo)
{
$wszystko_OK=false;
$_SESSION['e_powtorzhaslo']="Hasła nie są takie same!";
}
$haslo_hash = password_hash($haslo, PASSWORD_DEFAULT);
// Zaakceptowano regulamin?
if (!isset($_POST['regulamin']))
{
$wszystko_OK=false;
$_SESSION['e_regulamin']="Musisz akceptować regulamin, aby się zarejestrować!";
}
// Lokalizacja
$lokalizacja = $_POST['lokalizacja'];
require_once "connect.php";
mysqli_report(MYSQLI_REPORT_STRICT);
try
{
$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
if ($polaczenie->connect_errno!=0)
{
throw new Exception(mysqli_connect_errno());
}
else
{
// Czy email istnieje w bazie?
$rezultat = $polaczenie->query("SELECT id FROM uzytkownicy WHERE email='$email'");
if (!$rezultat) throw new Exception($polaczenie->error);
$ile_takich_maili = $rezultat->num_rows;
if ($ile_takich_maili>0)
{
$wszystko_OK=false;
$_SESSION['e_email']="Taki e-mail jest już zajęty!";
}
// Czy nickname istnieje w bazie?
$rezultat = $polaczenie->query("SELECT id FROM uzytkownicy WHERE user='$nick'");
if (!$rezultat) throw new Exception($polaczenie->error);
$ile_takich_nickow = $rezultat->num_rows;
if ($ile_takich_nickow>0)
{
$wszystko_OK=false;
$_SESSION['e_nick']="Taki użytkownik już istnieje!";
}
if ($wszystko_OK==true)
{
// Udało się utworzyć konto
if ($polaczenie->query("INSERT INTO uzytkownicy VALUES (NULL, '$nick', '$haslo_hash', '$email', '$lokalizacja', male)"))
{
$_SESSION['udanarejestracja']=true;
header('Location: witamy.php');
}
else
{
throw new Exception($polaczenie->error);
}
}
$polaczenie->close();
}
}
catch(Exception $e)
{
echo "<div class='bladserwera'><span style='color: #ffffff; font-size: 13px; font-weight: 600;'>Błąd serwera. Przepraszamy za utrudnienia</span></div>";
//echo '<br>Info: '.$e;
}
}
?>
Wycięty fragment z poprzedniego kodu w który prawdopodobnie jest błąd:
<?php
if ($wszystko_OK==true)
{
// Udało się utworzyć konto
if ($polaczenie->query("INSERT INTO uzytkownicy VALUES (NULL, '$nick', '$haslo_hash', '$email', '$lokalizacja', male)"))
{
$_SESSION['udanarejestracja']=true;
header('Location: witamy.php');
}
else
{
throw new Exception($polaczenie->error);
}
}
$polaczenie->close();
}
?>
Zamiast ifa wykonuje się else i wyskakuje mi informacja o błędzie połączenia z bazą danych. Ktoś wie dlaczego tak się dzieje?
Z góry dziękuję za odpowiedź.