php+MySql实现登录系统与输出浏览者信息功能


Posted in PHP onJuly 01, 2016

本系统,与之前在《ASP 连接Access数据库的登陆系统》(点击打开链接)一文中的asp登录系统的思想完全一样,只是编程语言从asp变成了php,数据库从Access变成了mysql。

一、基本目标

首先在mysql存在着如下的用户信息表:

php+MySql实现登录系统与输出浏览者信息功能

在页面中有一个登录表单,上面需要用户填写用户名与密码等信息

如果用户输入的用户名在用户信息表里面根本就没有,那么则弹出“查无此人”的对话框,并返回本页

php+MySql实现登录系统与输出浏览者信息功能

如果用户输入的密码错误,那么则弹出“密码错误”的对话框,并返回本页

php+MySql实现登录系统与输出浏览者信息功能

如果用户输入的登录信息正确,那么则跳到“登录成功”的页面,并输出用户当前的IP、使用的系统的语言环境、与浏览器信息

php+MySql实现登录系统与输出浏览者信息功能

“登录成功”的页面是被保护的,浏览器并不可以通过在浏览器中输入地址的方式,绕开输入密码的页面,直接访问“登录成功”页面

php+MySql实现登录系统与输出浏览者信息功能

二、基本思想

php+MySql实现登录系统与输出浏览者信息功能

用户输入用户名与密码的那一页用静态页面,只要其表单指向登录判断页login.php就可以了。

welcome.php是用户成功登录的页面,

exit.php用来销毁session。

session就是用来存放用户名与密码的浏览器全局变量。

三、制作过程
 (1)login.html 
没什么好说的,就一个登录表单,见如下代码: 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登录页面</title>
</head>

<body>
<form action="login.php" method="post">
用户名:<input type="text" name="username" /><br />
密码:<input type="password" name="password" /><br />
<input type="submit" value="登录" />
</form>
</body>
</html>

 (2)exit.php

销毁session页面,并且在销毁session之后,把页面打回login.html
值得注意的是,在php一旦需要使用session,就应该在所有代码的第一行使用session_start();系统函数,否则可能会出错

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登出页面</title>
</head>

<body>
<?php
session_start();
session_destroy();
?>
<script>
window.location.href="login.html";
</script>
</body>
</html>

 (3)login.php

登录判断页面,还是经典的登录三段论,首先接收login.html传递过来的username与password,查询用户信息表中是否有这个username,如果没有,再登录失败,如果有,再同时判断传过来的、用户输入的password是否等于这个username在数据库中对应的dbpassword,如果是,登录成功,并把username存入session,传递给登录成功页面,否则登录失败。
本页面还用到了系统内置函数is_null判断查询结果是否为空,如果数据库查询结果为空,根本就不会有值赋予给新定义的dbusername,这个dbusername依旧为空。
同时,如果登录成功之后,还要使用mt_rand(0,100000);在0~100000中产生一个保护登录成功页面的随机数code。
并且做完一切判断之后,记得在最后加入一条关闭数据库的语句,人走带门。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登陆中……</title>
</head>

<body>
<?php
session_start();
$username=$_REQUEST["username"];
$password=$_REQUEST["password"];
$con=mysql_connect("localhost","root","root");
if(!$con){
 die("数据库连接失败!");
 }
mysql_select_db("test",$con);
$dbusername=null;
$dbpassword=null;
$result=mysql_query("select * from user where username='".$username."';");
while($row=mysql_fetch_array($result)){
 $dbusername=$row["username"];
 $dbpassword=$row["password"];
}
if(is_null($dbusername)){
?>
<script>
alert("查无此人!");
window.location.href="login.html";
</script>
<?php 
 }
else{
 if($dbpassword!=$password){
?>
<script>
alert("密码错误!");
window.location.href="login.html";
</script>    
<?php
 }
 else{
 $_SESSION["username"]=$username;
 $_SESSION["code"]=mt_rand(0,100000);
?>
<script>
window.location.href="welcome.php";
</script> 
<?php
 }
 }
mysql_close($con);
?>

</body>
</html>

 (4)welcome.php

在welcome.php成功登录页面中,先要用isset来判断是否有login.php传递过来的code,这里的isset与上面is_null的区别,isset是判断有没有这个变量,is_null是在有这个变量的前提下,判断这个变量是否为null,如果没有code这个session则说明用户非正常途径登录的,马上扔到exit.php再见走人
如果是正常登录,则通过server对象里面的各个小对象输出用户信息。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>欢迎登录</title>
</head>

<body>
<?php
session_start();
if(isset($_SESSION["code"])){
?>
欢迎登录!<?php
echo "${_SESSION["username"]}";
?><br />
你的IP:<?php
echo "${_SERVER['REMOTE_ADDR']}";
?>
<br />
你的系统语言:<?php
echo "${_SERVER['HTTP_ACCEPT_LANGUAGE']}";
?>
<br />
你的浏览器为:<?php
echo "${_SERVER['HTTP_USER_AGENT']}";
?>
<br />
<a href="exit.php">退出登录</a>
<?php
}
else{
?>
<script>
alert("请正常登录!");
window.location.href="exit.php";
</script>
<?php
}
?>
</body>
</html>

 至此,整个登录系统开发完成。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP stristr() 函数(不区分大小写的字符串查找)
Jun 03 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
PHP中使用数组指针函数操作数组示例
Nov 19 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
Mar 25 PHP
PHP实现的memcache环形队列类实例
Jul 28 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
Apr 14 PHP
php实用代码片段整理
Nov 12 PHP
利用switch语句进行多选一判断的实例代码
Nov 14 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
php使用QueryList轻松采集js动态渲染页面方法
Sep 11 PHP
PHP使用Redis队列执行定时任务实例讲解
Mar 24 PHP
php无法连接mysql数据库的正确解决方法
Jul 01 #PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 #PHP
Windows2003下php5.4安装配置教程(IIS)
Jun 30 #PHP
Windows2003下php5.4安装配置教程(Apache2.4)
Jun 30 #PHP
PHP环境搭建的详细步骤
Jun 30 #PHP
PHP之图片上传类实例代码(加了缩略图)
Jun 30 #PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
Jun 30 #PHP
You might like
PHP 中的类
2006/10/09 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
PHP中strtotime函数使用方法详解
2011/11/27 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
2010/11/14 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
selenium+python环境配置教程详解
2019/05/28 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
Python enumerate内置库用法解析
2020/02/24 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
优衣库澳大利亚官网:UNIQLO澳大利亚
2017/01/18 全球购物
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
生物专业个人自荐信范文
2013/11/29 职场文书
高中毕业自我鉴定
2013/12/19 职场文书
保安拾金不昧表扬信
2014/01/15 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS