Erstellen Sie Beispiele für Methoden und automatische Token-Verifizierung in ThinkPHP

不言
Freigeben: 2023-03-25 16:40:02
Original
1262 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Erstellungsmethode in ThinkPHP und die Implementierungsmethode der automatischen Token-Überprüfung vor. Es hat einen sehr wichtigen Zweck. Freunde in Not können sich darauf beziehen.

Dieser Artikel zeigt die Erstellungsmethode in ThinkPHP Die Form eines Beispiels. Methode und Implementierung der automatischen Token-Überprüfung, die spezifischen Schritte sind wie folgt:

1. Datentabellenstruktur

Die Benutzertabellenstruktur ist wie folgt folgt:

ID Benutzername Passwort

2. Vorlagenteil anzeigen

aoliHomeTpldefaultUsercreate.html Seite lautet wie folgt:

<form action="__URL__/addit" method="post">
 <input type="text" name="id" />
 <input type="text" name="username" />
 <input type="password" name="password" />
 <input type="submit" name="sub" value="提交" />
</form>
Nach dem Login kopieren

3. Aktionsteil:

aoliHomeLibAction.php Seite ist wie folgt:

<?php
 class UserAction extends Action {
  function create(){
     $this->display();   
   }
   
   function addit(){
     //向表user中添加表单内容
     $user=M(&#39;user&#39;);
     $user->create();
     $user->add();
     //判断是否存在令牌验证
     if(!$user->autoCheckToken($_POST)){
       dump(&#39;no&#39;); 
     }else{
       dump(&#39;yes&#39;);   
     }
 }
?>
Nach dem Login kopieren

1. Bevor wir die über das Formular übermittelten Daten verarbeiten, müssen wir häufig die erforderlichen Daten erstellen Daten, wie die oben übermittelten Formulardaten:

 //实例化User模型
  $user=M(&#39;user&#39;);
 
 //获取表单的POST数据
  $data[&#39;username&#39;]=$_POST[&#39;username&#39;]
  $data[&#39;password&#39;]=$_POST[&#39;password&#39;]
 
 //写入到数据库
   $user->data($data)->add();
Nach dem Login kopieren

Anhang: Mit der Datenmethode erstellte Datenobjekte werden nicht automatisch überprüft und gefiltert und müssen von Ihnen selbst verarbeitet werden. Wenn Sie einfach nur ein erstellen möchten Datenobjekt und müssen einige zusätzliche Funktionen nicht ausführen, Sie können einfach die Datenmethode verwenden. Datenobjekte erstellen.

2. ThinkPHP kann uns helfen, schnell Datenobjekte zu erstellen. Die typischste Anwendung ist die automatische Erstellung von Datenobjekten basierend auf Formulardaten. Das von der Methode create erstellte Datenobjekt wird im Speicher gespeichert und nicht tatsächlich in die Datenbank geschrieben.

   //实例化user模型
    $user=M(&#39;user&#39;);
  
   //根据表单提交的POST数据创建数据对象,并保存在内存中,可以通过dump($user)查看
    $user=create();

   //把创建的数据对象写入数据库中
    $user->add();
Nach dem Login kopieren

3. Die Methode create unterstützt das Erstellen von Datenobjekten auf andere Weise, beispielsweise aus anderen Datenobjekten oder Arrays usw.

   $data[&#39;name&#39;]=&#39;ThinkPHP&#39;;
   $data[&#39;eamil&#39;]=&#39;ThinkPHP@gmail.com&#39;;
   $user->create($data);

   甚至还可以支持从对象创建新的数据对象,如从user数据对象创建新的member数据对象
   $user=M(&#39;user&#39;);
   $user->find(1);
   $member=M(&#39;member&#39;);
   $member->create($user);
Nach dem Login kopieren

4. Während der Erstellung des Datenobjekts führt die Methode „create“ auch einige sinnvolle Arbeiten aus, einschließlich Token-Überprüfung, automatische Datenüberprüfung, Feldtypsuche, automatische Datenvervollständigung usw.

Aus diesem Grund müssen die uns bekannten Funktionen zur Token-Überprüfung, automatischen Überprüfung und automatischen Vervollständigung tatsächlich die Erstellungsmethode verwenden, um wirksam zu werden.

5. Token-Überprüfung:

Funktion: Es kann die Fernübermittlung von Formularen und andere Sicherheitsmaßnahmen wirksam verhindern.

Fügen Sie die folgende Konfiguration zu config.php hinzu:

   &#39;TOKEN_ON&#39;   =>  true, //是否开启令牌验证
   &#39;TOKEN_NAME&#39;  =>  &#39;token&#39;,// 令牌验证的表单隐藏字段名称
   &#39;TOKEN_TYPE&#39;  =>  &#39;md5&#39;,//令牌验证哈希规则
Nach dem Login kopieren

Das automatische Token fügt eine MD5-verschlüsselte Zeichenfolge in die aktuelle SESSION-Sitzung ein. Und fügen Sie diese Zeichenfolge in ein ausgeblendetes Feld vor dem Formular ein. Diese Zeichenfolge erscheint an zwei Stellen, eine in der SESSION und die andere im Formular. Wenn Sie das Formular senden, vergleicht der Server zunächst die SESSION-Informationen. Wenn diese korrekt sind, darf das Formular gesendet werden, andernfalls darf es nicht gesendet werden.

Wenn Sie sich den Quellcode von create.html ansehen, werden Sie feststellen, dass vor der Endmarkierung des Formulars

<input type="hidden" name="token" value="eef419c3d14c9c93caa7627eedaba4a5" />
Nach dem Login kopieren

(1) ein automatisch generiertes verstecktes Feld vorhanden ist, falls Sie dies steuern möchten Sie können das ausgeblendete Feld selbst manuell hinzufügen. Sie können die Markierung {__TOKEN__} manuell zur Formularseite hinzufügen. Das System ersetzt sie dann automatisch, wenn die Vorlage ausgegeben wird.

(2) Wenn einzelne Formulare bei aktivierter Formular-Token-Überprüfung nicht die Funktion „Tokenüberprüfung“
verwenden müssen, können Sie {__NOTOKEN__} zur Formularseite hinzufügen und das System ignoriert die aktuelle Funktion Formular zur Token-Überprüfung.

(3) Wenn auf der Seite mehrere Formulare vorhanden sind, wird empfohlen, die Kennung {__TOKEN__} hinzuzufügen und sicherzustellen, dass nur ein Formular eine Token-Überprüfung erfordert.

(4) Wenn Sie die Methode create zum Erstellen eines Datenobjekts verwenden, wird gleichzeitig automatisch eine Formularüberprüfung durchgeführt. Wenn diese Methode nicht verwendet wird, müssen Sie die Methode autoCheckToken des Modells manuell aufrufen zur Formularüberprüfung.

if (!$User->autoCheckToken($_POST)){
// 令牌验证错误
}
Nach dem Login kopieren

Verwandte Empfehlungen:

Verwendung des Volist-Tags in Thinkphp


Das obige ist der detaillierte Inhalt vonErstellen Sie Beispiele für Methoden und automatische Token-Verifizierung in ThinkPHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage