You are on page 1of 5

nhng bi trc, chng ta tm hiu v cch lm vic vi PHP kt hp MYSQL trong

vic xy dng h thng thm, sa, xa v qun l user. Trong bi ny, chng ta tip tc tm
hiu phng php to dy s ngu nhin chng tn cng flood d liu. Hoc ai c
tnh spam khin c s d liu ca chng ta khng th x l tip c.
Trc tin, chng ta tin hnh to form HTML n gin thc thi thao tc nhp liu nh
sau:
<f orm action="f orm.php" method
<table>
<tr>
<td align="lef t">
<label f or="captcha">Captcha

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<form action="form.php" method=post>
<table>
<tr>
<td align="left">
<label for="captcha">Captcha</label>
</td>
<td>
<input type="text" name="txtCaptcha" maxlength="10" size="32" />
</td>
<td>
<img src="random_image.php" />
</td>
</tr>
<tr>
<td> </td>
<td>
<input type=submit name=ok value="Check" />
</td>
</tr>
</table>
</form>
Chng ta ch phn hnh nh, ti y ti truyn ng dn chnh l lin kt ti trang
random_image.php. Trang ny s thc thi cng vic to ra nhng bc hnh c dy s
ngu nhin phn nhp liu ca ngi s dng tham chiu ti.
Tip theo, chng ta khi to file random_image.php ly ra dy s ngu nhin v pht
sinh chng ngay trn tm hnh cho ngi truy cp nhp liu.
lm c iu . Chng ta s khi to session v lu dy s nhp liu vo session
ca mnh, sau so khp vi trang form bn kia.(xem li bi 7: Khi nim c bn v
cookie v session trong PHP)

u tin chng ta s dng hm md5 v ran m ha cc k t bao gm s v ch ci.
Khi s dng hm md5() k t pht sinh s ln ti 32 k t. V chng ta ch ly duy nht 5
k t t chui m ha bng hm substr. Tip tc ta lu on m ha ny trong session
c th $_SESSION['security_code'], ti trang form ta s s dng so snh vi phn
nhp liu ca ngi s dng.
Vy nn on code di s gii quyt cc tnh hung ny:
<?php
$md5_hash = md5(rand(0,999))
$security_code = substr($md5_
$_SESSION["security_code"] =
?>

1
2
3
4
5
<?php
$md5_hash = md5(rand(0,999));
$security_code = substr($md5_hash, 15, 5);
$_SESSION["security_code"] = $security_code;
?>
K n ta khi to tm hnh vi chiu rng v chiu cao m ta thit lp thng qua hm
ImageCreate(). V tip tc khai bo 2 mu chnh l trng v en bng hm
ImageColorAllocate($image, red, green, blue ). Hm ny s to ra mt mu sc t h
mu RGB trn tm hnh m chng ta va khi to.
Tip tc ta background ca tm hnh s l mu en v ch xut hin trn tm hnh s l
mu trng bng hm ImageFill() v hm ImageString(). Hm ImageString c mt s i
s c bn nh sau: ImageString($image, 5, 30, 6, $security_code, $white); Trong :
+ $image l hnh m chng ta khi to.
+ 5: l font-size m chng ta quy c cho k t xut hin trn hnh.
+ 30: l khong cch bn tri ca tm hnh.
+ 6 : l khong cch t trn ca tm hnh.
+ $security_code: l on code sau khi chng ta ct ra trn.
+ $white: l mu sc m chng ta s dng hm ImageColorAllocate() trn khi to
ra mu trng.
<?php
$width = 100;
$height = 30;
$image = ImageCreate($width, $
$white = ImageColorAllocate($im

1
2
3
4
5
6
7
8
9
<?php
$width = 100;
$height = 30;
$image = ImageCreate($width, $height);
$white = ImageColorAllocate($image, 255, 255, 255);
$black = ImageColorAllocate($image, 0, 0, 0);
ImageFill($image, 0, 0, $black);
ImageString($image, 5, 30, 6, $security_code, $white);
?>
K ti chng ta s s dng lnh header tr ni dung ny tr v d liu dng hnh. V
tin hnh khi to nh dng cho file hnh m chng ta va to l JPG ng thi gii phng
hnh tm c s dng khi to ra tm hnh ny bng on code sau:
<?php
header("Content-Type: image/jp
ImageJpeg($image);
ImageDestroy($image);
?>

1
2
3
4
5
<?php
header("Content-Type: image/jpeg");
ImageJpeg($image);
ImageDestroy($image);
?>
d qun l chng ta s t tt c on code trn vo trong 1 hm d s dng v qun
l chng tt hn. Vy ton b on code trong trang random_image.php ny nh sau.
<?php
session_start();
f unction create_image()
{
$md5_hash = md5(rand(0,999)

1
2
3
4
5
6
7
8
9
10
11
12
<?php
session_start();
function create_image()
{
$md5_hash = md5(rand(0,999));
$security_code = substr($md5_hash, 15, 5);
$_SESSION["security_code"] = $security_code;
$width = 100;
$height = 30;
$image = ImageCreate($width, $height);
$white = ImageColorAllocate($image, 255, 255, 255);
$black = ImageColorAllocate($image, 0, 0, 0);
13
14
15
16
17
18
19
20
21
ImageFill($image, 0, 0, $black);
ImageString($image, 5, 30, 6, $security_code, $white);
header("Content-Type: image/jpeg");
ImageJpeg($image);
ImageDestroy($image);
}
create_image() ;
exit();
?>
Tip tc, trong trang form chng ta phi khi to session chng nhn c cc gi tr
m ta khi to v s dng trang random_image, k ti ta kim tra xem ngi dng
c nhn submit cha.
Nu c ta s tip tc kim tra xem ngi dng nhp vo textbox c ng l dy s hin th
trn hnh nh hay khng. V xut ra thng bo tng ng vi ni dung ca ngi nhp
liu. (xem li bi 4: X l gi tr form trong PHP)
Sau y l ton b code ca trang form.php:
<?php
session_start();
if (isset($_POST['ok']))
{
if ($_POST['txtCaptcha'] == NUL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
session_start();
if(isset($_POST['ok']))
{
if($_POST['txtCaptcha'] == NULL)
{
echo "Please enter your code";
}
else
{
if($_POST['txtCaptcha'] == $_SESSION['security_code'])
{
echo "ma lenh hop le";
}
else
{
echo "Ma lenh khong hop le";
}
}
}
?>
<form action="form.php" method=post>
<table>
<tr>
<td align="left">
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<label for="captcha">Captcha</label>
</td>
<td>
<input type="text" name="txtCaptcha" maxlength="10" size="32" />
</td>
<td>
<img src="random_image.php" />
</td>
</tr>
<tr>
<td> </td>
<td>
<input type=submit name=ok value="Check" />
</td>
</tr>
</table>
</form>
Download ton b source code ny ti y.
Tng kt:
Qua bi hc ny, chng ta hiu c nguyn tc x l v nhng hm c bn m 1 h
thng khi s dng captcha cn phi vn dng nh th no. V tt nhin hm x l captcha
ny cng ch mang kin trc tng i.
tng cng tnh bo mt hn, cc bn nn s dng 1 s hm chuyn dng nhm m ha
hoc gy ni dung kh nhn hn chn cc tools hoc cc h thng bot c th qua mt
thng s ny.

You might also like