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);
}
};
?>
PreviousXây dựng method maxLength 1.5NextBước 10: Giải thích thêm phương thức renderStatement trong class Mysql (ok)
Last updated