Heim > Backend-Entwicklung > PHP-Problem > So ändern Sie die Position des Bestätigungscodes in PHP

So ändern Sie die Position des Bestätigungscodes in PHP

PHPz
Freigeben: 2023-04-04 22:10:02
Original
673 Leute haben es durchsucht

Mit der Entwicklung von Websites sind Verifizierungscodes zu einer notwendigen Sicherheitsmaßnahme für die Registrierung oder Anmeldung auf vielen Websites geworden. Allerdings entspricht die Position des Bestätigungscodes manchmal nicht unseren Designanforderungen. Deshalb werden wir heute darüber sprechen, wie man die Position des Bestätigungscodes in PHP ändert.

Zunächst müssen wir das Prinzip der Generierung von Bestätigungscodes verstehen. Normalerweise wird der Verifizierungscode in einem PHP-Skript mithilfe der GD-Bibliothek generiert. Die GD-Bibliothek bietet einige Funktionen zum Generieren von Verifizierungscodes, wie zum Beispiel imagecreate(), imagecolorallocate(), imagestring() usw.

Als nächstes erklären wir diese Funktionen. Wenn Sie eine andere Methode zur Generierung von Verifizierungscodes verwenden, können Sie diese entsprechend dem Generierungsprinzip ändern.

  1. Platzieren Sie den Bestätigungscode an der angegebenen Stelle.

Der Bestätigungscode kann über die Funktion imagestring() auf der Leinwand ausgegeben werden, und wir können damit die Position des Bestätigungscodes steuern.

Hier ist ein einfaches Skript zur Generierung eines Bestätigungscodes:

<?php
session_start();
header("Content-type: image/png");

$code_len = 4;
$width = 80;
$height = 25;

