php 登陆程序,PHP(10) 用户登录程序(版本2)

news/2024/7/4 8:26:04

用户登录程序(版本2)

今天,我们把我们上一篇博文中的小项目做一个升级版本!

1、产生彩色的验证码

在上一篇文中,我们产生了随机的验证码,但是我们在有的网站上看到的验证码是彩色的,那么,我们怎么来产生彩色的验证码呢?

如果要产生彩色的验证码,那么就代表在网页上的表现形式就是1AQ9这种形式了,那么就代表网页中的源代码的表现也就只能为x!原因很简单,因为四个数字的颜色是不同的!当然,除了span标记,也可以由其他的标记来代替!如b、i、strong、em等内联标记!

我们再来讨论一个问题:如果有多个页面都要使用随机数的话,每个页面都写这么多代码,这个工作量是可想而知的!那么最好的解决方法就是:首先将其封装成自定义函数,并且其存储在某一个文档内,然后,我们想调用该函数的话,我们只需要调用该文件就可以了(还记得包含文件吗?)!

好了,可以工作了!

functionrandom()

{

$chars = "0123456789";

for($i=0;$i<4;$i++)

{

$char = substr($chars,rand(0,strlen($chars)-1),1);

$randChar .= "" . $char . "";

}

return $randChar;

}

现在我们再将上面的函数来升一级,那就是:我们已经将随机数的长度固定了,最好的方法是我们将系统的配置存储在一个配置文件里,由用户来决定随机数的长度!

好了,我们来创建一个配置文件----config.include.php

$config[“random”][“length”] = 4;

那么现在的问题就是如何将$config[“random”][“length”]的变量引入到函数内部,那就需要在函数内部添加global关键词了!

那么函数就变成了

functionrandom()

{

global$config;

$chars = "0123456789";

for($i=0;$i

{

$char = substr($chars,rand(0,strlen($chars)-1),1);

$randChar .= "" . $char . "";

}

return $randChar;

}

当然,RGB颜色理论上的范围为0至255,但是我们一般的取值范围为50-180之间!

运行后的效果如下:

646f2f026959a554522a989882f17225.png

另外,我们发现产生的验证码中存在相同的数字,如果我现在不想产生相同的数字,那该怎么办呢?当产生一个数字后,我们就把产生的这个数字从原字符串中删除就可以了!

那么函数就变成了:

functionrandom()

{

global$config;

$chars = "0123456789";

for($i=0;$i

{

$char = substr($chars,rand(0,strlen($chars)-1),1);

$chars = str_replace($char,null,$chars);

$randChar .= "" . $char . "";

}

return $randChar;

}

其效果如下:

43aac3da5bc67e9b0934d8b396778742.png

2.数据库问题

在一个项目中会存在多个页面都会操作数据库的情况,如果每个页面都去连接数据库,情况就会变成很繁琐!根据随机数的经验,我们也将其封装成自定义函数!代码如下:

functionconnect()

{

global $config;

$conn = mysql_connect($config["server"]["hostname"],$config["server"]["username"],$config["server"]["password"]);

mysql_select_db($config["server"]["database"]);

return $conn;

}

functionquery($sql)

{

$result = mysql_query($sql);

return $result;

}

functiongetRowsNum($result)

{

$rowsNum = mysql_num_rows($result);

return $rowsNum;

}

functiongetFieldsNum($result)

{

$fieldsNum = mysql_num_fields($result);

return $fieldsNum;

}

functiongetFieldName($result,$fieldIndex)

{

$fieldName = mysql_field_name($result,$fieldName);

return$fieldName;

}

functiongetRow($result)

{

$row = mysql_fetch_assoc($result);

return $row;

}

functioncheckUserLogin($sql)

{

$result = query($sql);

$rowsNum = getRowsNum($result);

$userLogined = $rowsNum ? true : false;

return $userLogined;

}

functionfreeResult($result)

{

return mysql_free_result($result);

}

functionclose()

{

return mysql_close();

}

?>

项目的运行结果如下

0ef42c268d2d9369aa20bd53f3876e70.png

682748b5b58e6fbc3a46bfb7a55b0099.png

源代码在附件里!!!


http://www.niftyadmin.cn/n/3311921.html

相关文章

【语言处理与Python】3.5正则表达式的有益作用

提取字符块 #找到所有的无重叠的匹配指定的正则表达式re.findall(r’[aeiou]’,word)#看看一些文本中的两个或者两个以上的元音序列&#xff0c;并确定他们的相对频率wsfsorted((set(nltk.corpus.treebank.words()))fdnltk.FreqDist(vs for word in wsjfor vs in re.findall(r’…

yiic.php,执行yiic命令提示’php.exe’将YII添加到系统环境变量

还有个问题就是每次执行yiic命令时要把yiic的全路径打出来才行,比如我的yii框架在F:\myproject里面,我每次执行的时候都要F:\myproject\yii\framework\yiic webapp yiiblog我们可以把yiic也加入系统环境变量,加入以下代码:假如php.exe这个目录在E:\Server\phpF:\myproject\yii\…

cvs和svn的区别

1> cvs是不支持文件的复制 移动和重命名 而svn支持 2> cvs在网络中断等时 提交的部分文件也会生效 而svn当用户全部提交完变更的文件时 才会生效 否则直接回滚 变成最初状态 3> 版本控制上 对于一个文件foo.c 在cvs1.1 版本和1.2版本始终是不相同的 而svn中有可能相…

2018年哪项AI研究最紧迫?DeepMind联合创始人说是AI伦理

本文来自AI新媒体量子位&#xff08;QbitAI&#xff09;2018年&#xff0c;正火热的人工智能会朝什么方向发展&#xff1f; DeepMind联合创始人苏莱曼&#xff08;Mustafa Suleyman&#xff09;今天在《连线》上发表文章&#xff0c;给出了他心目中的答案。 苏莱曼在DeepMind主…

egojit介绍

姓名&#xff1a;Egojit 出生年月&#xff1a;1989-10-13 QQ&#xff1a;408365330 E-mail&#xff1a;egojitqq.com 这就是我和我对技术的认知&#xff1a;一直在追求技术的提升&#xff0c;从学习C开始爱上IT&#xff0c;从.NET走进IT行业。执迷于Windows内核开发&#xff0c…

java编写一个类显示出当前日期,Java惯用类库-实例操作-取得当前日期

import java.util.* ;// 导入需要的工具包class DateTime{// 以后直接通过此类就可以取得日期时间private Calendar calendar null ;// 声明一个Calendar对象&#xff0c;取得时间public DateTime(){// 构造方法中直接实例化对象this.calendar new GregorianCalendar() ;}pub…

易错java初级面试题

class A { void fun1() { System.out.println(fun2()); }int fun2() { return 123; } }public class B extends A { int fun2() { return 456; }public static void main(String argv[]) { A a; B b new B(); b.fun1(); a b; a.fun1(); } }执行结果&#xff1a;456 456 注…

K:求取两个数的最大公约数的两个算法

相关介绍: 最大公因数&#xff0c;也称最大公约数、最大公因子&#xff0c;指两个或多个整数共有约数中最大的一个。a&#xff0c;b的最大公约数记为gcd(a&#xff0c;b)。同样的&#xff0c;a&#xff0c;b&#xff0c;c的最大公约数记为gcd(a&#xff0c;b&#xff0c;c)&…