Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar kedudukan kod pengesahan dalam PHP

Bagaimana untuk menukar kedudukan kod pengesahan dalam PHP

PHPz
PHPzasal
2023-04-04 17:28:18614semak imbas

Dengan pembangunan tapak web, kod pengesahan telah menjadi langkah keselamatan yang diperlukan untuk pendaftaran atau log masuk di banyak tapak web. Walau bagaimanapun, kadangkala lokasi kod pengesahan tidak memenuhi keperluan reka bentuk kami, jadi hari ini kami akan bercakap tentang cara menukar lokasi kod pengesahan dalam PHP.

Pertama sekali, kita perlu memahami prinsip penjanaan kod pengesahan. Biasanya, kod pengesahan dijana dalam skrip PHP menggunakan perpustakaan GD Perpustakaan GD menyediakan beberapa fungsi untuk menjana kod pengesahan, seperti imagecreate(), imagecolorallocate(), imagestring(), dll.

Seterusnya, kami akan menerangkan fungsi-fungsi ini. Jika anda menggunakan kaedah penjanaan kod pengesahan lain, anda boleh mengubah suai mengikut prinsip penjanaannya.

  1. Letakkan kod pengesahan di lokasi yang ditentukan

Kod pengesahan boleh dikeluarkan ke kanvas melalui fungsi imagestring() dan kami boleh menggunakannya untuk mengawal lokasi kod pengesahan.

Berikut ialah skrip penjanaan kod pengesahan asas:

<?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);

Dengan kod di atas, kod pengesahan akan dikeluarkan kepada kedudukan rawak pada kanvas. Jika kami ingin membetulkan kod pengesahan di lokasi yang ditentukan, kami hanya perlu mengubah suai nilai $f_x dan $f_y mengikut keperluan reka bentuk.

Sebagai contoh, jika kami membetulkan kod pengesahan di tengah-tengah kanvas, kami hanya perlu mengubah suai nilai $f_x dan $f_y seperti berikut:

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

Selepas dijalankan, kod pengesahan akan muncul di tengah-tengah kanvas.

  1. Letakkan kod pengesahan dalam elemen HTML yang ditentukan

Jika kami ingin meletakkan kod pengesahan dalam elemen HTML yang ditentukan, kami boleh mengawal kedudukan kanvas melalui CSS dan Kanvas tempat dibenamkan ke dalam elemen HTML.

Sebagai contoh, jika kita ingin meletakkan kod pengesahan di dalam elemen <div id="verify">, kita boleh menambah kod berikut dalam CSS: <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><p> Kemudian tambah kod berikut dalam HTML: </p><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><p>Dengan kod di atas, kami boleh membenamkan kod pengesahan yang dijana ke dalam elemen yang ditentukan, dan kedudukannya akan dikawal oleh CSS. </p><ol start="3"><li>Letakkan kod pengesahan pada latar belakang </li></ol><p>Dalam sesetengah kes, kami mungkin perlu meletakkan kod pengesahan pada latar belakang, contohnya, latar belakang ialah gambar besar , kami Kod pengesahan perlu diletakkan di sudut skrin. </p><p>Untuk melaksanakan fungsi ini, kita boleh menjana imej latar belakang tanpa kod pengesahan, dan kemudian melukis kod pengesahan ke latar belakang. </p><p>Berikut ialah pelaksanaan asas: </p><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('bg.jpg'); imagecopy($img, $bg_img, 0, 0, 0, 0, $width, $height); $code_len = 4; $charset = 'abcdefghkmnprstuvwxyABCDEFGHKMNPRSTUVWXY3456789'; $code = ''; for ($i = 0; $i &lt; $code_len; $i++) {     $code .= $charset[mt_rand(0, strlen($charset) - 1)]; } $_SESSION['verify_code'] = 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><p>Dalam kod di atas, kami mula-mula memuatkan imej latar belakang asal <code>bg.jpg, kemudian menyalinnya ke kanvas baharu, dan kemudian menjana Captcha dan masukkan ke dalam kanvas. (Sila ambil perhatian bahawa kod pengesahan yang dijana dalam contoh ini adalah dalam kedudukan rawak. Untuk mencapai tujuan kami, beberapa pengubahsuaian perlu dibuat)

  1. Ringkasan

Pengenalan kepada artikel ini Terdapat tiga kaedah untuk menukar kedudukan kod pengesahan Yang pertama adalah berdasarkan kod pengesahan yang dijana oleh PHP dan dilaksanakan dengan mengubahsuai kedudukan output Yang kedua ialah membenamkan kanvas kod pengesahan ke dalam elemen HTML dan mengawal kedudukan melalui CSS Yang ketiga ialah membenamkan kanvas kod pengesahan ke dalam elemen HTML dan mengawal kedudukan melalui CSS Yang pertama ialah menambah kod pengesahan ke latar belakang supaya kedudukan kod pengesahan adalah konsisten dengan latar belakang. Kaedah pelaksanaan yang berbeza sesuai untuk senario yang berbeza, dan anda boleh memilih penyelesaian terbaik mengikut keperluan sebenar anda.

Atas ialah kandungan terperinci Bagaimana untuk menukar kedudukan kod pengesahan dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn