So melden Sie sich bei yii an
Beispiel für die yii-Anmeldemethode:
1. LoginForm.php
Benutzeranmeldemodul, es werden Benutzername und Passwort übermittelt, also wir Sie Sie müssen zuerst ein Modell erstellen, um die von Benutzern übermittelten Daten speziell zu verarbeiten. Erstellen Sie daher zunächst ein neues LoginForm.php. Das Folgende ist der Code:
<?php namespace app\modules\backend\models; use Yii; use yii\base\Model; /** * LoginForm is the model behind the login form. */ class LoginForm extends Model { public $username; public $password; public $rememberMe = true; private $_user = false; /** * @return array the validation rules. */ public function rules()<span style="white-space:pre"> </span>//① { return [ // username and password are both required [['username', 'password'], 'required','message'=>""], // rememberMe must be a boolean value ['rememberMe', 'boolean'], // password is validated by validatePassword() ['password', 'validatePassword'], ]; } /** * Validates the password. * This method serves as the inline validation for password. * * @param string $attribute the attribute currently being validated * @param array $params the additional name-value pairs given in the rule */ public function validatePassword($attribute, $params) { if (!$this->hasErrors()) { $user = $this->getUser(); if (!$user || !$user->validatePassword($this->password)) { $this->addError($attribute, 'Incorrect username or password.'); } } } /** * Logs in a user using the provided username and password. * @return boolean whether the user is logged in successfully */ public function login() { if ($this->validate()) { if($this->rememberMe) { $this->_user->generateAuthKey();//③ } return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0); } return false; } /** * Finds user by [[username]] * * @return User|null */ public function getUser() { if ($this->_user === false) { $this->_user = User::findByUsername($this->username); //② } return $this->_user; } }
Dieses Modell wird basierend auf dem LoginForm geändert, das mit der Basisversion geliefert wird Der größte Teil des Codes ist vorhanden. Beachten Sie hier den folgenden Code:
Die Codenummer ① ist die Regel. Die Regeln definieren die Regeln für die ausgefüllten Daten. Überprüfen Sie, ob die ausgefüllten Daten vorhanden sind ist leer, ob es dem Format entspricht usw., unter denen es eine gibt Die Spalte ist „Passwort“ und die entsprechende Regel ist „validatePassword“, die automatisch die Methode „validatePassword()“ der aktuellen Klasse aufruft. Achten Sie darauf, sie zu unterscheiden die Methode, die der Benutzerklasse unten entspricht.
Codenummer ② ruft die findByUsername-Methode in der User-Klasse auf. Diese User-Klasse wird unten geschrieben, hauptsächlich um eine AR-Klasseninstanz zum Vergleich mit den aktuellen LoginForm-Daten zurückzugeben.
Die Codenummer ③ wird hier vorerst nicht erwähnt. Wir werden sie erwähnen, wenn wir über die Cookie-Anmeldung sprechen.
2. User.php
(1) ActiveRecord-Klasse
Nach dem Ausfüllen von LoginForm fehlt uns noch etwas, das wir noch erhalten müssen Die Datenbank entnimmt die entsprechenden Daten zum Vergleich. Als Nächstes müssen wir eine Klasse für die aus der Datenbank erhaltenen Daten vervollständigen. Der vollständige Name lautet ActiveRecord Daten finden. Solange der Klassenname und die Datentabelle identisch sind, können Daten aus dieser Datentabelle abgerufen werden, zum Beispiel:
<?php namespace app\modules\backend\models; use yii\db\ActiveRecord; class User extends ActiveRecord{ } ?>
Sie können auch den zurückgegebenen Tabellennamen hinzufügen Überschreiben Sie einfach die folgende Methode in dieser Klasse:
public static function tableName(){ return 'user'; }
(2) IdentityInterface-Schnittstelle
Um Daten aus der Datenbank zu finden, müssen Sie im Allgemeinen nur die AR-Klasse erben. Bei uns handelt es sich um ein Benutzeranmeldemodell, dessen Kern die Verifizierung ist. Daher ist es selbstverständlich, die Kernverifizierungsfunktion zu implementieren, genau wie „validatePassword“ im LoginForm-Modell erwähnt, und die eigentliche Verifizierungslogik wird im aktuellen Benutzermodell vervollständigt. Im Allgemeinen müssen Sie zum Implementieren der IdentityInterface-Schnittstelle die folgenden Methoden implementieren:
public static function findIdentity($id); //① public static function findIdentityByAccessToken($token, $type = null); //② public function getId(); //③ public function getAuthKey(); //④ public function validateAuthKey($authKey); //⑤
①findIdentity: Suchen Sie die Daten, die der Datentabelle entsprechen, basierend auf der ID
②findIdentityByAccessToken dient zum Suchen der entsprechenden Daten Daten basieren auf AccessToken-Daten (oben erwähnt) und AccessToken. Wir haben dieses Feld auch in der Datentabelle. Wofür wird es also verwendet? Tatsächlich ist AccessToken in unserem aktuellen Benutzeranmeldemodell nicht sehr nützlich. Es wird speziell für die Resetful-Anmeldeüberprüfung verwendet. Die Details finden Sie hier.
③getId: Gibt die ID zurück, die der aktuellen AR-Klasse entspricht
④getAuthKey: Gibt den auth_key zurück, der der aktuellen AR-Klasse entspricht
⑤validateAuthKey: Diese Methode ist wichtiger und wir werden es tun Sprechen Sie später darüber. Der Kern der Cookie-Anmeldeüberprüfung ist erreicht.
Implementieren Sie die Schnittstelle in unserer User.php und schreiben Sie dann die obige Methode neu. Der vollständige User.php-Code lautet wie folgt:
$token]); } public static function findByUsername($username){ //① return static::findOne(['username'=>$username]); } public function getId(){ return $this->id; } public function getAuthkey(){ return $this->auth_key; } public function validateAuthKey($authKey){ return $this->auth_key === $authKey; } public function validatePassword($password){ //② return $this->password === md5($password); } /** * Generates "remember me" authentication key */ public function generateAuthKey() //③ { $this->auth_key = \Yii::$app->security->generateRandomString(); $this->save(); } } ?>
①findByUsername(): Im LoginForm-Code ist dies Der Zweck der Methode besteht darin, ein Datenelement zurückzugeben, das mit dem Benutzernamen in der Datentabelle übereinstimmt, dh eine AR-Instanz, basierend auf dem vom Benutzer übermittelten Benutzernamen.
②validatePassword(): Hier wird das vom Benutzer übermittelte Passwort mit dem Passwort der aktuellen AR-Klasse verglichen.
③generateAuthKey(): Generiert einen zufälligen Auth_Key für die Cookie-Anmeldung.
Es wurden insgesamt zwei Modellklassen geschrieben: LoginForm und User. Eine dient zum Empfangen von von Benutzern übermittelten Daten und die andere zum Abrufen von Daten aus der Datenbank.
Controller
Controller, der hauptsächlich für die Datenübermittlung verwendet wird, füllt die vom Benutzer übermittelten Daten in das entsprechende Modell (Modell) und rendert dann die Ansicht weiter (Ansicht). ) basierend auf den vom Modell zurückgegebenen Informationen oder führen Sie eine andere Logik aus.
Nennen Sie hier den Controller LoginController.php. Das Folgende ist der vollständige Implementierungscode:
<?php namespace app\controllers; use Yii; use yii\filters\AccessControl; use yii\web\Controller; use yii\filters\VerbFilter; use app\models\LoginForm; use app\models\ContactForm; class SiteController extends Controller { public function actionIndex() { return $this->render('index'); } public function actionLogin() { if (!\Yii::$app->user->isGuest) { //① return $this->goHome(); } $model = new LoginForm(); //② if ($model->load(Yii::$app->request->post()) && $model->login()) { //③ return $this->goBack(); //④ } return $this->render('login', [ //⑤ 'model' => $model, ]); } public function actionLogout() { Yii::$app->user->logout(); return $this->goHome(); } }
① Erster Richter von Yii::$app->user->isGuest, Ob der Der aktuelle Benutzermodus ist der Gastmodus, dh er ist nicht angemeldet. Wenn der Benutzer angemeldet ist, werden die Informationen des aktuell angemeldeten Benutzers in der Benutzerklasse gespeichert.
② Wenn Sie derzeit Besucher sind, wird zuerst ein LoginForm-Modell instanziiert
③ Diese Codezeile ist der Kern der gesamten Anmeldemethode, zuerst: $model->load( Yii::$ app->request->post()) füllt die Post-Daten in $model, also das LoginForm-Modell. Wenn true zurückgegeben wird, ist das Füllen erfolgreich. Weiter: $model->login(): Führen Sie die login()-Methode in der LoginForm-Klasse aus. Anhand der login()-Methode können Sie erkennen, dass eine Reihe von Überprüfungen durchgeführt werden.
Ansicht
Nach der Implementierung des Modells und des Controllers ist der nächste Schritt der Ansichtsteil. Da der Benutzer Daten eingeben muss, müssen wir in Yii2 ein Formular bereitstellen Generieren Sie schnell das Formular. Der Code lautet wie folgt:
<?php /* @var $this yii\web\View */ /* @var $form yii\bootstrap\ActiveForm */ /* @var $model app\models\LoginForm */ use yii\helpers\Html; use yii\bootstrap\ActiveForm; $this->title = 'Login'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-login"> <h1><?= Html::encode($this->title) ?></h1> <p>Please fill out the following fields to login:</p> <?php $form = ActiveForm::begin([ 'id' => 'login-form', 'options' => ['class' => 'form-horizontal'], 'fieldConfig' => [ 'template' => "{label}\n<div class=\"col-lg-3\">{input}</div>\n<div class=\"col-lg-8\">{error}</div>", 'labelOptions' => ['class' => 'col-lg-1 control-label'], ], ]); ?> <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?> <?= $form->field($model, 'password')->passwordInput() ?> <?= $form->field($model, 'rememberMe')->checkbox([ 'template' => "<div class=\"col-lg-offset-1 col-lg-3\">{input} {label}</div>\n<div class=\"col-lg-8\">{error}</div>", ]) ?> <div class="form-group"> <div class="col-lg-offset-1 col-lg-11"> <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?> </div> </div> <?php ActiveForm::end(); ?> <div class="col-lg-offset-1" style="color:#999;"> You may login with <strong>admin/admin</strong> or <strong>demo/demo</strong>.<br> To modify the username/password, please check out the code <code>app\models\User::$users</code>. </div> </div>
Empfohlenes Lernen: yii-Framework
Das obige ist der detaillierte Inhalt vonSo melden Sie sich bei yii an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Mit der kontinuierlichen Weiterentwicklung der Cloud-Computing-Technologie ist die Datensicherung zu etwas geworden, das jedes Unternehmen durchführen muss. In diesem Zusammenhang ist es besonders wichtig, ein hochverfügbares Cloud-Backup-System zu entwickeln. Das PHP-Framework Yii ist ein leistungsstarkes Framework, das Entwicklern dabei helfen kann, schnell leistungsstarke Webanwendungen zu erstellen. Im Folgenden wird vorgestellt, wie Sie mit dem Yii-Framework ein hochverfügbares Cloud-Backup-System entwickeln. Entwerfen des Datenbankmodells Im Yii-Framework ist das Datenbankmodell ein sehr wichtiger Teil. Denn das Datensicherungssystem erfordert viele Tabellen und Beziehungen

Da die Nachfrage nach Webanwendungen weiter wächst, haben Entwickler bei der Auswahl von Entwicklungsframeworks immer mehr Möglichkeiten. Symfony und Yii2 sind zwei beliebte PHP-Frameworks. Sie verfügen beide über leistungsstarke Funktionen und Leistung. Welches Framework ist jedoch besser geeignet, wenn es darum geht, umfangreiche Webanwendungen zu entwickeln? Als nächstes führen wir eine vergleichende Analyse von Symphony und Yii2 durch, um Ihnen zu helfen, eine bessere Wahl zu treffen. Grundlegende Übersicht Symphony ist ein Open-Source-Webanwendungs-Framework, das in PHP geschrieben ist und darauf aufbaut

Das Yii-Framework ist ein Open-Source-PHP-Webanwendungsframework, das zahlreiche Tools und Komponenten zur Vereinfachung des Prozesses der Webanwendungsentwicklung bereitstellt, wobei die Datenabfrage eine der wichtigen Komponenten ist. Im Yii-Framework können wir eine SQL-ähnliche Syntax verwenden, um auf die Datenbank zuzugreifen und Daten effizient abzufragen und zu bearbeiten. Der Abfrage-Builder des Yii-Frameworks umfasst hauptsächlich die folgenden Typen: ActiveRecord-Abfrage, QueryBuilder-Abfrage, Befehlsabfrage und Original-SQL-Abfrage

Mit der Weiterentwicklung des Internets wird auch die Nachfrage nach der Entwicklung von Webanwendungen immer größer. Für Entwickler erfordert die Entwicklung von Anwendungen ein stabiles, effizientes und leistungsstarkes Framework, das die Entwicklungseffizienz verbessern kann. Yii ist ein führendes Hochleistungs-PHP-Framework, das umfangreiche Funktionen und gute Leistung bietet. Yii3 ist die nächste Generation des Yii-Frameworks, das die Leistung und Codequalität basierend auf Yii2 weiter optimiert. In diesem Artikel stellen wir vor, wie Sie das Yii3-Framework zum Entwickeln von PHP-Anwendungen verwenden.

Im aktuellen Informationszeitalter sind Big Data, künstliche Intelligenz, Cloud Computing und andere Technologien in den Fokus großer Unternehmen gerückt. Unter diesen Technologien hat die Grafikkarten-Rendering-Technologie als leistungsstarke Grafikverarbeitungstechnologie immer mehr Aufmerksamkeit erhalten. Die Grafikkarten-Rendering-Technologie wird häufig in der Spieleentwicklung, bei Film- und Fernsehspezialeffekten, im technischen Modellbau und in anderen Bereichen eingesetzt. Für Entwickler ist die Wahl eines Frameworks, das zu ihren Projekten passt, eine sehr wichtige Entscheidung. Unter den aktuellen Sprachen ist PHP eine sehr dynamische Sprache. Einige hervorragende PHP-Frameworks wie Yii2, Ph

