Heim  >  Artikel  >  PHP-Framework  >  Was soll ich tun, wenn der Bestätigungscode von thinkphp3.2.3 nicht angezeigt wird?

Was soll ich tun, wenn der Bestätigungscode von thinkphp3.2.3 nicht angezeigt wird?

PHPz
PHPzOriginal
2023-04-21 10:06:55816Durchsuche

Als PHP-Entwickler verwenden wir häufig das ThinkPHP-Framework, und der Bestätigungscode ist eine wichtige Ebene für den Schutz der Website. Bei der Verwendung des ThinkPHP3.2.3-Frameworks stoßen wir jedoch manchmal auf das Problem, dass der Bestätigungscode nicht angezeigt wird Wir sind sehr verwirrt. Wie kann man es also lösen?

Lassen Sie uns zunächst den Prozess der Generierung des Bestätigungscodes verstehen. In ThinkPHP wird der Bestätigungscode durch Erstellen eines Bildes implementiert, und ThinkPHP verwendet standardmäßig die GD-Bibliothek, um Bilder zu generieren. Vereinfacht ausgedrückt wird der Verifizierungscode durch die Generierung eines Bildes mit Interferenzlinien, Interferenzpunkten und zufälligen Zeichen generiert. Wenn der Bestätigungscode dann nicht angezeigt wird, liegt das häufig daran, dass die Bildgenerierung fehlgeschlagen ist.

Um dieses Problem zu beheben, können wir die folgenden Schritte ausprobieren, um das Problem zu lösen, dass der Bestätigungscode nicht angezeigt wird.

Schritt 1: Überprüfen Sie, ob die Sitzung geöffnet ist

Zuerst müssen wir überprüfen, ob die Sitzung geöffnet wurde. Da für die Generierung des Bestätigungscodes eine Sitzung zum Speichern des Werts des Bestätigungscodes erforderlich ist, kann der Bestätigungscode nicht normal generiert werden, wenn die Sitzung nicht aktiviert ist.

Um den geöffneten Status der Sitzung zu überprüfen, können Sie ihn in config.php anzeigen. Öffnen Sie die Datei config.php und fügen Sie den folgenden Code in das Rückgabearray ein:

'session_auto_start' => true,

Dieser Code ermöglicht es dem Programm, die Sitzung automatisch zu öffnen, wenn Es startet. Wenn es bereits geöffnet ist, hat es keinen Einfluss auf die normale Verwendung.

Schritt 2: Überprüfen Sie, ob die GD-Bibliothek verfügbar ist

Zweitens müssen wir prüfen, ob die GD-Bibliothek installiert wurde, da ThinkPHP standardmäßig die GD-Bibliothek verwendet, um Bestätigungscodes zu generieren. Wenn die GD-Bibliothek nicht installiert ist oder nicht verwendet werden kann, kann der Bestätigungscode nicht normal generiert werden.

Um zu überprüfen, ob die GD-Bibliothek installiert ist, können Sie überprüfen, ob das gd2-Modul in der Datei php.ini dekomprimiert wurde und alle drei Module extension=php_gd2.dll; extension=php_exif.dll sind unkommentiert.

Suchen Sie die folgenden zwei Konfigurationszeilen in der php.ini-Datei:

extension=php_gd2.dll;
extension=php_mbstring.dll;

Wenn davor kein Semikolon steht, bedeutet dies, dass die GD-Bibliothek korrekt installiert wurde.

Schritt 3: Überprüfen Sie, ob das Verzeichnis zur Generierung des Bestätigungscodes beschreibbar ist

Wenn der Bestätigungscode generiert wird, muss das generierte Bild auf dem Server gespeichert werden. Daher müssen wir auch prüfen, ob das Verzeichnis zur Generierung des Bestätigungscodes beschreibbar ist. Wenn das Generierungsverzeichnis keine Berechtigungen hat oder nicht vorhanden ist, wird der Bestätigungscode nicht normal generiert.

Wir können der Datei config.php den folgenden Code hinzufügen, um das Verzeichnis zur Generierung des Bestätigungscodes zu konfigurieren:

