美文网首页
开发企业网站 --GD画图 -- 使用验证码

开发企业网站 --GD画图 -- 使用验证码

作者: 潘肚饿兵哥哥 | 来源:发表于2019-09-25 22:26 被阅读0次

\color{rgba(254, 67, 101, .8)}{使用验证码需要将封装好的验证码函数移植进项目}

\color{rgba(254, 67, 101, .8)}{那就需要建一个函数文件夹}
\color{rgba(254, 67, 101, .8)}{在company中建一个includes文件夹}
\color{rgba(254, 67, 101, .8)}{在这个文件夹下建function.php文件装函数}

image.png

\color{rgba(254, 67, 101, .8)}{后台应该有一个页面调用验证码,需要调用函数}
\color{rgba(254, 67, 101, .8)}{在admin下建一个文件verify.php}

\color{rgba(254, 67, 101, .8)}{先在入口文件引入函数库:}

require_once('includes/function.php');

\color{rgba(254, 67, 101, .8)}{在项目中建fonts文件夹,并把字体复制到此文件夹中不起效果}
\color{rgba(254, 67, 101, .8)}{必须要用绝对路径,用系统字体}
'C:\Windows\Fonts/simfang.ttf'
\color{rgba(254, 67, 101, .8)}{否则不显示}


\color{rgba(254, 67, 101, .8)}{点击更换验证码:}

\color{rgba(254, 67, 101, .8)}{在templates ➝ admin下的index.html中}
\color{rgba(254, 67, 101, .8)}{将调用验证码函数库文件的路径加进去}
\color{rgba(254, 67, 101, .8)}{并给他一个ID:verify}

 <img src="/?m=admin&c=verify" id="verify"> <a id="kanbuq" href="javascript:;">看不清,换一张</a> </div>

\color{rgba(254, 67, 101, .8)}{然后在网页底部使用JS写点击事件}
\color{rgba(254, 67, 101, .8)}{通过函数提取标签的ID}
\color{rgba(254, 67, 101, .8)}{每次点击'看不清,换一张 '标签,就触发函数,产生一个点击事件}
\color{rgba(254, 67, 101, .8)}{每触发一次点击事件,重新将调用验证码函数库的文件路径赋值给这个标签}
\color{rgba(254, 67, 101, .8)}{这样点击一次就会调用一次验证码函数库}
\color{rgba(254, 67, 101, .8)}{以达到刷新验证码的功能}

<script>
给kanbuq这个ID一个点击事件
里面写一个函数
产生点击换属性
当产生一次点击,又把前面html页面的路径给他,就会重新随机一个验证码

  $(function(){
    $("#kanbuq").click(function(){
      $("#verify").attr('src', '/?m=admin&c=verify&'+Math.random());
      // 这里如果写绝对路径会出问题,ie会出错,因为地址不变,刷新页面ie会自动缓存
    //再刷新他就提取缓存的数据显示出来,就没用了,所以需要加一个随机数,以保证每次刷新值都不同
    });
  });
</script>

\color{rgba(254, 67, 101, .8)}{在登录页面接收到用户信息之后,就要提交信息进行审核}
\color{rgba(254, 67, 101, .8)}{在templates→admin→index.html页面将form表单提交到入口文件}
\color{rgba(254, 67, 101, .8)}{提交的位置要写成index.php?m=admin\&c=login这样的形式}
\color{rgba(254, 67, 101, .8)}{不要直接写文件路径}

<form class="form form-horizontal" action="index.php?m=admin&c=login" method="post">

\color{rgba(254, 67, 101, .8)}{这样写就需要在company→admin下建一个文件:login.php}
\color{rgba(254, 67, 101, .8)}{在login.php文件中先包含init.php文件验证表单是否通过入口文件访问}
\color{rgba(254, 67, 101, .8)}{然后在index.html页面验证码处给这个标签取个名}
\color{rgba(254, 67, 101, .8)}{以便login.php文件接收传过来的数据}

<input class="input-text size-L" name="code" type="text" placeholder="验证码" value="" style="width:150px;">

\color{rgba(254, 67, 101, .8)}{之后在login.php接收}
\color{rgba(254, 67, 101, .8)}{login.php:}

    require_once('init.php');
    $code = $_POST['code'];

此时的$code就是接收到的验证码

\color{rgba(254, 67, 101, .8)}{用户输入的验证码已经拿到}

此时就要用这个验证码去和$_SESSION['verify']进行比较

\color{rgba(254, 67, 101, .8)}{这里要去和他进行比较的话,就是文件之间的通信,所以这里也要开启session}
\color{rgba(254, 67, 101, .8)}{既然很多文件之间都需要开启session进行通信,可以直接在入口文件开启session}
\color{rgba(254, 67, 101, .8)}{就不需要每一个文件写session了}
\color{rgba(254, 67, 101, .8)}{入口文件:index.php开启session}

 session_start();

\color{rgba(254, 67, 101, .8)}{入口文件开启session之后,function.php开启的session就可以删掉了}

\color{rgba(254, 67, 101, .8)}{但是接收session还是要的}

\color{rgba(254, 67, 101, .8)}{写好session之后,在login.php页面进行验证}

require_once('init.php');
    $code = $_POST['code'];

    //将 $code接收到的用户输入验证码和系统随机出来的验证码$_SESSION['verify']进行比较:
    if(strtolower($code) != $_SESSION['verify']){
        //如果用户输入错误,就提示验证码错误并且刷新验证码
        //如果输入正确,不做任何反应
        die("<script> alert('验证码错误'); location.href='index.php?m=admin&c=index'; </script>");
    }
image.png

相关文章

网友评论

      本文标题:开发企业网站 --GD画图 -- 使用验证码

      本文链接:https://www.haomeiwen.com/subject/exfhuctx.html