Maison  >  Article  >  développement back-end  >  L'idée d'implémenter un simple code de vérification des caractères chinois en PHP

L'idée d'implémenter un simple code de vérification des caractères chinois en PHP

藏色散人
藏色散人avant
2019-09-25 09:17:062349parcourir

Maintenant, de plus en plus de sites Web commencent à utiliser des codes de vérification de caractères chinois, ce qui augmente non seulement l'intimité de nos gens, mais augmente également la difficulté de déchiffrage automatique. Ici, je vais l'expliquer simplement et grossièrement.

Créer un canevas d'arrière-plan

$image = imagecreatetruecolor(200, 60);
$background = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $background);

Dessiner des points d'interférence

for ($i=0; $i < 300; $i++) { 
    $pixColor = imagecolorallocate($image, rand(150, 240), rand(150, 240), rand(150, 240));
    $pixX = rand(10, 190);
    $pixY = rand(5, 55);
    imagesetpixel($image, $pixX, $pixY, $pixColor);
}

Dessiner des lignes d'interférence

//4条水平线
for ($i=0; $i < 5; $i++) { 
    $lineColor = imagecolorallocate($image, rand(50, 150), rand(50, 150), rand(50, 150));
    $lineX1 = 0;
    $lineX2 = 300;
    $lineY1 = ($i + 1) * 12;
    $lineY2 = ($i + 1) * 12;
    imageline($image, $lineX1, $lineY1, $lineX2, $lineY2, $lineColor);
}
//10条垂直线
for ($i=0; $i < 30; $i++) { 
    $lineColor = imagecolorallocate($image, rand(50, 150), rand(50, 150), rand(50, 150));
    $lineX1 = ($i + 1) * 10;
    $lineX2 = ($i + 1) * 10;
    $lineY1 = 0;
    $lineY2 = 60;
    imageline($image, $lineX1, $lineY1, $lineX2, $lineY2, $lineColor);
}

Dessinez des caractères chinois

$text = array(&#39;栀&#39;, &#39;子&#39;, &#39;花&#39;, &#39;开&#39;);
for ($i=0; $i < 4; $i++) {
    $textColor = imagecolorallocate($image, rand(20, 100), rand(20, 100), rand(20, 100));
    $textX = $i * 50 + 10;
    $textY = rand(40, 60);
    imagettftext($image, 30, rand(20, 50), $textX, $textY, $textColor, "/Library/Fonts/华文仿宋.ttf", $text[$i]);
}

Notez ici que le fichier de police doit prendre en charge le chinois

l'encodage doit utiliser utf-8, vous souvenez-vous de convertir le chinois gbk ? [La fonction iconv peut vous aider]

Image de sortie

header("Content-Type:image/png");
imagepng($image);

Détruire les ressources

imagedestroy($image);

Après un processus difficile, faites-le , le code de vérification chinois sera affiché. Bien entendu, lorsqu'un site Web est utilisé, il y aura une graine de bibliothèque de caractères chinois, à partir de laquelle un nombre spécifique de caractères chinois sont sélectionnés et affichés au hasard, et finalement enregistrés dans la session pour vérification.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer