≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

PHP 面向对象实现数据库登陆类的简单示例

人气:825 时间:2018-09-21

这篇文章主要为大家详细介绍了PHP 面向对象实现数据库登陆类的简单示例,具有一定的参考价值,可以用来参考一下。

对PHP面向对象实现数据库登陆的类代码感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!
db_class.php类的实现代码:

/**
 * PHP面向对象实现数据库登陆的类代码
 *
 * @param 
 * @arrange 五一二笔记网: q1010.com
 **/
<?php
   class dbclass
   {
	 public $connection ;
  public $result ;
		public $fetch_num ;   
		 function connect_db($host,$user,$password)
   {
		if(($this->connection = mysql_connect($host,$user,$password)) == FALSE)
	 {
		 die("Cannot connect to the database . error code:".mysql_error());
	 }
   }
   function select_db($dbname,$connection)
   {
		 if(mysql_select_db($dbname,$connection)==FALSE)
	  {
		 die("Cannot to select the database . Error code:".mysql_error());
	  }
   }
   function db_query($sql)
   {
	   $result = mysql_query($sql);
	if($result == FALSE){
	   die("mysql_query execute error . Error code : ".mysql_error());
	}
	$this->result = $result ;
   }
   function fetch_num($result)
   {
		$this->fetch_num = mysql_num_rows($result);
   }
   }
?>
/***   来自四海网(www.q1010.com)   ***/
登录验证:login.php

<?php
/**
 * PHP面向对象实现数据库登陆的类代码
 *
 * @param 
 * @arrange 五一二笔记网: q1010.com
 **/
session_start();
	 require_once("config.php");
  require_once("dbclass.php");
	 if(count($_POST)>0)
	 if(isset($_POST["username"])&&isset($_POST["password"])){  
		<span style="color:#000000;">   $my_db_class = new dbclass();
   $my_db_class->connect_db(HOST,USER,PASSWD);
   $my_db_class->select_db(DB,$my_db_class->connection);
   $sql = sprintf("SELECT * FROM users WHERE user_name = '%s' AND user_pwd = '%s'" , mysql_real_escape_string($_POST["username"]),mysql_real_escape_string($_POST["password"]));
		 $my_db_class->db_query($sql);
		 $my_db_class->fetch_num($my_db_class->result);
		 if($my_db_class->fetch_num == 1)
</span>         {
	   $_SESSION["YES"] = TRUE ;
	$host = $_SERVER["HTTP_HOST"] ; 
	$path = dirname($_SERVER["PHP_SELF"]);
	header("Location:http://$host$path/home.php");
		 }   
  }
?>
<html>
	 <head>
		<title>Login web</title>
  </head>
  <body>
  <?php if(count($_POST)>0) echo "Invalid_login"; ?>
	 <form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>">
	 <table>
		 <tr>
	   <td>Username:</td>
	   <td><input type="text" name="username" value="<?php echo $_POST["username"] ?>"/></td>
   </tr>
   <tr>
	   <td>Password:</td>
	<td><input type="password" name="password"/></td>
   </tr>
   <tr>
	   <td><input type="submit" value="Submit"/></td>
   </tr>
		</table>   
  </form>
  </body>
<html>
/***   来自四海网(www.q1010.com)   ***/
这里有几个需要注意的地方:
1. 创建一个类的实例: $my_db_class = new dbclass()

2. 操作类中的属性或者函数: $my_db_class->result(属性) $my_db_class->connect_db(HOST,USER,PASSWD)(方法);

3. 进行数据库操作时防止SQL注入:$sql = sprintf("SELECT * FROM users WHERE user_name = '%s' AND user_pwd = '%s' " , mysql_real_escape_string($_POST["username"]) , mysql_real_escape_string($_POST["password"]))

注意:
从安全角度来考虑,我们并没有执行数据库查询后得出一个哈希表的 $row 值, 再来比较是否等于 username 和 password , 即:
if ( ($row["user_name"]==$_POST["username"])&&($row["user_pwd"]==$_POST["password"]) )
{
// do something
}else{
// do something
}
利用我们代码中的比较方法,就可以将username 和 passwd 的对比在MySql的内部运行,外部无法看到,因此增加了访问的安全性。

为了更加安全我们通常会对password进行加密,可以利用PASSWORD()函数,应值得注意的是PASSWORD()是作为哈希加密,安全性不高,我们在mysql中看的时候是一长串的字符(它仍是ASCII码),通过一定的方式可以很轻松的破解。

作为用户,我们也不想让数据库的后台管理人员看到我们的密码,我们可以利用AES_ENCRYPT($ness , $method ) $ness制定需要加密的密码 , $method为密钥,这里我们通常使用"secret" , 这样加密后的即使后台管理人员也无法看到我的实际密码。同样设计数据库时也需要做一些改动,比如:不加密或者利用PASSWORD()进行加密时user_pwd字段仍未:VARCHAR类型,但是利用AES_ENCRYPT()加密时则需要将 user_passwd 字段的数据类型设为: VARBINARY ;
因为它是二进制加密,最后你看到的也分辨不出来。

好了,这里重点还是介绍PHP5的面向对象的思想。

本文来自:http://www.q1010.com/173/819-0.html

注:关于PHP 面向对象实现数据库登陆类的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:数据库登陆

您可能感兴趣的文章

上一篇:php 分页类的简单示例
下一篇:php 汉字转换拼音的简单示例
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。