Witam
Ostatnio zacząłem naukę programowania w języku php. Na podstawie filmu Pana Mirosława zelanta napisałem taki skrypt rejestracji:
<?php
session_start();
if(isset($_POST['email']))
{
$udana_walidacja = true;
//Walidacja loginu
$login = $_POST['login'];
//Sprawdzanie długości loginu
if( (strlen($login) < 3) || (strlen($login) > 20) )
{
$udana_walidacja = false;
$_SESSION['e_login'] = "Login musi posiadać od 3 do 20 znaków";
}
//Sprawdzanie czy login składa się z znaków alfanumerycznych bez polskich znaków
if(ctype_alnum($login) == FALSE)
{
$udana_walidacja = FALSE;
$_SESSION['e_login'] = "Login musi składać się ze znaków alfanumerycznych (bez polskich znaków)! ";
}
//Walidacja emaila
$email = $_POST['email'];
$emailB = filter_var($email, FILTER_SANITIZE_EMAIL);
if ((filter_var($emailB, FILTER_VALIDATE_EMAIL)==false) || ($emailB!=$email))
{
$udana_walidacja = FALSE;
$_SESSION['e_email']="Podaj poprawny adres e-mail!";
}
//Walidacja hasła
$haslo1 = $_POST['haslo1'];
$haslo2 = $_POST['haslo2'];
//Sprawdzanie czy hasła są takie same
//Sprawdzanie długości hasła
if((strlen($haslo1) < 8 ) || (strlen($haslo1) > 20 ))
{
$udana_walidacja = FALSE;
$_SESSION['e_haslo'] = "Hasło musi posiadać od 8 do 20 znaków!";
}
// Sprawdzanie czy podane hasła są identyczne
if($haslo1 != $haslo2)
{
$udana_walidacja = FALSE;
$_SESSION['e_haslo'] = "Podane hasła różnią się";
}
// Sprawdzanie czy hasło posiada przynajmniej jedną wielką literę i przynajmniej 1 znak specjalny
if(!preg_match('@[A-Z]@', $haslo1))
{
$udana_walidacja = FALSE;
$_SESSION['e_haslo'] = "Hasło musi posiadać przynajmniej 1 dużą literę i znaki specjalne";
}
// haszowanie hasła
$haslo_hasz = $haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT);
//Sprawdzenie czy zaakceptowano regulamin
if(!isset($_POST['regulamin']))
{
{
$udana_walidacja = FALSE;
$_SESSION['e_regulamin'] = "Zaakceptuj regulamin! ";
}
}
//Sprawdzenie czy recaptcha jest zaznaczona
$sekret = "6LdZitAZAAAAAK2dIek6DMo78L8Rc-5hCq-1TBLg";
$sprawdz = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$sekret.'&response='.$_POST['g-recaptcha-response']);
$odpowiedz = json_decode($sprawdz);
if ($odpowiedz->success==false)
{
$udana_walidacja=false;
$_SESSION['e_bot']="Potwierdź, że nie jesteś botem!";
} $kod = md5(mt_rand());
//łączenie z bazą
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
{
$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)
{
$udana_walidacja = FALSE;
$_SESSION['e_email']="Istnieje już konto przypisane do tego adresu e-mail!";
}
$rezultat = $polaczenie->query("SELECT id FROM uzytkownicy WHERE user='$login'");
if (!$rezultat) throw new Exception($polaczenie->error);
$ile_takich_loginow = $rezultat->num_rows;
if($ile_takich_loginow>0)
{
$udana_walidacja = FALSE;
$_SESSION['e_login']="Istnieje już użytkownik o takim loginie , Wybież inny login !";
}
if($udana_walidacja == TRUE)
{
if($polaczenie -> query("INSERT INTO uzytkownicy VALUES (NULL , '$login','$haslo_hash','$email')"))
{
$_SESSION['udanarejestracja']=true;
header('Location: witamy.php');
}else {
throw new Exception ($polaczenie -> error());
}
}
$polaczenie -> close();
}
}
catch(Exception $e)
{
echo '<span style="color:red;">Błąd serwera! Przepraszamy za niedogodności i prosimy o rejestrację w innym terminie!</span>';
echo '<br />Informacja developerska: '.$e;
}
}
?>
problem polega na tym , że gdy prubuje zarejestrować konto to wyskakuje mi błąd:
Fatal error: Uncaught Error: Call to undefined method mysqli::error() in /opt/lampp/htdocs/kurs_php/strona/rejestracja.php:133 Stack trace: #0 {main} thrown in /opt/lampp/htdocs/kurs_php/strona/rejestracja.php on line 133. linia 133 to throw new Exception ($polaczenie -> error());.
Czy ktoś może mi powiedzieć dlaczego mi wyskakuje ten błąd , czy ma to coś wspólnego z tym , że używam wersji php 7.4.10 i w tej wersji nie są wspierane funkcje mysqli czy chodzi ocoś innego?
z góry dziękuję