Ben yaklaşık bir yıl boyunca PHP ile çalışan oldum, ama ben bir hobi olarak yapmak. Ben bana tamamen yanlış yapıyor olabilir ne tavsiye vermek için bir öğretmen ya da bir akıl hocası olarak gidebilir kimseyi, ya da ne ben daha iyi yapabileceğini yok. Ben o yıl içinde epeyce farklı şeyler yaptık, bu yüzden kendimi tam bir çaylak düşünün olmaz.
Neyse, ben sadece bir çerçeve (Kohana) kullanmaya başladı, ve gerçekten orada öyle ki bu yüzden ben iyi bir şekilde şeyleri yapıyorum tamamen emin değilim orada çok öğreticiler.
Ben sadece dedi ne ilişkin bazı geribildirim almak nakletmek istiyorum bir kaç kod parçacıkları var.
Ilk olarak
User Controller
class User_Controller extends Template_Controller{
public function register()
{
// logged in users cant register
if($this->logged_in)
{
url::redirect('user/profile');
}
// initially show an empty form
$form = $errors = array
(
'username' => '',
'email' => '',
'password' => '',
'gender' => '',
'dob_month' => '',
'dob_day' => '',
'dob_year' => '',
'date_of_birth' => '',
'captcha' => '',
'registration' => ''
);
// check for a form submission
if($this->input->post('register'))
{
// get the form
$post = $this->input->post();
// prepare the data for validation
$post['date_of_birth'] = "{$post['dob_year']}-{$post['dob_month']}-{$post['dob_day']}";
// create a new user
$user = ORM::factory('user');
// validate and register the user.
if($user->register($post, TRUE))
{
// SEND EMAIL
// login using the collected data
if(Auth::instance()->login($post->username, $post->password, TRUE))
{
// redirect the user to the profile page
//url::redirect("user/profile/{$user->id}");
}
}
// get validation errors and repopulate the form
$form = arr::overwrite($form, $post->as_array());
$errors = arr::overwrite($errors, $post->errors('registration_errors'));
}
// template variables
$this->template->title = 'Sign Up';
$this->template->body = new View('layout_1');
// layout variables
$this->template->body->left = new View('user/registration_form');
$this->template->body->right = 'Right Side Content';
// registration form variables
$this->template->body->left->form = $form;
$this->template->body->left->errors = $errors;
$this->template->body->left->captcha = new Captcha('register');
}
}
Register Function within User_Model
class User_Model extends ORM{
public function register(array& $user, $save = FALSE)
{
$user = new Validation($user);
// logged in users cant register
if(Auth::instance()->logged_in())
{
$user->add_error('registration', 'logged_in');
return FALSE;
}
// trim everything
$user->pre_filter('trim')
// everything is required
->add_rules('*', 'required')
// username must be 5 - 30 alphanumeric characters and available
->add_rules('username', 'length[5,30]', 'valid::alpha_numeric', array($this, 'username_available'))
// email must be valid format and available
->add_rules('email', 'valid::email', array($this, 'email_available'))
// password must be 5 - 15 characters and alpha dash
->add_rules('password', 'length[5,15]', 'valid::alpha_dash')
// gender must be either male or female. capitalize first letter
->add_rules('gender', array($this, 'valid_gender'))
->post_filter('ucfirst', 'gender')
// dob must be a valid date, and user must be old enough.
->add_callbacks('date_of_birth', array($this, 'check_dob'))
// captcha must be entered correctly.
->add_rules('captcha', 'Captcha::valid');
// add the registration date
$this->registration_date = date::unix2mysql(); // helper function transforms the current unix to mysql datetime format
// validate the information. an ORM function.
$result = parent::validate($user, $save);
// was the user info valid?
if($result === TRUE)
{
// was the user saved?
if($save === TRUE)
{
// add a login role
$this->add(ORM::factory('role', 'login'));
$this->save();
}
}
else
{
$user->add_error('registration', 'failed');
}
return $result;
}
}
Bilgisi doğrulanırken Çoğunlukla tüm modeller aynı biçimde izleyin.
Ben de hakkında geri bildirim seviniriz diğer bazı şeyler var, ama kimseyi mahçup etmek istemiyorum.
Thanks a lot for your time
EDIT: Özür dilerim, kullanıcı denetleyicisi ve model hem de gönderdiniz gerekir. Ben modelleri şişman nasıl olması gerektiği hakkında çok okuma oldum ve denetleyiciler sıska olmalıdır. Ben yerine kontrolör içerisinde bunu yaparken bilgi doğrulamak için model bir register fonksiyonunu yarattı neden Thats. Register fonksiyonu bir dizi alır, ama ben kullanıcı girişi almak ve hataları böylece bir doğrulama nesnesine bu diziyi dönüşür. Ben bu şekilde yapıldı Kohana üzerinde birkaç öğreticiler gördüm.