Extraktion des Formularvalidierungsobjekts und der Authentifizierungsklasse

WBOY
Freigeben: 2024-07-18 12:25:38
Original
828 Leute haben es durchsucht

Extraction of Form Validation Object and Authenticate Class

In unserem vorherigen Projekt haben wir gelernt, wie man einen registrierten Benutzer anmeldet oder abmeldet. Aber heute lernen wir, wie man ein Formularvalidierungsobjekt extrahiert und wie man die Klassenextraktion im Projekt authentifiziert.

Auf der VS-Code-Seite

Um das Projekt zu starten, müssen wir ein neues Verzeichnis namens Http hinzufügen und dann die Controller in dieses neue Verzeichnis verschieben. Als nächstes müssen wir ein weiteres neues Verzeichnis in Http mit dem Namen „Forms“ hinzufügen und in diesem Verzeichnis eine neue Datei „LoginForm“ hinzufügen. Dann müssen wir das Projekt ausführen, das einen Fehler anzeigt, da die Controller in ein neues Verzeichnis verschoben wurden und ihre Routen in „routes.php.
“ aktualisiert werden müssen

$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');
Nach dem Login kopieren

Formularvalidierungsobjekt extrahieren

Um ein Formularvalidierungsobjekt zu extrahieren, müssen wir zu session/store.php gehen und den Code ausschneiden, der prüft, ob die angegebene E-Mail-Adresse und das Passwort korrekt sind. Anschließend müssen wir diesen Code in die Datei LoginForm.php verschieben, die sich im Verzeichnis Http/Forms befindet.

Login Formular

Die Datei LoginForm.php enthält Daten zur Benutzeranmeldung zur Validierung von Formularen und ein geschütztes Fehlerarray, das auf Fehler im Projekt hinweist

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; } }
Nach dem Login kopieren

Jetzt können wir sehen, dass das Projekt gut funktioniert.

Authentifizieren-Klasse extrahieren

Als nächstes müssen wir zum Extrahieren einer Authentifizierungsklasse alle Codesegmente auswählen, die zur Authentifizierung des Benutzers verwendet werden, z. B. zur Überprüfung der E-Mail-Adresse und des Kennworts des Benutzers. Anschließend müssen wir eine neue Datei „authenticator.php“ hinzufügen, die eine Authentifizierungsklasse enthält, die für die Benutzerauthentifizierung verwendet wird. Anschließend wurden Anmelde- und Abmeldefunktionen importiert.

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']); } }
Nach dem Login kopieren

Sitzungsspeicherdatei aktualisieren

Im weiteren Verlauf müssen wir zu session/store.php zurückkehren und das $form initialisieren und für die neue Benutzeranmeldung eintreten. Anschließend müssen wir eine if-Bedingung implementieren, um zu prüfen, ob das Formular gültig ist oder nicht. Wenn das Formular nicht gültig ist, müssen wir den Benutzer auf den gewünschten Pfad umleiten.

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
Nach dem Login kopieren

Durch diese Änderungen können wir eine Authentifizierungsklasse extrahieren, um das Aussehen unseres Codes zu ändern, sodass er einfacher zu verstehen und zu ändern ist.

Ich hoffe, dass du es klar verstanden hast

Das obige ist der detaillierte Inhalt vonExtraktion des Formularvalidierungsobjekts und der Authentifizierungsklasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!