打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
用户登录程序(版本2)
今天,我们把我们上一篇博文中的小项目做一个升级版本!
 
1、产生彩色的验证码
 
在上一篇文中,我们产生了随机的验证码, 但是我们在有的网站上看到的验证码是彩色的,那么,我们怎么来产生彩色的验证码呢?
 
如果要产生彩色的验证码,那么就代表在网页上的表现形式就是1AQ9这种形式了,那么就代表网页中的源代码的表现也就只能为<span style=”color:rgb(x,y,z)”>x</span>!原因很简单,因为四个数字的颜色是不同的!当然,除了span标记,也可以由其他的标记来代替!如bistrongem等内联标记!
 
我们再来讨论一个问题:如果有多个页面都要使用随机数的话,每个页面都写这么多代码,这个工作量是可想而知的!那么最好的解决方法就是:首先将其封装成自定义函数,并且其存储在某一个文档内,然后,我们想调用该函数的话,我们只需要调用该文件就可以了(还记得包含文件吗?)
 
好了,可以工作了!
 
function  random()
 
{
 
       $chars = "0123456789";
 
       for($i=0;$i<4;$i++)
 
       {
 
              $char = substr($chars,rand(0,strlen($chars)-1),1);    
       
              $randChar .= "<span style=\"color:rgb(".rand(50,180).",".rand(50,180).",".rand(50,180).")\">" . $char . "</span>";
 
       }
 
       return $randChar;
 
}
 
 
现在我们再将上面的函数来升一级,那就是:我们已经将随机数的长度固定了,最好的方法是我们将系统的配置存储在一个配置文件里,由用户来决定随机数的长度!
 
好了,我们来创建一个配置文件----www.yx67.com/config.include.php
 
$config[“random”][“length”] = 4;
 
那么现在的问题就是如何将$config[“random”][“length”]的变量引入到函数内部,那就需要在函数内部添加global关键词了!
 
那么函数就变成了
 
function  random()
 
{
 
       global  $config;
       $chars = "0123456789";
 
       for($i=0;$i<$config["random"]["length"];$i++)
 
       {
 
              $char = substr($chars,rand(0,strlen($chars)-1),1);   
        
              $randChar .= "<span style=\"color:rgb(".rand(50,180).",".rand(50,180).",".rand(50,180).")\">" . $char . "</span>";
 
       }
 
       return $randChar;
 
}
 
当然,RGB颜色理论上的范围为0255,但是我们一般的取值范围为50-180之间!
运行后的效果如下:
 
 
另外,我们发现产生的验证码中存在相同的数字,如果我现在不想产生相同的数字,那该怎么办呢?当产生一个数字后,我们就把产生的这个数字从原字符串中删除就可以了!
 
那么函数就变成了:
 
function  random()
 
{
 
       global  $config;
 
       $chars = "0123456789";
 
       for($i=0;$i<$config["random"]["length"];$i++)
 
       {
 
              $char = substr($chars,rand(0,strlen($chars)-1),1);
 
              $chars = str_replace($char,null,$chars);
 
              $randChar .= "<span style=\"color:rgb(".rand(50,180).",".rand(50,180).",".rand(50,180).")\">" . $char . "</span>";
 
       }
 
       return $randChar;
 
}
 
其效果如下:
 
 
2.数据库问题
 
在一个项目中会存在多个页面都会操作数据库的情况,如果每个页面都去连接数据库,情况就会变成很繁琐!根据随机数的经验,我们也将其封装成自定义函数!代码如下:
 
<?php
 
function connect()
 
{
 
       global $config;
 
       $conn = mysql_connect($config["server"]["hostname"],$config["server"]["username"],$config["server"]["password"]);
 
       mysql_select_db($config["server"]["database"]);
 
       return $conn;
 
}
 
function query($sql)
 
{
 
       $result = mysql_query($sql);
 
       return $result;
 
}
 
function getRowsNum($result)
 
{
 
       $rowsNum = mysql_num_rows($result);
 
       return $rowsNum;
 
}
 
function getFieldsNum($result)
 
{
 
       $fieldsNum = mysql_num_fields($result);
 
       return $fieldsNum;
 
}
 
function getFieldName($result,$fieldIndex)
 
{
       $fieldName = mysql_field_name($result,$fieldName);
 
       return  $fieldName;
 
}
 
function getRow($result)
 
{
 
       $row = mysql_fetch_assoc($result);
 
       return $row;
 
}
 
function checkUserLogin($sql)
 
{
 
    $result = query($sql);
 
    $rowsNum = getRowsNum($result);
 
    $userLogined = $rowsNum ? true : false;
 
    return $userLogined;
 
}
 
function freeResult($result)
 
{
 
       return mysql_free_result($result);
 
}
 
function close()
 
{
 
       return mysql_close();
 
}
 
?>
 
项目的运行结果如下
 
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MySQL函数&存储过程
5个相见恨晚的Excel常用函数,你知道多少?
Linux C语言操作MySQL
C语言扩展Apache模块开发入门篇
Mysql UDF
Node.js中JavaScript操作MySQL的常用方法整理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服