Wenn Sie fragen: „Was ist Yii?“ schauen Sie sich mein vorheriges Tutorial an: Einführung in das Yii Framework, das die Vorteile von Yii bespricht und die Neuerungen in Yii 2.0 beschreibt, das im Oktober 2014 veröffentlicht wurde. Hmm> In dieser Serie „Programmieren mit Yii2“ werde ich die Leser in die Verwendung des Yii2PHP-Frameworks einführen. Im heutigen Tutorial werde ich Ihnen zeigen, wie Sie die Konsolenfunktionalität von Yii nutzen können, um Cron-Jobs auszuführen. In der Vergangenheit habe ich wget – eine über das Internet zugängliche URL – in einem Cron-Job verwendet, um meine Hintergrundaufgaben auszuführen. Dies wirft Sicherheitsbedenken auf und hat einige Leistungsprobleme zur Folge. Während ich in unserer Serie „Sicherheit für Startup“ einige Möglichkeiten zur Risikominimierung besprochen habe, hatte ich gehofft, auf konsolengesteuerte Befehle umsteigen zu können

Mit der rasanten Entwicklung des Internets sind APIs zu einer wichtigen Möglichkeit geworden, Daten zwischen verschiedenen Anwendungen auszutauschen. Daher wird es immer wichtiger, ein API-Framework zu entwickeln, das einfach zu warten, effizient und stabil ist. Bei der Auswahl eines API-Frameworks sind Yii2 und Symfony zwei beliebte Optionen unter Entwicklern. Welches ist also besser für die API-Entwicklung geeignet? In diesem Artikel werden diese beiden Frameworks verglichen und einige Schlussfolgerungen gezogen. 1. Grundlegende Einführung Yii2 und Symfony sind ausgereifte PHP-Frameworks mit entsprechenden Erweiterungen, die zur Entwicklung verwendet werden können

In der modernen Softwareentwicklung ist der Aufbau eines leistungsstarken Content Management Systems (CMS) keine leichte Aufgabe. Entwickler müssen nicht nur über umfangreiche Fähigkeiten und Erfahrung verfügen, sondern auch die fortschrittlichsten Technologien und Tools nutzen, um ihre Funktionalität und Leistung zu optimieren. In diesem Artikel wird erläutert, wie Sie Yii2 und GrapeJS, zwei beliebte Open-Source-Software, zur Implementierung von Back-End-CMS und visueller Front-End-Bearbeitung verwenden. Yii2 ist ein beliebtes PHPWeb-Framework, das umfangreiche Tools und Komponenten für die schnelle Erstellung bereitstellt
