1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP(9) 用户登录(版本1)

作者:用户 来源:互联网 时间:2017-12-01 20:08:45

php登录版本用户

PHP(9) 用户登录(版本1) - 摘要: 本文讲的是PHP(9) 用户登录(版本1), PHP(9) 用户登录(版本1)今天,我们来看一个用户登录的案例。这个案例我们来采用几个不同的版本来实现。数据库,我们就采用上一篇博文中的数据表和数据表吧。首先,我们来设计一个用户登录界面,也就是所谓的GUI。界面的效果如下图具体的样式,


PHP(9) 用户登录(版本1)


今天,我们来看一个用户登录的案例。这个案例我们来采用几个不同的版本来实现。数据库,我们就采用上一篇博文中的数据表和数据表吧。
首先,我们来设计一个用户登录界面,也就是所谓的GUI。界面的效果如下图

PHP(9) 用户登录(版本1)

具体的样式,我在附件中已经提供了,大家可以下载看看。下面我们就开始写程序了。
1、产生随机的验证码
2、在客户端验证表单的合法性
3、提交表单后,验证用户的合法性
4、根据用户是否合法,返回信息到客户端
第一步:产生随机的验证码
在PHP中产生随机验证码的方式主要有两种:字符和图像(需要GD库支持);而字符型的验证码又具体的分为数字型和字型符(也就是数字和字母的组合体),在版本1中我们先来看一下数字的随机验证码。
字符串处理函数中的rand、mt_rand可以产生在指定范围内的随机数,这个正好符合我们的要求。
所以$validCode = rand(1000,9999);//也就是说从1000至9999之间产生一个随机数,当然也可以使用mt_rand。
现在产生随机验证码后,应该将其显示在GUI中,用户以其为参照,所以,在“验证码”文本框后,将其输出就可以了。代码如下:
<?=$validCode?>
当第一步完成后,效果如下图

PHP(9) 用户登录(版本1)第二步:在客户端验证表单的合法性
所谓的在客户端验证表单的合法性,其实就是指使用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);

}
程序运行的结果如下:

PHP(9) 用户登录(版本1)现在的问题就是如何验证”验证码”的合法性,而验证码本身又是随机数。。。。。。
我们可不可以这样说:上图中红圈括起来的部分,一定是正确的验证码。答案是肯定的,那么也就是说,我们只需要判断用户所输入的验证码是否与红圈部分一致,从而就可以获取用户所输入的验证码是否正确了。
现在的问题又出来了,那么怎么获取红色部分的文本呢。我们还记得在JS中存在innerHTML和innerText属性吗。如果我们将红色区域放置在某一个标记内,并且为该标记添加ID属性,那么,我们就可以通过document.getElementById(“xxx”).innerText或document.getElementById(“xxx”).innerHTML来获取其中的文本了(当然这两者之间是存在区别的。),好了,就这么干。所以代码部分应改为
<span id=”showValidCode”><?=$validCode?></span>
那么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;
}
好了,运行一下,其结果如下:

PHP(9) 用户登录(版本1) 第三步:提交表单后,验证用户的合法性
其实,所谓用户登录过程,就是将用户名和密码提交至服务器后,在数据库中查找是否存在此用户,如果存在,则证明用户登录成功,否则,登录失败,所以:
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(“用户登录失败,单击这里<a href=/”login.php/”>重新登录</a>”);
其运行的结果如下:
PHP(9) 用户登录(版本1)



PHP(9) 用户登录(版本1)

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , 登录 , 版本 用户 ,以便于您获取更多的相关知识。