入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

PHP 登录与验证示例

创建时间:2014-11-29 投稿人: 浏览次数:112

最近学习了PHP,想做一个C/S架构的系统,Android作为客户端,PHP来写服务端。以下是一个简单的PHP登录示例,参考自《PHP 从入门到精通》,加上了自己的一些改编, 希望能帮助到更多学习PHP的朋友。

说明:我是采用PDT+XAMPP的方式进行开发的,数据库用的是MySQL。

示例中用到的MySQL数据库名为mytest,数据库中user表的结构如下图所示:


编码格式统一为为gb2312

里面只有两个记录,如下:


好了,接下来上源码:

login.php

<?php
/*
 * 登录页面,采用post方法传参,让check.php处理
 */

session_start();
//如果已登录则跳转至欢迎界面
if(isset($_SESSION["logined"])&&$_SESSION["logined"]){
	header("location:welcome.php");
}
?>

<!-- 以下为登录页面HTML代码 -->
<!DOCTYPE HTML>
<html>
<head>
<!-- 统一采用gb2312格式编码,并适应手机屏幕 -->
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="viewport" content="user-scalable=no, width=device-width"/>
<title>
系统登录
</title>
</head>

<body >
<div align="center">
<h1>登录页面</h1>
<form action="check.php" method="post" name="form1">
<table>
<tr><td>用户名:</td><td><input type="text" name="username" ></td></tr>
<tr><td>密码:</td><td><input type="password" name="password" ></td></tr>
</table>
<input type="submit" value="登录" id="submit"/>
<input type="reset" value="重置" id="reset"/>
</form>
</div>
</body>
</html>

check.php

<?php
/*
 * 处理页面,检验输入的参数是否与数据库中的一致,如果一致则登录成功,跳转至欢迎页,否则输出登录失败提示信息
 */

//必须包含数据库操作类
require_once "dboperater.php";
//统一采用gb2312格式编码,并适应手机屏幕
echo "<meta http-equiv="Content-Type" content="text/html; charset=gb2312">";
echo "<meta name="viewport" content="user-scalable=no, width=device-width"/>";

session_start();
//获取post方法传来的参数
$username = $_POST["username"];
$password = $_POST["password"];

//创建一个数据库操作实例
$db_operater = new DB_Operater("mytest","root","");
//调用其db_query方法获取user_password的查询结果,条件为post方法获得的username
//如果username在数据库中不存在,则受影响的行为0
$result = $db_operater->db_exec("select user_password from user where user_name="".$username.""");
//如果查询不出错则获得收影响的行和列  ps:查询不出错指的是SQL语句语法没有错或是数据库无异常
if($result){
	$rows = mysql_num_rows($result);
	$column = mysql_num_fields($result);
}
//定义一个用于保存真正密码的变量
$rule_password = null;
for($i = 0;$i < $rows;$i++){
	for($j = 0;$j < $column;$j++){
		 $rule_password = mysql_result($result, $i, $j)."";
	}
}
//关闭数据库连接
$db_operater->db_close();

//如果rule_password不为空,且post方法传来的值与真正的值一样,设置登录状态和用户名,并跳转至欢迎界面
if($rule_password){
	if($rule_password == $password){
		$_SESSION["logined"] = true;
		$_SESSION["username"] = $username;
		header("location:welcome.php");
	}
	//密码错误
	else{
		echo "密码错误,请重新<a href="login.php">登录</a>";
	}
}
//如果rule_password为空,说明用户名错误
else{
	echo "用户名错误,请重新<a href="login.php">登录</a>";
}

welcome.php

<div align="center">
<h1>欢迎页面</h1>
</div>
<?php
/*
 * 欢迎页面
 */

session_start();
echo "<meta http-equiv="Content-Type" content="text/html; charset=gb2312">";
echo "<meta name="viewport" content="user-scalable=no, width=device-width"/>";

//如果已登录,输出欢迎信息
if(isset($_SESSION["logined"])&& $_SESSION["logined"]){
	echo $_SESSION["username"].",您好,欢迎光临!<br/><a href="logout.php">注销</a>";	
}
//未登录提示
else{
	echo "未登录!请<a href="login.php">登录</a>";
}

logout.php

<div align="center">
<h1>注销页面</h1>
</div>
<?php
/*
 * 注销页面
 */

session_start();
session_destroy();
echo "<meta http-equiv="Content-Type" content="text/html; charset=gb2312">";
echo "<meta name="viewport" content="user-scalable=no, width=device-width"/>";
echo "注销成功!<a href="login.php">重新登录</a>";

dboperater.php

<?php
/*
 * 定义一个数据库操作类DB_Operater
 */
class DB_Operater{
	public function __construct($db_name, $username, $password){
		//这里采用本地的mysql服务器
		mysql_connect("localhost",$username,$password);
		mysql_select_db($db_name);
	}
	//数据库查询方法,返回一个查询结果集
	public function db_exec($sql){
		//采用gb2312编码格式获取查询结果
		mysql_query("set names gb2312");
		return mysql_query($sql);
	}
	//数据库关闭方法
	public function db_close(){
		mysql_close();
	}
}



声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像