Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk menangani situasi di mana kod pengesahan PHP tidak dapat dipaparkan apabila ditampal

Bagaimana untuk menangani situasi di mana kod pengesahan PHP tidak dapat dipaparkan apabila ditampal

PHPz
PHPzasal
2024-02-29 13:21:03879semak imbas

Bagaimana untuk menangani situasi di mana kod pengesahan PHP tidak dapat dipaparkan apabila ditampal

Tajuk: Selesaikan masalah bahawa kod pengesahan PHP tidak boleh dipaparkan apabila ditampal

Kod pengesahan ialah kaedah pengesahan keselamatan yang biasa digunakan di tapak web Ia boleh menghalang serangan berniat jahat apabila pengguna menyerahkan borang atau menjalankan operasi log masuk. Walau bagaimanapun, kadangkala apabila menggunakan PHP untuk menjana kod pengesahan, ia mungkin tidak dipaparkan apabila ditampal, yang membawa ketidakselesaan kepada pengalaman pengguna. Artikel ini akan memperkenalkan cara menangani masalah bahawa kod pengesahan PHP tidak boleh dipaparkan apabila ditampal dan memberikan contoh kod khusus.

1. Analisis Masalah

Apabila menggunakan PHP untuk menjana kod pengesahan pada halaman web, perpustakaan GD atau fungsi lain yang berkaitan biasanya digunakan untuk menjana imej kod pengesahan. Walau bagaimanapun, dalam beberapa kes, apabila pengguna menampal kod pengesahan dalam kotak input kod pengesahan, mereka mungkin menghadapi masalah bahawa kod pengesahan tidak dapat dipaparkan Ini kerana kandungan yang ditampal tidak dikenali dengan betul sebagai imej.

2. Penyelesaian

Untuk menyelesaikan masalah ini, kami boleh mengeluarkan kandungan teks kod pengesahan pada halaman sambil menjana imej kod pengesahan. Dengan cara ini, walaupun pengguna tidak dapat memaparkan imej dengan betul, mereka masih boleh mengesahkannya melalui teks. Berikut ialah contoh kod khusus:

<?php
session_start();

$width = 120;
$height = 40;
$length = 4;
$str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$code = '';

for ($i = 0; $i < $length; $i++) {
    $code .= $str[rand(0, strlen($str) - 1)];
}

$_SESSION['captcha'] = $code;

$image = imagecreatetruecolor($width, $height);
$bg_color = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 0, 0, 0);

imagefill($image, 0, 0, $bg_color);
imagettftext($image, 20, 0, 10, 30, $text_color, 'arial.ttf', $code);

header('Content-type: image/png');
imagepng($image);
imagedestroy($image);

Dalam kod di atas, kod pengesahan rawak yang mengandungi aksara dan nombor huruf besar dan kecil pertama kali dijana, dan disimpan dalam format $_SESSION['captcha'] 中。同时,利用 GD 库生成验证码图片,将验证码文本写入图片。然后将验证码图片以 image/png dan output ke halaman.

3. Paparan halaman

Pada halaman HTML, imej kod pengesahan dan teks kod pengesahan boleh dipaparkan kepada pengguna pada masa yang sama, seperti yang ditunjukkan di bawah:

<form action="verify.php" method="post">
    <img src="captcha.php" alt="captcha" />
    <input type="text" name="captcha" />
    <input type="submit" value="Submit" />
</form>

Dalam borang ini, pengguna boleh melihat kod pengesahan imej dan kotak input, Hantar borang untuk pengesahan selepas memasukkan kod pengesahan. Walaupun pengguna tidak dapat memaparkan imej kod pengesahan seperti biasa, pengguna masih boleh mengesahkan input melalui teks kod pengesahan.

Ringkasnya, dengan mengeluarkan teks kod pengesahan semasa menjana imej kod pengesahan, masalah kod pengesahan PHP tidak dapat dipaparkan apabila ditampal dapat diselesaikan dan pengalaman pengguna boleh dipertingkatkan.

Atas ialah kandungan terperinci Bagaimana untuk menangani situasi di mana kod pengesahan PHP tidak dapat dipaparkan apabila ditampal. 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