Correcting teacher:灭绝师太
Correction status:qualified
Teacher's comments:
字符串系统函数 | 含义 |
---|---|
strlen(string $string) | 获取字符长度 |
mt_rand( int $min , int $max) | 生成随机数 |
strcmp($string1,$string2) | 比较两个字符串的大小,严格区分大小写 |
strcasecmp($string1,$string2) | 忽略大小写的比较字符串的大小 |
implode() | 将一个一维数组的值转化为字符串 |
explode() | 使用一个字符串分割成一个数组 |
list() | 把数组中的值赋给一组变量 |
md5() | 计算字符串的 MD5 散列值/加密 |
substr(string $string , int $start , int $length = ?) | 返回指定的字符串的子串 |
str_replace(关联字符,被替换字符,聊天记录) | 子字符串替换 |
ucfirst() | 将字符串的首字母转换为大写 |
DIRECTORY_SEPARATOR | 查看当前操作系统支持的路径分隔符 |
英文字母/空格/特殊符号为一个字符,文字为三个字符
strcmp比较字符大小,严格要求大小写,适用于验证密码是否一致
strcasecmp比较字符串大小,不区分大小写,适用于验证码验证
索引数组
关联数组
substr($string,0,0)截取指定的子字符串
函数 | 含义 |
---|---|
ord ( string $string ) | 转换字符串第一个字节为 0-255 之间的值 |
chr ( int $ascii ) | 输入字符集,返回指定的字符 |
函数 | 含义 |
---|---|
parse_str() | 将字符串解析成多个变量 |
parse_url() | 解析 URL,返回其组成部分 |
http_build_query() | 生成 URL-encode 之后的请求字符串 |
base64_encode() | 使用 MIME base64 对数据进行编码 |
file_get_contents() | 将整个文件读入生成一个字符串 |
file_put_contents | 将一个字符串写入文件 |
md5_file() | 计算指定文件的 MD5 散列值 |
password_hash(password,PASSWORD_BCRYPT) | 创建密码的散列(hash) |
password_verify() | 验证密码是否和散列值匹配 |
序列号 | 对应选项 |
---|---|
1-5 | D BCD C B A |
6-10 | AD D B C C |
11-14 | D B ABC D |
15-23 | B B A D C D C B A |
charset="UTF-8">
http-equiv="X-UA-Compatible"content="IE=edge">
name="viewport"content="width=device-width, initial-scale=1.0">
用户注册 rel="stylesheet"href="/zwz/0430/captcha/login.css">
class="box">
class="box1">
class="rootzc">用户注册
class="box2">
用户名:
密码:
再次输入密码:
请输入验证码:
class="box3">
class="username">
class="password">
class="password2">
type="text"name="captcha"maxlength="4"placeholder="请输入图片中的验证码">
src="gd_captcha.php"onclick="this.src='gd_captcha.php?'+newDate().getTime();">
id="error_msg">
class="btn">
/*初始化*/
*{
padding:0;
margin:0;
box-sizing:border-box;
}
/*设置body背景*/
body{
background:url(/zwz/0430/captcha/xkimg.jpg);
background-size:100%100%;
background-repeat:no-repeat;
}
/*主体盒子样式*/
.box{
width:400px;
height:389px;
color:white;
background-color:rgb(0,0,0,0.6);
margin:80pxauto;
/* display: grid; */
/* grid-template-rows: 120px 80px; */
}
/*用户注册样式*/
.rootzc{
grid-column:span2;
background-color:greenyellow;
color:#000;
font-size:1.2em;
font-weight:bold;
display:flex;
justify-content:center;
align-items:center;
width:100%;
height:100%;
}
/*box1盒子样式*/
.box1{
display:grid;
grid-template-columns:120px1fr;
grid-template-rows:repeat(1,40px1fr);
gap:5px;
place-items:center;
}
/*box2盒子样式*/
.box2{
grid-area:2/1;
display:grid;
grid-template-rows:repeat(7,45px);
place-items:centerend;
}
/*box3盒子样式*/
.box3{
grid-area:2/2;
display:grid;
grid-template-rows:repeat(7,45px);
place-items:center left;
position:relative;
}
/*注册按钮样式*/
.button{
width:100%;
height:30px;
background-color:white;
}
.button:hover{
background-color:greenyellow;
cursor:pointer;
}
/*提示样式*/
#error_msg {
position:relative;
bottom:-15px;
}
php
//session_start — 启动新会话或者重用现有会话
session_start();
//imagecreatetruecolor — 新建一个真彩色图像
$image=imagecreatetruecolor(100,30);
//imagecolorallocate — 为一幅图像分配颜色
$bgcolor=imagecolorallocate($image,255,255,255);
// imagefill — 区域填充
imagefill($image,0,0,$bgcolor);
$content="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
$captcha="";
for($i=0;$i<4;$i++){
// 字体大小
$fontsize=10;
// 字体颜色 //imagecolorallocate — 为一幅图像分配颜色
$fontcolor=imagecolorallocate($image,mt_rand(0,120),mt_rand(0,120),mt_rand(0,120));
// 设置字体内容 随机$content下标
$fontcontent=substr($content,mt_rand(0,strlen($content)),1);
//空字符串 保存随机的字体 拼接4次
$captcha.=$fontcontent;
// 显示的坐标
$x=($i*100/4)+mt_rand(5,10);
$y=mt_rand(5,10);
// 填充内容到画布中 // imagefill — 区域填充
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
$_SESSION["captcha"]=$captcha;
//4.3 设置背景干扰元素
for($$i=0;$i<200;$i++){
$pointcolor=imagecolorallocate($image,mt_rand(50,200),mt_rand(50,200),mt_rand(50,200));
imagesetpixel($image,mt_rand(1,99),mt_rand(1,29),$pointcolor);
}
//4.4 设置干扰线
for($i=0;$i<3;$i++){
$linecolor=imagecolorallocate($image,mt_rand(50,200),mt_rand(50,200),mt_rand(50,200));
imageline($image,mt_rand(1,99),mt_rand(1,29),mt_rand(1,99),mt_rand(1,29),$linecolor);
}
//5.向浏览器输出图片头信息
header('content-type:image/png');
//6.输出图片到浏览器
imagepng($image);