За последние 24 часа нас посетили 22893 программиста и 1243 робота. Сейчас ищут 762 программиста ...

Не работает проверка на количество при помощи R::count

Тема в разделе "PHP и базы данных", создана пользователем Melann, 11 июн 2019.

  1. Melann

    Melann Новичок

    С нами с:
    10 июн 2019
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте, создавал регистрацию на сайте при помощи html, php и redbeanphp, в итоге начал делать проверку на наличие логина или почты в базе данных. Так вот, у меня не работает эта проверка, хотя код вроде правильный

    <!DOCTYPE html>
    <html>

    <head>

    <meta charset="UTF-8"/>
    <title>Регистрация (Внешний вид)</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <?php
    require "db.php"
    ?>

    </head>

    <body>
    <?php
    $data = $_POST;
    if( isset($data['do_signup']) )
    {
    $errors = array();
    if ($data['password2'] != $data['password']) {
    $errors[] = 'Пароли не совпадают';
    }

    if (R::count('user', "login = ? OR email = ?", array($data['username'], $data['email'])) > 0 ){
    $errors[] = 'Пользователь с таким логином или почтой уже существует';
    }

    if( empty($errors)){

    $user = R::dispense('users');
    $user->login = $data['username'];
    $user->email = $data['email'];
    $user->password = password_hash($data['password'], PASSWORD_DEFAULT);
    R::store($user);
    echo '<div style="color: white;">Вы успешно зарегистрированы
    </div><hr>';
    } else{
    echo '<div style="color: white;">'.array_shift($errors).'
    </div><hr>';
    }
    }
    ?>

    <form action="/signup.php" method="POST">

    <h1 title "Регистрация на сайте">Регистрация</h1>

    <div class="group">
    <input type="text" name="username" placeholder="Логин" required="">
    </div>

    <div class="group">
    <input type="password" name="password" placeholder="Пароль" required="">
    </div>

    <div class="group">
    <input type="password" name="password2" placeholder="Повторите пароль" required="">
    </div>

    <div class="group">
    <input type="email" name="email" placeholder="Электронная почта" required="">
    </div>

    <div class="group">
    <center><button name="do_signup" type="submit">Зарегистрироваться</button></center>
    </div>

    </form>


    </body>

    </html>
     
    #1 Melann, 11 июн 2019
    Последнее редактирование: 11 июн 2019
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    в 2к19 будет так:
    PHP:
    1. <?php
    2.  
    3. error_reporting ( E_ALL );
    4.  
    5. # ... <php>
    6.  
    7. if ( filter_input ( INPUT_SERVER, 'REQUEST_METHOD' ) == 'POST' )
    8. {
    9.     $input = filter_input_array ( INPUT_POST, [
    10.         'username' => FILTER_DEFAULT,
    11.         'email' => FILTER_VALIDATE_EMAIL,
    12.         'password' => FILTER_DEFAULT,
    13.         'password2' => FILTER_DEFAULT
    14.     ] );
    15.    
    16.     $e = [];
    17.    
    18.     if ( in_array ( null, $input ) )
    19.     {
    20.         header ( 'Location: /signup.php' );
    21.         exit;
    22.     }
    23.    
    24.     if ( R :: count ( 'user', 'login = ? OR email = ?', [ $input['username'], $input['email'] ] ) > 0 )
    25.     {
    26.         $e[] = 'yes user or email';
    27.     }
    28.    
    29.     if ( $input['password'] !== $input['password2'] )
    30.     {
    31.         $e[] = 'no password ==';
    32.     }
    33.    
    34.     if ( $e == [] )
    35.     {
    36.         $user = R :: dispense( 'users' );
    37.         $user -> login = $input['username'];
    38.         $user -> email = $input['email'];
    39.         $user -> password = password_hash ( $input['password'], PASSWORD_DEFAULT );
    40.         R :: store( $user );
    41.        
    42.         /*
    43.         тут нужен код на auth сохранение пользователя
    44.        
    45.         header ( 'Location: /' );
    46.         exit; */
    47.     }
    48.    
    49.     echo '<div style="color: white;"><p>' . implode ( '</p><p>', $e ) . '</p></div><hr>';
    50. }
    51.  
    52. # END
    --- Добавлено ---
    а что именно не работает, для этого есть документация по работе с обверткой