Heim Backend-Entwicklung PHP-Tutorial Methode zur Implementierung der Benutzerregistrierungs- und Anmeldefunktion basierend auf PHP

Methode zur Implementierung der Benutzerregistrierungs- und Anmeldefunktion basierend auf PHP

Jun 01, 2018 am 09:25 AM
php 功能 用户注册

Dieser Kurs verwendet PHP und Web-Frontend-Technologie, um eine Website-Registrierungs- und Anmeldeseite zu implementieren, PHP-Programmierung zu lernen und zu üben usw. Interessierte Studenten können sich darauf beziehen.

In diesem Artikel wird die auf PHP basierende Benutzerregistrierungs- und Anmeldefunktion vorgestellt. Dieses Projekt ist in vier Teile unterteilt: 1. Erstellung der Front-End-Seite, 2. Erstellung des Bestätigungscodes, 3. Registrierung und Anmeldung, 4. Funktional Verbesserung. Einzelheiten finden Sie weiter unten.

Verifizierungscode-Erstellung

1. Einführung in das Experiment

Dieses Experiment führt Sie dazu, objektorientiertes Denken zu verwenden, um einen Verifizierungscode zu kapseln Art. Und auf der Registrierungs- und Anmeldeoberfläche angezeigt. Durch das Studium dieses Experiments werden Sie die OOP-Ideen von PHP sowie die Verwendung der GD-Bibliothek und die Generierung von Verifizierungscode verstehen.

1.1 Beteiligte Wissenspunkte

  • PHP

  • GD-Bibliothek

  • OOP-Programmierung

1.2 Entwicklungstools

sublime, ein praktischer und schneller Texteditor. Klicken Sie auf die untere linke Ecke des Desktops: Anwendungsmenü/Entwicklung/sublime

2. Kapselungsüberprüfungscodeklasse

2.1 Verzeichnisse erstellen und Schriftarten vorbereiten

Erstellen Sie unter dem Webverzeichnis ein Admin-Verzeichnis als unser Backend-Verzeichnis, um Backend-Codedateien zu speichern. Erstellen Sie unter „Admin“ ein Schriftartenverzeichnis, um die Schriftarten zu speichern, die für die Erstellung von Bestätigungscodes erforderlich sind.

Erstellen Sie unter Admin eine neue Captcha.php-Datei. Dies ist die Bestätigungscodedatei, die wir bearbeiten müssen.

Aktuelle Verzeichnishierarchie:

Captcha.php-Datei bearbeiten:

<?php 
/**
* Captcha class
*/
class Captcha
{
  
  function __construct()
  {
    # code...
  }
}
Nach dem Login kopieren

Fügen Sie die privaten Eigenschaften und Konstruktionsmethoden dieser Klasse hinzu:

<?php 
/**
* Captcha class
*/
class Captcha
{
  private $codeNum;  //验证码位数
  private $width;  //验证码图片宽度
  private $height;  //验证码图片高度
  private $img;  //图像资源句柄
  private $lineFlag;  //是否生成干扰线条
  private $piexFlag;  //是否生成干扰点
  private $fontSize;  //字体大小
  private $code;  //验证码字符
  private $string;  //生成验证码的字符集
  private $font;  //字体
  function __construct($codeNum = 4,$height = 50,$width = 150,$fontSize = 20,$lineFlag = true,$piexFlag = true)
  {
    $this->string = &#39;qwertyupmkjnhbgvfcdsxa123456789&#39;;  //去除一些相近的字符
    $this->codeNum = $codeNum;
    $this->height = $height;
    $this->width = $width;
    $this->lineFlag = $lineFlag;
    $this->piexFlag = $piexFlag;
    $this->font = dirname(__FILE__).&#39;/fonts/consola.ttf&#39;;
    $this->fontSize = $fontSize;
  }
}
Nach dem Login kopieren

Schriftdateien können mit dem folgenden Befehl in das Schriftartenverzeichnis heruntergeladen werden:

$ wget http://labfile.oss.aliyuncs.com/courses/587/consola.ttf

Als nächstes beginnen Sie mit dem Schreiben der spezifischen Methode:

Bildressourcen erstellen Handle

//创建图像资源  
public function createImage(){
    $this->img = imagecreate($this->width, $this->height);  //创建图像资源
    imagecolorallocate($this->img,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));  //填充图像背景(使用浅色)
  }
Nach dem Login kopieren

Verwendete verwandte Funktionen

  • imagecreate: Erstellen Sie ein neues palettenbasiertes Bild

  • imagecolorallocate: Einem Bild eine Farbe zuweisen

  • mt_rand: Bessere Zufallszahlen generieren

Erstellen Sie die Bestätigungscodezeichenfolge und geben Sie sie im Bild aus

//创建验证码  
public function createCode(){
    $strlen = strlen($this->string)-1;
    for ($i=0; $i < $this->codeNum; $i++) { 
      $this->code .= $this->string[mt_rand(0,$strlen)];  //从字符集中随机取出四个字符拼接
    }
     $_SESSION[&#39;code&#39;] = $this->code;  //加入 session 中
  
   //计算每个字符间距
    $diff = $this->width/$this->codeNum;
    for ($i=0; $i < $this->codeNum; $i++) { 
          //为每个字符生成颜色(使用深色)
     $txtColor = imagecolorallocate($this->img,mt_rand(100,255),mt_rand(100,255),mt_rand(100,255));
     //写入图像
      imagettftext($this->img, $this->fontSize, mt_rand(-30,30), $diff*$i+mt_rand(3,8), mt_rand(20,$this->height-10), $txtColor, $this->font, $this->code[$i]);
    }
  }
Nach dem Login kopieren
Nach dem Login kopieren

Verwandte verwendete Funktionen

  • imagecreate: Erstellen Sie ein neues palettenbasiertes Bild

  • imagecolorallocate: Weisen Sie einem Bild eine Farbe zu

  • mt_rand: Generieren Sie bessere Zufallszahlen

Erstellen Sie die Bestätigungscodezeichenfolge und geben Sie sie im Bild aus

//创建验证码  
public function createCode(){
    $strlen = strlen($this->string)-1;
    for ($i=0; $i < $this->codeNum; $i++) { 
      $this->code .= $this->string[mt_rand(0,$strlen)];  //从字符集中随机取出四个字符拼接
    }
     $_SESSION[&#39;code&#39;] = $this->code;  //加入 session 中
  
   //计算每个字符间距
    $diff = $this->width/$this->codeNum;
    for ($i=0; $i < $this->codeNum; $i++) { 
          //为每个字符生成颜色(使用深色)
     $txtColor = imagecolorallocate($this->img,mt_rand(100,255),mt_rand(100,255),mt_rand(100,255));
     //写入图像
      imagettftext($this->img, $this->fontSize, mt_rand(-30,30), $diff*$i+mt_rand(3,8), mt_rand(20,$this->height-10), $txtColor, $this->font, $this->code[$i]);
    }
  }
Nach dem Login kopieren
Nach dem Login kopieren

Verwandte verwendete Funktionen:

  • imagettftext: Text mit TrueType-Schriftarten in ein Bild schreiben

Interferenzlinien erstellen

//创建干扰线条(默认四条)
public function createLines(){
    for ($i=0; $i < 4; $i++) { 
      $color = imagecolorallocate($this->img,mt_rand(0,155),mt_rand(0,155),mt_rand(0,155));  //使用浅色
      imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color); 
    }
  }
Nach dem Login kopieren

Verwandte Funktionen:

  • Bildlinie: Liniensegment zeichnen

Interferenzpunkte erstellen

//创建干扰点 (默认一百个点)
public function createPiex(){
    for ($i=0; $i < 100; $i++) { 
      $color = imagecolorallocate($this->img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
      imagesetpixel($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
    }
  }
Nach dem Login kopieren

Verwandte Funktionen:

  • imagesetpixel: Ein einzelnes Pixel zeichnen

Externes Ausgabebild:

 public function show()
  {
    $this->createImage();
    $this->createCode();
    if ($this->lineFlag) {  //是否创建干扰线条
      $this->createLines();
    }
    if ($this->piexFlag) {  //是否创建干扰点
      $this->createPiex();
    }
    header(&#39;Content-type:image/png&#39;);  //请求页面的内容是png格式的图像
    imagepng($this->img);  //以png格式输出图像
    imagedestroy($this->img);  //清除图像资源,释放内存
  }
Nach dem Login kopieren

Verwandte Funktionen:

  • imagepng: PNG-Format Geben Sie das Bild im Browser oder in einer Datei aus

  • imagedestroy: Zerstöre ein Bild

Geben Sie einen externen Bestätigungscode an:

public function getCode(){
    return $this->code;
  }
完整代码如下:
<?php 
/**
* Captcha class
*/
class Captcha
{
  private $codeNum;
  private $width;
  private $height;
  private $img;
  private $lineFlag;
  private $piexFlag;
  private $fontSize;
  private $code;
  private $string;
  private $font;
  function __construct($codeNum = 4,$height = 50,$width = 150,$fontSize = 20,$lineFlag = true,$piexFlag = true)
  {
    $this->string = &#39;qwertyupmkjnhbgvfcdsxa123456789&#39;;
    $this->codeNum = $codeNum;
    $this->height = $height;
    $this->width = $width;
    $this->lineFlag = $lineFlag;
    $this->piexFlag = $piexFlag;
    $this->font = dirname(__FILE__).&#39;/fonts/consola.ttf&#39;;
    $this->fontSize = $fontSize;
  }

  public function createImage(){
    $this->img = imagecreate($this->width, $this->height);
    imagecolorallocate($this->img,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));
  }

  public function createCode(){
    $strlen = strlen($this->string)-1;
    for ($i=0; $i < $this->codeNum; $i++) { 
      $this->code .= $this->string[mt_rand(0,$strlen)];
    }
    $_SESSION[&#39;code&#39;] = $this->code;
    $diff = $this->width/$this->codeNum;
    for ($i=0; $i < $this->codeNum; $i++) { 
      $txtColor = imagecolorallocate($this->img,mt_rand(100,255),mt_rand(100,255),mt_rand(100,255));
      imagettftext($this->img, $this->fontSize, mt_rand(-30,30), $diff*$i+mt_rand(3,8), mt_rand(20,$this->height-10), $txtColor, $this->font, $this->code[$i]);
    }
  }

  public function createLines(){
    for ($i=0; $i < 4; $i++) { 
      $color = imagecolorallocate($this->img,mt_rand(0,155),mt_rand(0,155),mt_rand(0,155));
      imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color); 
    }
  }

  public function createPiexs(){
    for ($i=0; $i < 100; $i++) { 
      $color = imagecolorallocate($this->img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
      imagesetpixel($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
    }
  }

  public function show()
  {
    $this->createImage();
    $this->createCode();
    if ($this->lineFlag) {
      $this->createLines();
    }
    if ($this->piexFlag) {
      $this->createPiexs();
    }
    header(&#39;Content-type:image/png&#39;);
    imagepng($this->img);
    imagedestroy($this->img);
  }

  public function getCode(){
    return $this->code;
  }
}
Nach dem Login kopieren

Das Obige ist der gesamte Code der Verifizierungscodeklasse. Es scheint recht einfach zu sein, aber es nutzt viele Bildverarbeitungsfunktionen. Ich habe auch die notwendigen Links und Nutzungsanweisungen für die oben genannten verwandten Funktionen erstellt. Es besteht keine Notwendigkeit, sich diese Funktionen auswendig zu lernen. Wenn Sie auf etwas Unklares stoßen, lesen Sie bitte jederzeit die offizielle PHP-Dokumentation. Das Wichtigste ist, dass es eine chinesische Dokumentation gibt.

2.2 Verwendung des Bestätigungscodes

Nachdem es verpackt wurde, können Sie mit der Verwendung beginnen. Der Einfachheit halber rufen Sie diese Klasse hier direkt unter der Captcha-Klasse auf:

session_start(); //开启session
$captcha = new Captcha();  //实例化验证码类(可自定义参数)
$captcha->show();  //调用输出
Nach dem Login kopieren

3. Front-End-Anzeige

Der Bestätigungscode wurde am Ende vorbereitet und die Front-End-Schnittstelle kann den Bestätigungscode-Teil des Registrierungs- und Anmeldeformulars in index.php anzeigen:

<p class="form-group">
 <p class="col-sm-12">
   <img src="admin/Captcha.php" alt="" id="codeimg" onclick="javascript:this.src = &#39;admin/Captcha.php?&#39;+Math.random();">
   <span>Click to Switch</span>
 </p>
</p>
Nach dem Login kopieren

Das img-Tag fügt den js-Code des Klickereignisses hinzu, sodass die Funktion des Klickens zum Ändern des Bestätigungscodes realisiert werden kann!

Rendering:


4. Verbesserung

Bisher ist unser Bestätigungscode Das Modul grundsätzlich vollständig. Nach dem Studium hier sollte jeder ein besseres Verständnis für objektorientierte Programmierung haben. Ich bemerkte auch einen Hauch von OOP-Denken. Die drei Hauptmerkmale von OOP: Kapselung, Vererbung und Polymorphismus. Wir verwenden hier nur einen kleinen Teil des Gedankens der Kapselung. Sie können diese Verifizierungscodeklasse weiter verfeinern und verbessern und eine perfektere Klasse entwerfen. Dieses Experiment zeigt uns auch, dass PHP viele Funktionen hat, also merken Sie sich diese nicht auswendig und lesen Sie mehr offizielle Dokumente.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.

Verwandte Empfehlungen:

phpBargeldrote Umschläge durch WeChat-Zahlung realisieren

thinkPHP automatische Verifizierung , Detaillierte Erläuterung der Probleme mit der automatischen Hinzufügung und Formularfehlern

phpRealisierung von Unternehmenszahlungen mit WeChat Pay

Das obige ist der detaillierte Inhalt vonMethode zur Implementierung der Benutzerregistrierungs- und Anmeldefunktion basierend auf PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.

Deepseek Official Website -Eingang und neueste Werbeaktivitäten Deepseek Official Website -Eingang und neueste Werbeaktivitäten Feb 19, 2025 pm 05:15 PM

Die offizielle Website von Deepseek startet jetzt mehrere Rabattaktivitäten, um den Benutzern ein Einkaufserlebnis zu bieten. Neue Benutzer melden sich an, um einen Gutschein in Höhe von 10 US -Dollar zu erhalten, und genießen einen begrenzten Zeitraum von 15% für das gesamte Publikum. Empfehlen Sie Freunde können auch Belohnungen verdienen, und Sie können Punkte für die Erlösung von Geschenken beim Einkaufen sammeln. Die Veranstaltungsfristen sind unterschiedlich.

See all articles