Register && checkerror 1.6

<?php
require_once '../lib/config/const.php';
require_once '../lib/config/database.php';
require_once '../lib/model/User.php';
$user = new User();
if ($_POST) {
	$data = $_POST['data'];
	// $data['User']['created'] = date('Y-m-d H:i:s');
	// $data['User']['modified'] = date('Y-m-d H:i:s');
	
	if ($user->saveLogin($data)) {
		Helper::redirect('movie');
	}
}

?>
<!DOCTYPE html>
<title>User Management</title>
<?php include "../templates/css.php"; ?>
<?php include "../templates/js.php"; ?>
</head>
<body>

<?php include '../templates/head.php'; ?>
<?php include '../templates/f_gnav.php'; ?>

<div class="heading">Customer Register</div>
<form action="" class="form" method="post">
	<section>
		<dl>
			<dt>
				Email
			</dt>
			<dd>
				<?php echo $user->form->input('email'); ?>
				<?php echo $user->form->error('email'); ?>
			</dd>
		</dl>
	</section>
	<section>
		<dl>
			<dt>
				Password
			</dt>
			<dd>
				<?php echo $user->form->input('password'); ?>
				<?php echo $user->form->error('password'); ?>
			</dd>
		</dl>
	</section>
	<section>
		<dl>
			<dt>
				Fullname
			</dt>
			<dd>
				<?php echo $user->form->input('fullname'); ?>
				<?php echo $user->form->error('fullname'); ?>
			</dd>
		</dl>
	</section>
	<section>
		<dl>
			<dt>
				Address
			</dt>
			<dd>
				<?php echo $user->form->input('address'); ?>
				<?php echo $user->form->error('address'); ?>
			</dd>
		</dl>
	</section>
	<section>
		<dl>
			<dd>
				<input type="submit" name="submit" value="Register">
			</dd>
		</dl>
	</section>
</form>

</body>
</html>
<?php
require_once 'Form.php';
require_once 'Mysql.php';
class AppModel {
  public $form     = null;
  protected $alias = null;
  protected $rules = null;
  protected $db    = null;
  protected $table = null;
  public function __construct() {
    $this->form = new Form();
    $this->form->setRules($this->rules);
    $this->form->setModel($this->alias);
    $this->db = Mysql::getInstance();
  }
  public function find($condition, $first = "all") {
    $result = $this->db->select($this->table, $condition);
    if ($first = "first") {
      return $result[0];
    }
    return $result;
  }
  public function save($data) {
    $this->data       = $data;
    if (!$this->form->validate($this->data[$this->alias])) {
      return false;
    }
  }
}
?>
<?php
require_once 'Validator.php';
class Form {
  private $model   = 'Model';
  protected $rules = null;
  public $inputs   = [];
  private $errors  = null;
  protected $validator = null;
  public function __construct() {
    // Validator object
    $this->validator = new Validator();
  }
  public function setRules($rules) {
    if (!empty($rules)) {
      $this->rules = $rules;
      foreach ($rules as $field => $rule) {
        if (!empty($rule['form'])) {
          $this->inputs[$field] = $rule['form'];
        }
      }
    }
  }
  public function input($name) {
    $type = 'text';
    foreach ($this->inputs as $field => $input) {
      if ($field == $name) {
        $type = $input['type'];
        switch ($type) {
          case 'text':
            $inputResult = '<input type="text" name="data[' . $this->model . '][' . $name . ']" value="">';
            break;
          case 'password':
            $inputResult = '<input type="password" name="data[' . $this->model . '][' . $name . ']" value="">';
            break;
          case 'textarea':
            $inputResult = '<textarea name="data[' . $this->model . '][' . $name . ']" value=""></textarea>';
            break;
        }
        return $inputResult;
      }
    }
  }
  public function setModel($model) {
    $this->model = $model;
  }
  public function validate($data) {
    $validate = $this->validator->validate($data,$this->rules);
    $this->errors = $this->validator->getErrors();
    return $validate;
  }
  public function error($field) {
    if (!empty($this->errors[$field])) {
      echo '<p class="err">'.$this->errors[$field].'</p>';
    }
  }
};
?>
<?php
class Validator {
  private $errors = [];
  private $data   = [];
  private $rules  = [];
  public function __construct() {}
  public function validate($data, $rules) {
  	$this->data = $data;
  	$this->rules = $rules;
  	$isOk = true;
  	foreach ($this->data as $key => $value) {
  		if(isset($this->rules[$key])) {
  			foreach ($this->rules[$key] as $valkey => $valData) {
  				if($valkey == 'form') {
  					continue;
  				}
          $rule = $valData['rule'];
  				$message = $valData['message'];
  				if(method_exists($this, $rule)) {
  					if(!$this->{$rule}($value)) {
  						$this->errors[$key] = $message;
  						$isOk = false;
  					}
  				}
  			}
  		}
  	}
  	return $isOk;
  }
  private function notEmpty($value) {
  	return !empty($value);
  }
  private function email($value) {
    if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $value)) {
      return true;
    } else {
      return false;
    }
  }
  private function is_tel($value) {
    if (!empty($value)) {
      return true;
    }

    if (preg_match("/^\d+(-*)\d+(-*)\d+$/", $value)) {
      return true;
    } else {
      return false;
    }
  }
  private function maxLength($value,$length) {
  	return (mb_strlen($value) < $length);
  }
  public function getErrors() {
    return $this->errors;
  }
};
?>
<?php
require_once 'AppModel.php';
require_once 'Session.php';
require_once "Helper.php";
class User extends AppModel {
  protected $table = 'user';
  protected $alias = 'User';
  private $session = null;
  protected $rules = [
    "email"    => [
      "form"     => [
        "type" => "text",
      ],
      "notEmpty" => [
        "rule"    => "notEmpty",
        "message" => MSG_ERR_NOTEMPTY,
      ],
      "isEmail"  => [
        "rule"    => "email",
        "message" => MSG_ERR_EMAIL,
      ],
    ],
    "password" => [
      "form"     => [
        "type" => "password",
      ],
      "notEmpty" => [
        "rule"    => "notEmpty",
        "message" => MSG_ERR_NOTEMPTY,
      ],
    ],
    "fullname" => [
      "form"     => [
        "type" => "text",
      ],
      "notEmpty" => [
        "rule"    => "notEmpty",
        "message" => MSG_ERR_NOTEMPTY,
      ],
    ],
    "address"  => [
      "form"     => [
        "type" => "textarea",
      ],
      "notEmpty" => [
        "rule"    => "notEmpty",
        "message" => MSG_ERR_NOTEMPTY,
      ],
    ],
  ];
  public function __construct() {
    parent::__construct();
    $this->session = new Session();
  }
  public function login($data) {
    $exists = $this->find(
      [
        "email"    => $data[$this->alias]['email'],
        "password" => $data[$this->alias]['password'],
      ],
      "first"
    );
    if (!empty($exists)) {
      $this->session->write(USER_INFO, $exists);
      $this->session->write(LOGGED_IN, true);
      return true;
    }
    return false;
  }
  public function isAdmin() {
    $data = $this->session->read(USER_INFO);
    return $data[$this->alias]['is_admin'];
  }
  public function saveLogin($data) {
    $data[$this->alias]['password'] = Helper::hash($data[$this->alias]['password']);
    parent::save($data);
  }
};
?>

Last updated