Ejemplo n.º 1
0
 public static function check($items = array())
 {
     $source = filter_input_array(INPUT_POST);
     $instance = new Validation();
     foreach ($items as $item => $rules) {
         $itemName = isset($rules['name']) ? $rules['name'] : 'No Name';
         foreach ($rules as $rule => $ruleValue) {
             $value = trim($source[$item]);
             if ($rule === 'required' && empty($value)) {
                 $instance->addError("{$itemName} is required");
             } else {
                 if (!empty($value)) {
                     switch ($rule) {
                         case 'min':
                             if (strlen($value) < $ruleValue) {
                                 $instance->addError("{$itemName} must be at least {$ruleValue} characters long");
                             }
                             break;
                         case 'max':
                             if (strlen($value) > $ruleValue) {
                                 $instance->addError("{$itemName} cannot be longer than {$ruleValue} characters");
                             }
                             break;
                         case 'matches':
                             if ($value != $source[$ruleValue]) {
                                 $instance->addError("{$ruleValue} must match {$item} ");
                             }
                             break;
                         case 'unique':
                             $check = $instance->_db->get($ruleValue, array($item, '=', $value));
                             if ($check->count()) {
                                 $instance->addError("{$itemName} must be unique");
                             }
                             break;
                         case 'phone':
                             break;
                         case 'email':
                             break;
                         case 'website':
                             $preg = "/^(https?:\\/\\/)([\\da-z\\.-]+)\\.([a-z\\.]{2,6})(\\/([\\da-z\\.-]+))*\\/?(([\\w\\.-]+)\\.([\\da-z]{2,6}))?((\\#[\\w\\.-]+)|(\\?([\\da-z]+(=[\\da-z]+)?)(&([\\da-z]+(=[\\da-z]+)?))*))?/i";
                             if (!preg_match($preg, $value)) {
                                 $instance->addError("{$itemName} must be  a valid website");
                             }
                     }
                 }
             }
         }
     }
     if (empty($instance->errors())) {
         $instance->confirm();
     }
     return $instance;
 }
Ejemplo n.º 2
0
 $logs = check(strval($_POST['logs']));
 $pars = check(strval($_POST['pars']));
 $pars2 = check(strval($_POST['pars2']));
 $provkod = check(strtolower($_POST['provkod']));
 $invite = !empty($config['invite']) ? check(strval($_POST['invite'])) : '';
 $meil = !empty($config['regmail']) ? strtolower(check(strval($_POST['meil']))) : '';
 $domain = !empty($config['regmail']) ? utf_substr(strrchr($meil, '@'), 1) : '';
 $gender = $_POST['gender'] == 1 ? 1 : 2;
 $registration_key = '';
 $_SESSION['reglogs'] = $logs;
 $_SESSION['regmeil'] = $meil;
 $_SESSION['gender'] = $gender;
 $validation = new Validation();
 $validation->addRule('equal', array($provkod, $_SESSION['protect']), 'Проверочное число не совпало с данными на картинке!')->addRule('regex', array($logs, '|^[a-z0-9\\-]+$|i'), 'Недопустимые символы в логине. Разрешены знаки латинского алфавита, цифры и дефис!', true)->addRule('regex', array($pars, '|^[a-z0-9\\-]+$|i'), 'Недопустимые символы в пароле. Разрешены знаки латинского алфавита, цифры и дефис!', true)->addRule('email', $meil, 'Вы ввели неверный адрес e-mail, необходим формат name@site.domen!', $config['regmail'])->addRule('string', $invite, 'Слишком длинный или короткий пригласительный ключ!', $config['invite'], 15, 20)->addRule('string', $logs, 'Слишком длинный или короткий логин!', true, 3, 20)->addRule('string', $pars, 'Слишком длинный или короткий пароль!', true, 6, 20)->addRule('equal', array($pars, $pars2), 'Ошибка! Введенные пароли отличаются друг от друга!')->addRule('not_equal', array($logs, $pars), 'Пароль и логин должны отличаться друг от друга!');
 if (ctype_digit($pars)) {
     $validation->addError('Запрещен пароль состоящий только из цифр, используйте буквы!');
 }
 if (substr_count($logs, '-') > 2) {
     $validation->addError('Запрещено использовать в логине слишком много дефисов!');
 }
 if (!empty($logs)) {
     // Проверка логина или ника на существование
     $reglogin = DB::run()->querySingle("SELECT `users_id` FROM `users` WHERE LOWER(`users_login`)=? OR LOWER(`users_nickname`)=? LIMIT 1;", array(strtolower($logs), strtolower($logs)));
     $validation->addRule('empty', $reglogin, 'Пользователь с данным логином или ником уже зарегистрирован!');
     // Проверка логина в черном списке
     $blacklogin = DB::run()->querySingle("SELECT `black_id` FROM `blacklist` WHERE `black_type`=? AND `black_value`=? LIMIT 1;", array(2, strtolower($logs)));
     $validation->addRule('empty', $blacklogin, 'Выбранный вами логин занесен в черный список!');
 }
 if (!empty($config['regmail']) && !empty($meil)) {
     // Проверка email на существование
     $regmail = DB::run()->querySingle("SELECT `users_id` FROM `users` WHERE `users_email`=? LIMIT 1;", array($meil));
Ejemplo n.º 3
0
     break;
     ############################################################################################
     ##                                     Изменение пароля                                   ##
     ############################################################################################
 ############################################################################################
 ##                                     Изменение пароля                                   ##
 ############################################################################################
 case 'editpass':
     $uid = !empty($_GET['uid']) ? check($_GET['uid']) : 0;
     $newpass = isset($_POST['newpass']) ? check($_POST['newpass']) : '';
     $newpass2 = isset($_POST['newpass2']) ? check($_POST['newpass2']) : '';
     $oldpass = isset($_POST['oldpass']) ? check($_POST['oldpass']) : '';
     $validation = new Validation();
     $validation->addRule('equal', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')->addRule('equal', array(md5(md5($oldpass)), $udata['users_pass']), 'Введенный пароль не совпадает с данными в профиле!')->addRule('equal', array($newpass, $newpass2), 'Новые пароли не одинаковые!')->addRule('string', $newpass, 'Слишком длинный или короткий новый пароль!', true, 6, 20)->addRule('regex', array($newpass, '|^[a-z0-9\\-]+$|i'), 'Недопустимые символы в пароле, разрешены знаки латинского алфавита, цифры и дефис!', true)->addRule('not_equal', array($log, $newpass), 'Пароль и логин должны отличаться друг от друга!');
     if (ctype_digit($newpass)) {
         $validation->addError('Запрещен пароль состоящий только из цифр, используйте буквы!');
     }
     if ($validation->run()) {
         DB::run()->query("UPDATE `users` SET `users_pass`=? WHERE `users_login`=? LIMIT 1;", array(md5(md5($newpass)), $log));
         if (!empty($udata['users_email'])) {
             sendMail($udata['users_email'], 'Изменение пароля на сайте ' . $config['title'], nl2br("Здравствуйте, " . nickname($log) . " \nВами была произведена операция по изменению пароля \n\nВаш новый пароль: " . $newpass . " \nСохраните его в надежном месте \n\nДанные инициализации: \nIP: " . $ip . " \nБраузер: " . $brow . " \nВремя: " . date('j.m.y / H:i', SITETIME)));
         }
         unset($_SESSION['log'], $_SESSION['par']);
         notice('Пароль успешно изменен!');
         redirect("login.php");
     } else {
         show_error($validation->getErrors());
     }
     echo '<img src="/images/img/back.gif" alt="image" /> <a href="account.php">Вернуться</a><br />';
     break;
     ############################################################################################
Ejemplo n.º 4
0
 /**
  * Validates the current request against the specified parameter list.  
  * If any of the specified parameters are found to be null or empty in 
  * the current request the validation will fail and the request should be 
  * marked invalid.
  *
  * @param array $attributes list of attributes to validate.
  * @param boolean <code>$failfast</code> true if this validation should 
  * fail fast (return on first encounter of invalid attribute).
  *
  * @return true if the current request validates; otherwise false.
  */
 protected function validate($parameters, $failfast = false)
 {
     $result = new Validation();
     if (!is_array($parameters)) {
         return $result;
     }
     $result->setValid(true);
     foreach ($parameters as $parameter) {
         $value = $this->get($parameter);
         if ($value === NULL or $value === '' or empty($value)) {
             $result->setValid(false);
             $result->addError($parameter);
             if ($failfast) {
                 return $result;
             }
         }
     }
     return $result;
 }
Ejemplo n.º 5
0
    $validate = new Validation();
    $validate->check($_POST, array('Username' => array('required' => true), 'Password' => array('required' => true)));
    $data = array();
    $data['Success'] = false;
    if ($validate->passed()) {
        $user = new User();
        $login = $user->login($_POST['Username'], Hash::make($_POST['Password']));
        if ($login) {
            if ($user->isActivated($_POST['Username'])) {
                $data['Success'] = true;
                $data['Redirect'] = 'Index.php';
                $data['Session'] = Session::get(Config::get('session/session_name'));
                echo json_encode($data);
            } else {
                $data['Success'] = false;
                $validate->addError("Account is not activated, please check your email");
                $data['Errors'] = $validate->Errors();
                echo json_encode($data);
            }
        } else {
            $data['Success'] = false;
            $validate->addError("Wrong password or Username");
            $data['Errors'] = $validate->Errors();
            echo json_encode($data);
        }
    } else {
        $data['Errors'] = $validate->Errors();
        $data['Success'] = false;
        echo json_encode($data);
    }
}
Ejemplo n.º 6
0
            $client_insert['client_id'] = $pdo->lastInsertId();
            /* Hitórico */
            $pdo->prepare('INSERT INTO client_history (
                    client_id, user_id, status, typing, name, email, ip_address, call_date , start_call_date , time
            ) VALUES (
                    :client_id, :user_id, :status, :typing, :name, :email, :ip_address, NOW(), NULL, :time
            )')->execute($client_insert);
            /* Sessão */
            $client_insert['name'] = $name;
            $user = array('user_id' => 0, 'name' => NULL);
            $session = new Session();
            $session->register('client', $client_insert);
            $session->register('client_user', $user);
            header('Location: main.php');
            exit;
        } else {
            $vld->addError('Já existe um cliente com o e-mail informado');
        }
    }
}
$tpl->assign('error', $vld->getErrorsAsHtml());
$stmt = $pdo->prepare('SELECT COUNT(*) FROM user WHERE time > :time AND status = :status');
$stmt->bindValue('time', $lifeTime);
$stmt->bindValue('status', 1);
$stmt->execute();
if ($stmt->fetchColumn() == 0) {
    $tpl->block('info');
} else {
    $tpl->block('form');
}
$tpl->show();
Ejemplo n.º 7
0
 /**
  * Form token validation
  * @param  array $validations The array of validation rules
  * @return void
  */
 public static function validate($validations = null)
 {
     if (!isset($_POST['lc_formToken_' . _cfg('formTokenName')])) {
         return false;
     }
     $token = _decrypt(session_get(_cfg('formTokenName')));
     $postedToken = _decrypt(_post($_POST['lc_formToken_' . _cfg('formTokenName')]));
     $result = false;
     # check token first
     if ($token == $postedToken) {
         # check referer if it is requesting in the same site
         if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] && _cfg('siteDomain')) {
             $siteDomain = _cfg('siteDomain');
             $siteDomain = preg_replace('/^www\\./', '', $siteDomain);
             $parsedURL = parse_url($_SERVER['HTTP_REFERER']);
             $parsedURL['host'] = preg_replace('/^www\\./', '', $parsedURL['host']);
             if (strcasecmp($siteDomain, $parsedURL['host']) == 0) {
                 $result = true;
             }
         }
     }
     if ($result == false) {
         Validation::addError('', _t('Error occured during form submission. Please refresh the page to try again.'));
         return false;
     }
     if ($validations && Validation::check($validations) === false) {
         return false;
     }
     return true;
 }
