• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak połączyć walidację za pomocą wyjątków z bazą danych ?

Object Storage Arubacloud
0 głosów
86 wizyt
pytanie zadane 15 kwietnia 2022 w PHP przez mat19 Obywatel (1,580 p.)

Cześć! Zrobiłem walidację formularza rejestracji za pomocą wyjątków i walidacja działa poprawnie. Tylko jest jeden problem. Nie wiem jak sprawić aby wstawić dane do bazy danych jeśli walidacje przejdzie poprawnie. Próbowałem już różnych pomysłów ale nieskutecznie.

 

class FormRegisterValidation
{


	public function __construct(
        private $data,
        private  $database,
    ){}

    public function LoginValidation():string
    {
        $val = $this->data['login'];
        if(empty($val))
        {
            throw new ValidationException("Podaj login");
        }
        elseif(!preg_match('/^[a-zA-Z-0-9]{4,12}$/', $val))
        {
            throw new ValidationException("Niepoprawny login");
        }else
        {
            $sql = $this->database->ConnectDatabase()->prepare("SELECT * FROM user where login = :login");
            $sql->bindParam(':login', $login, PDO::PARAM_STR);
            $sql->execute();

            if($sql->rowCount())
            {
                throw new ValidationException("Podany login już istnieje");
            }
        }
        return $val;

    }

    public function PasswordValidation():string
    {
        $val = $this->data['password'];

        if(empty($val))
        {
             throw new ValidationException("Podaj hasło");
        }
        elseif(!empty($val) && !preg_match('/^[A-Za-z][A-Za-z0-9]{5,31}$/', $val))
        {
             throw new ValidationException("PoHasło musi zawierać przynajmniej 6 znaków i zaczynać się od litery");
          
        }
        return $val;
    }

    public function PasswordRepeatValidation():string
    {
        $val = $this->data['password_repeat']);
        $vala = $this->data['password']);

        if(empty($val))
        {
             throw new ValidationException("Pole nie może być puste");
        }
        elseif($val!=$vala)
        {
             throw new ValidationException("Hasła nie są identyczne");
        }
		 return $val;
    }
class Insert
{

	public function __construct(
	    private $data,
        private $database,
    ){}

	public function hash_password(): string
	{

		$field = $this->data['password'];
		return $hash = password_hash($field, PASSWORD_DEFAULT);

	}

	public function InsertUser(): void
	{

		$login = $this->data['login'];
		$hash = $this->hash_password();

		if(empty($avatar))
        {
            $avatar = 'avatar.jpg';
        }
			$query = $this->database->ConnectDatabase()->prepare("INSERT INTO user(`login`, `password`) VALUES(:login, :password)");
			$query->bindParam(':login', $login, PDO::PARAM_STR);
			$query->bindParam(':password',$hash, PDO::PARAM_STR);	
			$query->execute();
			
	
	}
}
  <form action="registration.php" method="post" id="formularz">
        <div class="row d-flex">
            <div class="form-group col-xl-12 text-light" id="inputWithIcon inputIconBg">
                <input type="text" name="login"  class="form-control border border-dark" placeholder="Login...">
                <span class="error">
				<?php
				 if(isset($_POST['submit']))
				 {
					 try{
						 $FormRegisterValidation->LoginValidation();
						 
					 }catch(ValidationException $exception)
					 {
						 echo $errorMessage = $exception->getMessage();
					 }
				 }
				
				?>
			</span>
            </div>
        </div>
        <div class="row">
            <div class="form-group col-xl-12 text-light"  id="inputWithIcon inputIconBg">
                <input type="password" name="password"  class="form-control border border-dark" placeholder="Hasło...">
                <span class="error">
				<?php
				 if(isset($_POST['submit']))
				 {
					 try{
						 $FormRegisterValidation->PasswordValidation();
						 
					 }catch(ValidationException $exception)
					 {
						 echo $errorMessage = $exception->getMessage();
					 }
				 }
				
				?>
			</span>
            </div>
        </div>
        <div class="row">
            <div class="form-group col-xl-12 text-light"  id="inputWithIcon inputIconBg">
                <input type="password" name="password_repeat"  class="form-control border border-dark" placeholder="Powtórz hasło...">
                <span class="error">
				<?php
				 if(isset($_POST['submit']))
				 {
					 try{
						 $FormRegisterValidation->PasswordRepeatValidation();
						 
					 }catch(ValidationException $exception)
					 {
						 echo $errorMessage = $exception->getMessage();
					 }
				 }
				
				?>
			</span>
            </div>
        </div>

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 1,225 wizyt
0 głosów
1 odpowiedź 137 wizyt
pytanie zadane 21 listopada 2022 w SQL, bazy danych przez nigraS Początkujący (260 p.)
0 głosów
1 odpowiedź 1,872 wizyt
pytanie zadane 8 czerwca 2016 w SQL, bazy danych przez Szymon Ciamaga Obywatel (1,980 p.)

92,583 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...