За последние 24 часа нас посетили 36938 программистов и 7904 робота. Сейчас ищут 1754 программиста ...

Проблемы с добавлением пользователя в БД

Тема в разделе "PHP для новичков", создана пользователем Vladislav Tul, 2 мар 2023.

Метки:
  1. Vladislav Tul

    Vladislav Tul Новичок

    С нами с:
    19 сен 2022
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте. Создаю регистрацию на PHP PDO. При добавлении пользователя с хешированным паролем данные не заносятся в БД.
    PHP:
    1. <?php
    2.  
    3. require_once("DataBaseConfig.php");
    4.  
    5. class SignUpConfig{
    6.     private $id;
    7.     private $userName;
    8.     private $login;
    9.     private $email;
    10.     private $password;
    11.     public $dbConn;
    12.  
    13.     public function __construct($id = 0, $userName = "", $login = "", $email = "", $password = ""){
    14.         $this->id = $id;
    15.         $this->userName = $userName;
    16.         $this->login = $login;
    17.         $this->email = $email;
    18.         $this->password = $password;
    19.        
    20.         $this->dbConn = new PDO(DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASSWORD, [PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]);
    21.     }
    22.  
    23.     public function SetId($id){
    24.         $this->id = $id;
    25.     }
    26.  
    27.     public function GetId(){
    28.         return $this->id;
    29.     }
    30.  
    31.     public function SetUserName($userName){
    32.         $this->userName = $userName;
    33.     }
    34.  
    35.     public function GetUserName(){
    36.         return $this->userName;
    37.     }
    38.  
    39.     public function SetLogin($login){
    40.         $this->login = $login;
    41.     }
    42.  
    43.     public function GetLogin(){
    44.         return $this->login;
    45.     }
    46.  
    47.     public function SetEmail($email){
    48.         $this->email = $email;
    49.     }
    50.  
    51.     public function GetEmail(){
    52.         return $this->email;
    53.     }
    54.  
    55.     public function SetPassword($password){
    56.         $this->password = $password);
    57.     }
    58.  
    59.     public function GetPassword(){
    60.         return $this->password;
    61.     }
    62.  
    63.     public function InserDatatUser(){
    64.         try{
    65.             $stm = $this->dbConn->prepare("INSERT INTO `users` (`username`, `login`, `email`, `password`) VALUES (?,?,?,?)");
    66.             $stm->execute([$this->userName, $this->login, $this->email, md5($this->password)]);
    67.         }
    68.         catch(Exception $e){
    69.             return $e->getMessage();
    70.         }
    71.     }
    72. }
    73.  
    74. if(isset($_POST['signUp'])){
    75.  
    76.     require_once("SignUpConfig.php");
    77.  
    78.     $signUp = new SignUpConfig();
    79.  
    80.     $signUp->SetUserName($_POST['username']);
    81.     $signUp->SetLogin($_POST['login']);
    82.     $signUp->SetEmail($_POST['email']);
    83.     $signUp->SetPassword($_POST['password']);
    84.  
    85.     $signUp->InserDatatUser();
    86.  
    87.     echo "<script>alert('User created Successfully'); document.location='../home.php'</script>";
    88.  
    89. }
    90.  
    91.  
    92. ?>
    От модератора: для кода кнопка </>
     
    #1 Vladislav Tul, 2 мар 2023
    Последнее редактирование модератором: 3 мар 2023
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    а константы то определены... прям в классе??? ))) DB_TYPE итд попробуйте вывести их в конструкторе ...
    ну и при создании коннекта обычно стараются предусмотреть сообщения об ошибке - если не получилось законнектится
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.223
    Адрес:
    там-сям
    @Vladislav Tul не ставь в конце файла ?>. это официальная рекомендация от разрабов php

    семен семеныч, ну что же вы!!!
    ошибку ты успешно прячешь от самого себя — перехватил и никак не используешь потом.

    если ты так сделал, было бы логично проверять вернула ли функция что-то (любой не null). и если вернула, то вместо "User created Successfully" выводить в алерте текст ошибки.