RedBeanPHP ввод данных в кастомную таблицу

232
17 сентября 2017, 01:51

Доброго времени суток. Частенько делал регистрации на RedBeanPHP, и в данной ситуации тоже, но большое НО. Сделал - всё работает. Запилил на клиентский хостинг и бац у него гребанный cloudabove который использует default_engine MyISAM, по запросу в саппорт - они отказались менять дэфолт энгин.

Ниже будет код регистрации и логина, но суть в том что RedBeanPHP создаёт таблицу таким образом сам, и ему для этого нужен дэфолт энгин MyISAM, чего в моей ситуации нет. Кастомно я могу создать таблицу с типом MyISAM но как мне изменить код или что мне здесь изменить, если возможно, чтоб оно не создавало отдельную таблицу, а добавляло в кастомно созданную мной с типом MyISAM, если дэфолтной так же останется MyISAM.

Ниже код регистрации:

$data = $_POST;
if(isset( $data['do_signup']) ){
    //registration here
    //errors validation
    $errors = array();
    if( trim($data['login']) == '' ){
        $errors[] = 'Type your login';
    }
    if( trim($data['email']) == '' ){
        $errors[] = 'Type your email';
    }
    if( $data['password'] == '' ){
        $errors[] = 'Type your password';
    }
    if( $data['password_repeat'] != $data['password'] ){
        $errors[] = 'Passwords does not match';
    }
    //end

    // Check repeats of login and password
    if( R::count('users', 'login = ?', array($data['login']) ) > 0){
        $errors[] = 'User with such login is already exist';
    }
    if( R::count('users', 'email = ?', array($data['email']) ) > 0){
        $errors[] = 'User with such email is already exist';
    }
    //end


    //if no errors do
    if( empty($errors) ){
        //registration
        $user = R::dispense('users');
        $user->login = $data['login'];
        $user->email = $data['email'];
        $user->password = password_hash($data['password'], PASSWORD_DEFAULT);
        R::store($user);
        echo '<div style="color:green">Thanks for registration!</div>';
    }   
    else{
        echo '<div id="errors" style="color:red">'.array_shift($errors).'</div><hr>';
    }
    //end


}

Код логина:

$data = $_POST;
if( isset($data['do_signin']) ){

    $errors = array();
    $user = R::findOne('users', 'login = ?', array($data['login']));
    if( $user ){
        if(password_verify($data['password'], $user->password) ) {
            //if all is good 
            $_SESSION['logged_user'] = $user;
            echo '<div style="color:green">Success!</div>';
        }
        else{
            $errors[] = 'Incorrect password';
        }
    } 
    else{
        $errors[] = 'User with such login is not found';
    }
    if( ! empty($errors) ){
        //login
        echo '<div id="errors" style="color:red">'.array_shift($errors).'</div><hr>';
    }   
}
READ ALSO
Время отсчёта PHP

Время отсчёта PHP

ЗдравствуйтеИ так, назрел вопрос

248
Почему функция не работает на живом сайте, хотя работала в локальном сайте?

Почему функция не работает на живом сайте, хотя работала в локальном сайте?

Не могу понять, почему функция вывода различных записей работает на локальном сайте, но не работает на живом сайте? Вот например эта:

164
Как вывести двойные кавычки в twig?

Как вывести двойные кавычки в twig?

Как вывести двойные кавычки в twig

385