$charset = &#39;abcdefghkmnprstuvwxyABCDEFGHKMNPRSTUVWXY3456789&#39;;
$code = &#39;&#39;;
for ($i = 0; $i < $code_len; $i++) {
    $code .= $charset[mt_rand(0, strlen($charset) - 1)];
}
$_SESSION[&#39;verify_code&#39;] = strtoupper($code);

$img = imagecreate($width, $height);
imagecolorallocate($img, 255, 255, 255);  //设置背景颜色

$font_color = imagecolorallocate($img, mt_rand(0, 100), mt_rand(0, 100), mt_rand(0, 100));
for ($i = 0; $i < $code_len; $i++) {
    $font_size = mt_rand(12, 16);
    $angle = mt_rand(-10, 10);
    $f_x = ($width / $code_len) * $i + mt_rand(0, 5);
    $f_y = $height / 2 + mt_rand(-5, 6);

    imagestring($img, $font_size, $f_x, $f_y, $code[$i], $font_color);  //输出验证码
}

imagepng($img);
imagedestroy($img);
Nach dem Login kopieren

Mit dem obigen Code wird der Bestätigungscode an einer zufälligen Position auf der Leinwand ausgegeben. Wenn wir den Bestätigungscode an einer bestimmten Stelle fixieren möchten, müssen wir nur die Werte von $f_x und $f_y entsprechend den Designanforderungen ändern. $f_x$f_y 的值即可。

例如,我们将验证码固定在画布的中心位置,只需要将 $f_x$f_y 的值修改如下:

$f_x = ($width / 2 - (($font_size + 3) * $code_len) / 2) + ($font_size + 3) * $i;  // 控制水平方向位置
$f_y = $height / 2 + mt_rand(-5, 6);  // 控制竖直方向位置
Nach dem Login kopieren

运行后,验证码将出现在画布的中心位置。

  1. 将验证码放置在指定HTML元素内

如果我们想将验证码放置在指定HTML元素内,可以通过CSS控制画布的位置,并将画布嵌入到HTML元素中。

例如,我们想将验证码放置在 <div id="verify"> 元素内,可以在CSS中添加如下代码:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">#verify {     position: relative;     background-color: #fff;  /* 图片背景色 */     width: 100px;     height: 32px;     text-align: center; } #verify img {     position: absolute;  /* 设置验证码图片位置 */     top: 0;     left: 0; }</pre><div class="contentsignin">Nach dem Login kopieren</div></div><p>然后在HTML中添加如下代码:</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;div id=&quot;verify&quot;&gt;     &lt;img src=&quot;verify.php&quot; alt=&quot;验证码&quot;&gt; &lt;/div&gt;</pre><div class="contentsignin">Nach dem Login kopieren</div></div><p>通过上面的代码,我们可以将生成的验证码嵌入到指定元素中,其位置将被CSS控制。</p><ol start="3"><li>将验证码放置在背景上</li></ol><p>在某些情况下,我们可能需要将验证码放置在背景上,例如背景是一张大图,我们需要将验证码放置在画面角落中。</p><p>要实现这个功能,我们可以先生成一个不带验证码的背景图,然后将验证码绘制到背景上。</p><p>下面是一个基本的实现:</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;?php session_start(); header(&quot;Content-type: image/png&quot;); $width = 300; $height = 200; $img = imagecreate($width, $height); imagecolorallocate($img, 255, 255, 255); //设置背景颜色 // 生成不带验证码的背景图 $bg_img = imagecreatefromjpeg(&amp;#39;bg.jpg&amp;#39;); imagecopy($img, $bg_img, 0, 0, 0, 0, $width, $height); $code_len = 4; $charset = &amp;#39;abcdefghkmnprstuvwxyABCDEFGHKMNPRSTUVWXY3456789&amp;#39;; $code = &amp;#39;&amp;#39;; for ($i = 0; $i &lt; $code_len; $i++) { $code .= $charset[mt_rand(0, strlen($charset) - 1)]; } $_SESSION[&amp;#39;verify_code&amp;#39;] = strtoupper($code); // 将验证码写入背景图中 $font_color = imagecolorallocate($img, mt_rand(0, 100), mt_rand(0, 100), mt_rand(0, 100)); for ($i = 0; $i &lt; $code_len; $i++) { $font_size = mt_rand(12, 16); $angle = mt_rand(-10, 10); $f_x = mt_rand(0, $width - ($font_size + 3)); $f_y = mt_rand(0, $height - $font_size); imagestring($img, $font_size, $f_x, $f_y, $code[$i], $font_color); //输出验证码 } imagepng($img); imagedestroy($img);</pre><div class="contentsignin">Nach dem Login kopieren</div></div><p>在上面的代码中,我们先加载原始背景图 <code>bg.jpg

Wenn wir beispielsweise den Bestätigungscode in der Mitte der Leinwand fixieren, müssen wir nur die Werte von $f_x und $f_y wie folgt ändern:
    rrreee
  1. Nach dem Ausführen erscheint der Bestätigungscode in der Mitte der Leinwand.
    1. Platzieren Sie den Bestätigungscode innerhalb des angegebenen HTML-Elements

      🎜Wenn wir den Bestätigungscode innerhalb des angegebenen HTML-Elements platzieren möchten, können wir die Position der Leinwand über CSS steuern und die Leinwand einbetten in die Mitte des HTML-Elements. 🎜🎜Wenn wir beispielsweise den Bestätigungscode innerhalb des Elements <div id="verify"> platzieren möchten, können wir den folgenden Code in CSS hinzufügen: 🎜rrreee🎜Dann fügen Sie Folgendes hinzu Code in HTML: 🎜rrreee🎜Mit dem obigen Code können wir den generierten Bestätigungscode in das angegebene Element einbetten und seine Position wird durch CSS gesteuert. 🎜<ol start="3">🎜Platzieren Sie den Bestätigungscode auf dem Hintergrund🎜🎜🎜In einigen Fällen müssen wir möglicherweise den Bestätigungscode auf dem Hintergrund platzieren, zum Beispiel ist der Hintergrund ein großes Bild, das wir platzieren müssen den Bestätigungscode in der Ecke des Bildschirms. 🎜🎜Um diese Funktion zu implementieren, können wir zunächst ein Hintergrundbild ohne Bestätigungscode generieren und dann den Bestätigungscode auf den Hintergrund zeichnen. 🎜🎜Das Folgende ist eine grundlegende Implementierung: 🎜rrreee🎜Im obigen Code laden wir zuerst das ursprüngliche Hintergrundbild <code>bg.jpg, kopieren es dann auf eine neue Leinwand, generieren dann den Bestätigungscode und fügen ihn ein es in die Leinwand. (Bitte beachten Sie, dass sich der in diesem Beispiel generierte Bestätigungscode an einer zufälligen Position befindet. Um unseren Zweck zu erreichen, sind einige Änderungen erforderlich.) 🎜🎜🎜Zusammenfassung🎜🎜🎜In diesem Artikel werden drei Methoden zum Ändern der Position des Bestätigungscodes vorgestellt: Der erste basiert auf dem von PHP generierten Verifizierungscode, der durch Ändern der Ausgabeposition implementiert wird. Der zweite besteht darin, den Verifizierungscode-Canvas in das HTML-Element einzubetten und die Position über CSS zu steuern Bringen Sie den Verifizierungscode in den Hintergrund, um die Verifizierung durchzuführen. Die Position des Codes stimmt mit dem Hintergrund überein. Verschiedene Implementierungsmethoden eignen sich für unterschiedliche Szenarien, und Sie können die beste Lösung basierend auf den tatsächlichen Anforderungen auswählen. 🎜

    Das obige ist der detaillierte Inhalt vonSo ändern Sie die Position des Bestätigungscodes in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    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