Ejemplo n.º 8
0
<?php

require_once '../util/header.php';
require_once 'includes.php';
$session = new Session();
$session->checkSession('user');
$vld = new Validation();
$vld->validate();
if ($vld->hasErrors() == false) {
    extract($_POST, EXTR_SKIP);
    $pdo = PDOConnection::getInstance();
    $user_session = $session->get('user');
    $stmt = $pdo->prepare('SELECT * FROM user WHERE user_id = :user_id');
    $stmt->bindValue('user_id', $user_session['user_id']);
    $stmt->execute();
    $user = $stmt->fetch();
    if (sha1($password . $systemPasswordSalt) != $user['password']) {
        $vld->addError('Senha atual não confere');
    } else {
        $stmt = $pdo->prepare('UPDATE user SET password = :password WHERE user_id = :user_id');
        $stmt->bindValue('user_id', $user_session['user_id']);
        $stmt->bindValue('password', sha1($new_password . $systemPasswordSalt));
        $stmt->execute();
        $vld->addMessage('Senha alterada com sucesso');
    }
}
$vld->jsonResult();
Ejemplo n.º 9
0
        $stmt->bindParam('user', $user);
        $stmt->bindParam('password', sha1($password . $systemPasswordSalt));
        $stmt->bindValue('status', 1);
        $stmt->execute();
        if ($stmt->fetchColumn() > 0) {
            $stmt = $pdo->prepare('SELECT COUNT(*) FROM user WHERE user = :user  AND time > :time AND status = :status');
            $stmt->bindParam('user', $user);
            $stmt->bindValue('time', $lifeTime);
            $stmt->bindValue('status', 1);
            $stmt->execute();
            if ($stmt->fetchColumn() == 0) {
                $stmt = $pdo->prepare('SELECT * FROM user WHERE user = :user AND password = :password AND status = :status LIMIT 1');
                $stmt->bindParam('user', $user);
                $stmt->bindParam('password', sha1($password . $systemPasswordSalt));
                $stmt->bindValue('status', 1);
                $stmt->execute();
                $user = $stmt->fetch(PDO::FETCH_ASSOC);
                $session = new Session();
                $session->register('user', $user);
                header('Location: main.php');
                exit;
            } else {
                $vld->addError('Já existe um usuário logado com os dados informados');
            }
        } else {
            $vld->addError('Usuário ou senha inválido');
        }
    }
}
$tpl->assign('error', $vld->getErrorsAsHtml());
$tpl->show();
Ejemplo n.º 10
0
<?php

