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!