PHP与cookie的交互-一个简单的验证码

    xiaoxiao2023-11-10  166

    一些准备

    提交表单的页面 (submit_data.html)生成验证码,写入cookie的文件 (v_code.php)处理提交数据的文件 (receive_data.php) -

    那么,我们开始吧!

    提交页面

    代码:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>提交数据</title> </head> <body> <form name="form1" action="receive_data.php" method="post"> <div>手机号:<label><input type="text" name="phone"></label></div> <div>验证码:<label><input type="text" name="v_code"></label></div> <div> <!-- 按钮的类型设置为 button 是普通按钮的意思,不带有特殊效果 --> <!-- 此按钮点击后触发 get_v_code()方法,在js里写着 --> <button type="button" onclick="get_v_code()">获取验证码</button> </div> <div><label><input type="submit"></label></div> </form> </body> <script> function get_v_code() { // @from1 是from的name,可以直接选取 // 更改提交地址为,获取 验证码的地址 document.form1.action = 'v_code.php'; // 提交 document.form1.submit(); } </script> </html>

    生成验证码的页面

    代码:

    <?php /** * Created by PhpStorm. * User: lenovo * Date: 19/5/22 022 * Time: 下午 3:51 * */ # 获取手机号,不存在的话就返回 false $phoneNum = isset($_POST['phone']) ? $_POST['phone'] : false; # 有输入手机号的话 if ($phoneNum == true) { /* * @phoneNum # 将手机号 写入 cookie * @v_code # 获得验证码,写入 cookie * @setcookie('','',this) 过期时间 * @$outTime 设置五分钟后过期 60*5 = 300 * @v_code 六位数随机数字,作为验证码 */ $outTime = time() + 300; $v_code = mt_rand(100000, 999999); setcookie('phone', $phoneNum, $outTime, "/"); setcookie('v_code', $v_code, $outTime, "/"); # 输出验证码 echo "手机号:{$phoneNum}的验证码是:<b style='font-size: 36px;color: red'>{$_COOKIE['v_code']}</b>"; # 8 秒后返回 echo '<br>网页8秒后返回'; header("refresh:8;submit_data.html"); } ?>

    关于 setcookie()函数 https://www.runoob.com/php/func-http-setcookie.html

    处理提交数据

    - 代码

    <?php /** * Created by PhpStorm. * User: lenovo * Date: 19/5/25 025 * Time: 下午 6:26 */ # 获取数据 $p_phone = isset($_POST['phone']) ? $_POST['phone'] : false; $p_v_code = isset($_POST['v_code']) ? $_POST['v_code'] : false; if ($p_phone == false || $p_v_code == false) die('请输入手机号和验证码'); $c_phone = isset($_COOKIE['phone']) ? $_COOKIE['phone'] : false; $c_v_code = isset($_COOKIE['v_code']) ? $_COOKIE['v_code'] : false; if ($c_phone == false || $c_v_code == false) die('没有cookie信息'); if ($p_phone == $c_phone && $p_v_code == $c_v_code) // code... echo '注册成功'; else // code... echo '失败';
    最新回复(0)