Pengekstrakan Objek Pengesahan Borang dan Kelas Pengesahan
Jul 18, 2024 pm 12:25 PMDalam projek kami sebelum ini, kami mempelajari cara log masuk atau log keluar pengguna berdaftar. Tetapi hari ini, kita akan belajar cara mengekstrak objek pengesahan borang dan mengenai pengekstrakan kelas mengesahkan dalam projek.
Di Sebelah Kod VS
Untuk memulakan projek, kita perlu menambah direktori baharu bernama Http, kemudian alihkan pengawal ke dalam direktori baharu ini. Seterusnya, kita perlu menambah satu lagi direktori baharu dalam Http bernama Forms dan menambah fail baru LoginForm dalam direktori ini. Kemudian, kita perlu menjalankan projek, yang akan menunjukkan ralat kerana pengawal telah dialihkan ke direktori baharu dan laluan mereka perlu dikemas kini dalam route.php.
$router->get('/', 'index.php'); $router->get('/about', 'about.php'); $router->get('/contact', 'contact.php'); $router->get('/notes', 'notes/index.php')->only('auth'); $router->get('/note', 'notes/show.php'); $router->delete('/note', 'notes/destroy.php'); $router->get('/note/edit', 'notes/edit.php'); $router->patch('/note', 'notes/update.php'); $router->get('/notes/create', 'notes/create.php'); $router->post('/notes', 'notes/store.php'); $router->get('/register', 'registration/create.php')->only('guest'); $router->post('/register', 'registration/store.php')->only('guest'); $router->get('/login', 'session/create.php')->only('guest'); $router->post('/session', 'session/store.php')->only('guest'); $router->delete('/session', 'session/destroy.php')->only('auth');
Ekstrak Objek Pengesahan Borang
Untuk mengekstrak objek pengesahan borang, kita perlu pergi ke session/store.php dan potong kod yang menyemak sama ada e-mel dan kata laluan yang diberikan adalah betul. Kami kemudiannya perlu mengalihkan kod ini ke fail LoginForm.php, yang terletak dalam direktori Http/Forms.
Borang Log Masuk
Fail LoginForm.php akan mengandungi data yang berkaitan dengan log masuk pengguna untuk mengesahkan borang dan tatasusunan ralat dilindungi yang menunjukkan ralat dalam projek
<? php namespace Http\Forms; use Core\Validator; class LoginForm { protected $errors = []; public function validate($email, $password) { if (!Validator::email($email)) { $this->errors['email'] = 'Please provide a valid email address.'; } if (!Validator::string($password)) { $this->errors['password'] = 'Please provide a valid password.'; } return empty($this->errors); } public function errors() { return $this->errors; } public function error($field, $message) { $this->errors[$field] = $message; } }
Kini kita dapat melihat projek itu berfungsi dengan baik.
Ekstrak Kelas Pengesahan
Seterusnya, untuk mengekstrak kelas yang disahkan, kita perlu memilih semua segmen kod yang digunakan untuk mengesahkan pengguna, seperti menyemak e-mel dan kata laluan pengguna. Kami kemudiannya perlu menambah fail authenticator.php baharu, yang akan mengandungi kelas pengesahan yang digunakan untuk pengesahan pengguna kemudian fungsi log masuk dan log keluar telah diimport.
<?ph namespace Core; class Authenticator { public function attempt($email, $password) { $user = App::resolve(Database::class) ->query('select * from users where email = :email', [ 'email' => $email ]) ->find(); if ($user) { if (password_verify($password, $user['password'])) { $this->login([ 'email' => $email ]); return true; } } return false; } public function login($user) { $_SESSION['user'] = [ 'email' => $user['email'] ]; session_regenerate_id(true); } public function logout() { $_SESSION = []; session_destroy(); $params = session_get_cookie_params(); setcookie('PHPSESSID', '', time() - 3600, $params['path'], $params['domain'], $params['secure'], $params['httponly']); } }
Kemas kini fail stor sesi
Seterusnya bergerak , Kita perlu kembali ke session/store.php dan memulakan $form dan masuk untuk log masuk pengguna baharu. Kami kemudiannya perlu melaksanakan syarat if untuk menyemak sama ada borang itu sah atau tidak. Jika borang tidak sah, kami perlu mengubah hala pengguna ke laluan yang dikehendaki.
<?php use Core\Authenticator; use Http\Forms\LoginForm; $email = $_POST['email']; $password = $_POST['password']; $form = new LoginForm(); if ($form->validate($email, $password)) { if ((new Authenticator)->attempt($email, $password)) { redirect('/'); } $form->error('email', 'No matching account found for that email address and password.'); } return view('session/create.view.php', [ 'errors' => $form
Dengan membuat perubahan ini, kami boleh mengekstrak kelas yang sahih untuk menukar rupa kod kami bermakna mudah difahami dan diubah suai.
Saya harap anda telah memahaminya dengan jelas
Atas ialah kandungan terperinci Pengekstrakan Objek Pengesahan Borang dan Kelas Pengesahan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Menambah bayang -bayang kotak ke blok dan elemen WordPress

Buat borang hubungan JavaScript dengan rangka kerja pintar

Buat editor teks sebaris dengan atribut yang boleh dipertikaikan

Membandingkan 5 Pembina Borang PHP Terbaik (dan 3 skrip percuma)

Menjadikan Peralihan Svelte Khas pertama anda

Pembaca Skrin Demystifying: Borang & Amalan Terbaik Diakses

Muat naik fail dengan multer di node.js dan ekspres
