设为首页 收藏本站
查看: 560|回复: 0

[经验分享] PHP(9) 用户登录(版本1)

[复制链接]

尚未签到

发表于 2018-12-20 06:13:02 | 显示全部楼层 |阅读模式
PHP(9) 用户登录(版本1)


今天,我们来看一个用户登录的案例!这个案例我们来采用几个不同的版本来实现!数据库,我们就采用上一篇博文中的数据表和数据表吧!

首先,我们来设计一个用户登录界面,也就是所谓的GUI!界面的效果如下图



具体的样式,我在附件中已经提供了,大家可以下载看看!下面我们就开始写程序了!

1、 产生随机的验证码

2、 在客户端验证表单的合法性

3、 提交表单后,验证用户的合法性

4、 根据用户是否合法,返回信息到客户端

第一步:产生随机的验证码

在PHP中产生随机验证码的方式主要有两种:字符和图像(需要GD库支持);而字符型的验证码又具体的分为数字型和字型符(也就是数字和字母的组合体),在版本1中我们先来看一下数字的随机验证码!

字符串处理函数中的rand、mt_rand可以产生在指定范围内的随机数,这个正好符合我们的要求!
所以
$validCode = rand(1000,9999);//也就是说从1000至9999之间产生一个随机数,当然也可以使用mt_rand。

现在产生随机验证码后,应该将其显示在GUI中,用户以其为参照,所以,在“验证码”文本框后,将其输出就可以了!代码如下:



当第一步完成后,效果如下图



第二步:在客户端验证表单的合法性

所谓的在客户端验证表单的合法性,其实就是指使用JS来查看表单中必选项是否填写、必选项是否选择、表单中某些元素的数据是否合法(如用户名中禁止包含特殊符号)等。现在,我们先简单的验证一下,用户和密码是否填写!

function validateLogin()

{

    if($(“username”).value == “”)

    {

        window.alert(“用户名必须填写”);

        return false;

    }

    if($(“password”).value == “”)

    {

        window.alert(“密码必须填写”);

        return false;

    }

    return true;

}

function $(id)

{

    return document.getElementById(id);

}

程序运行的结果如下:



现在的问题就是如何验证”验证码”的合法性,而验证码本身又是随机数!!!???

我们可不可以这样说:上图中红圈括起来的部分,一定是正确的验证码?答案是肯定的,那么也就是说,我们只需要判断用户所输入的验证码是否与红圈部分一致,从而就可以获取用户所输入的验证码是否正确了!

现在的问题又出来了,那么怎么获取红色部分的文本呢?我们还记得在JS中存在innerHTML和innerText属性吗?如果我们将红色区域放置在某一个标记内,并且为该标记添加ID属性,那么,我们就可以通过document.getElementById(“xxx”).innerText或document.getElementById(“xxx”).innerHTML来获取其中的文本了(当然这两者之间是存在区别的!),好了,就这么干!所以代码部分应改为



那么JS部分的代码就变成了:

function validateLogin()
{
    if($(“username”).value == “”)

    {
        window.alert(“用户名必须填写”);

        return false;

    }

    if($(“password”).value == “”)

    {

    window.alert(“密码必须填写”);

    return false;

    }

    if($(“validCode”).value != $(“showValidCode”).innerText)

    {

        window.alert(“验证码错误”);

        return false;

    }

    return true;

}

好了,运行一下,其结果如下:


  
第三步:提交表单后,验证用户的合法性

其实,所谓用户登录过程,就是将用户名和密码提交至服务器后,在数据库中查找是否存在此用户,如果存在,则证明用户登录成功,否则,登录失败,所以:

1. 我们需要在服务器上获取用户输入的用户名和密码

$username = $_POST[‘username’];

$password = md5($_POST[“password”])

因为,在数据库里用户的密码使用MD5加密了,所以,当获取出密码后,也必须进行加密!

2. 以用户输入的用户名和密码为条件,在数据库进行查询!

既然在数据库中查询,连接数据库服务器就成为必然了!

$conn = mysql_connect(“localhost”,”root”,””);

mysql_select_db(“test”);

$sql = “select * from users where username=’{$username} and password=’{$password}’”;

$result = mysql_query($sql);

现在的问题就是如何判断用户是否登录成功?如果SQL命令成功执行的话(也就是不存在语法错误),其返回的数据类型为资源,也就是其存放了结果的结果集,如果我们可以知道结果集中包含的行数(记录数),因为其结果集中的行数只能是零或非零的数字,如果为零的话,则证明用户登录失败,否则成功(即使成功,结果集中的行数也只能为1,原因…)!所以:

$rowsNum = mysql_num_rows($result);

3. 现在,我们可以根据用户登录的状态返回给客户端信息了,也就是第四步

if($rowsNum)

echo(“用户登录成功”);

else

echo(“用户登录失败,单击这里重新登录”);

其运行的结果如下:













运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-653287-1-1.html 上篇帖子: 安装PHP常见问题汇总 下篇帖子: php 源码安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表