PHP 面向对象实现数据库登陆类的解决办法
内容摘要
这篇文章主要为大家详细介绍了PHP 面向对象实现数据库登陆类的简单示例,具有一定的参考价值,可以用来参考一下。
对PHP面向对象实现数据库登陆的类代码对此感兴趣的朋友,看看i
对PHP面向对象实现数据库登陆的类代码对此感兴趣的朋友,看看i
文章正文
这篇文章主要为大家详细介绍了PHP 面向对象实现数据库登陆类的简单示例,具有一定的参考价值,可以用来参考一下。
对PHP面向对象实现数据库登陆的类代码对此感兴趣的朋友,看看idc笔记做的技术笔记!db_class.php类的实现代码:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <code class = "php" > /** * PHP面向对象实现数据库登陆的类代码 * * @param * @arrange 五一二笔记网: 512Pic.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 ); } } ?> /*** 来自php教程(www.idcnote.com) ***/ </code> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <code class = "php" > <?php /** * PHP面向对象实现数据库登陆的类代码 * * @param * @arrange 五一二笔记网: 512Pic.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> /*** 来自php教程(www.idcnote.com) ***/ </code> |
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的面向对象的思想。
注:关于PHP 面向对象实现数据库登陆类的简单示例的内容就先介绍到这里,更多相关文章的可以留意
代码注释