require_once '../util/header.php';
require_once 'includes.php';
$session = new Session();
$session->checkSession('user');
$vld = new Validation();
$vld->validate();
if ($vld->hasErrors() == false) {
    extract($_POST, EXTR_SKIP);
    $headers = "From: <{$from}>\r\n";
    $headers .= "Content-type: text/html; charset=utf-8\r\n";
    if (@mail($to, $subject, $message, $headers)) {
        $vld->addMessage('E-mail enviado com sucesso');
    } else {
        $vld->addError('Falha ao enviar E-mail, tente novamente');
    }
}
$vld->jsonResult();
Ejemplo n.º 11
0
<?php

require_once '../util/header.php';
require_once 'includes.php';
$session = new Session();
$session->checkSession('user');
$vld = new Validation();
$vld->validate();
if ($vld->hasErrors() == false) {
    extract($_POST, EXTR_SKIP);
    $pdo = PDOConnection::getInstance();
    $stmt = $pdo->prepare('SELECT COUNT(*) FROM user WHERE user = :user');
    $stmt->bindValue('user', $user);
    $stmt->execute();
    if ($stmt->fetchColumn() > 0) {
        $vld->addError('Já existe um cadastro com o usuário (' . $user . ')');
    } else {
        $user_add = array('status' => 1, 'typing' => 0, 'name' => $name, 'level' => $level, 'email' => $email, 'photo' => NULL, 'user' => $user, 'password' => sha1($password . $systemPasswordSalt), 'time' => 0);
        $pdo->prepare('INSERT INTO user (
                status, typing, level, name, email, photo, user, password, register_date, time
        ) VALUES (
                :status, :typing, :level, :name, :email, :photo, :user, :password, NOW(), :time
        )')->execute($user_add);
        $vld->addMessage('Usuário (' . $user . '), adicionado com sucesso');
    }
}
$vld->jsonResult();