'captcha'  =>array(
        'fontSize' => 30,         //验证码字体大小
        'length'   => 4,          //验证码位数
        'useCurve' => false,      //是否画混淆曲线
        'useNoise' => false,      //是否添加杂点
        'fontttf'  => '5.ttf',    //验证码字体,不设置随机获取
        'bg'       => array(243, 251, 254), //背景颜色
        'reset'    => true        //验证成功后是否重置
    ),

In diesem Array können wir die Länge des Bestätigungscodes anpassen, ob eine Verwirrungskurve gezeichnet werden soll und ob Rauschen hinzugefügt werden soll Punkte und den Pfad der Schriftartdatei usw. Außerdem können wir einen Namen für das Verzeichnis zur Generierung des Bestätigungscodes anpassen. Dieses Verzeichnis muss beschreibbar sein.

Wenn beispielsweise das Verzeichnis zur Generierung des Bestätigungscodes auf das Verzeichnis Application/Runtime/Cache/ festgelegt ist, müssen wir sicherstellen, dass das Verzeichnis beschreibbar ist, andernfalls wird der Bestätigungscode nicht angezeigt.

Schritt 4: Versuchen Sie, den Bestätigungscode in den URL-Modus zu ändern.

Wenn in den obigen Schritten kein Problem festgestellt wird, können wir versuchen, den von ThinkPHP bereitgestellten URL-Modus zu verwenden, um den Bestätigungscode zu generieren. Dieser Modus verwendet das HTML5-Canvas-Tag, das dynamische Verifizierungscodes generieren und Roboterangriffe und Brute-Force-Cracking besser verhindern kann.

Wir können der Datei config.php den folgenden Code hinzufügen, um das URL-Muster zum Generieren von Bestätigungscodes festzulegen:

'captcha'    => true,

Dadurch wird eine Standard-URL-Adresse generiert, wie unten gezeigt:

<img src="__APP__/Public/verify/" onclick="this.src=&#39;__APP__/Public/verify/&#39;+Math.random()">

Die __APP__ hier wird vom System bereitgestellt Die Variable stellt das Stammverzeichnis der aktuellen Anwendung dar und „Verify“ ist der Name der Controller-Methode, in der wir den Bestätigungscode generieren.

Diese Methode kann zu Browser-Cache-Problemen führen und die Seite aufblähen lassen. Daher können wir auch Nischen-JavaScript-Code verwenden, um den Browser-Cache zu leeren und gleichzeitig den Bestätigungscode zu generieren, um dieses Problem zu lösen.

In der HTML-Seite können wir so schreiben:

<img src="__APP__/Public/verify/" onclick="this.src=&#39;__APP__/Public/verify/&#39;+Math.random()">

In JavaScript können wir so schreiben:

$(function(){
    $('#verify_img').click(function(){
        var timenow = new Date().getTime();
        $(this).attr('src','/Home/Public/verify/' + timenow);
    });
});

Dieser JavaScript-Code generiert jedes Mal dynamisch einen Zeitstempel, wenn auf das Bild des Bestätigungscodes geklickt wird, wodurch es Teil des wird URL stellt sicher, dass es sich bei jedem Zugriff auf den Bestätigungscode um eine neue URL-Adresse handelt, wodurch Probleme beim Browser-Caching effektiv vermieden werden.

Zusammenfassung

Durch die oben genannten allgemeinen Lösungen können wir das Problem, dass der ThinkPHP3.2.3-Bestätigungscode nicht angezeigt wird, effektiv lösen. Auch in tatsächlichen Entwicklungsprojekten müssen wir diese Spezifikationen befolgen, um den normalen Betrieb des Programms sicherzustellen und die Privatsphäre und Datensicherheit der Benutzer besser zu schützen. Gleichzeitig sollten wir stets auf Sicherheitsprobleme achten, weiterhin neue Technologien erlernen und erforschen, um Website-Angriffe zu verhindern und die Website-Sicherheit zu schützen.

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn der Bestätigungscode von thinkphp3.2.3 nicht angezeigt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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