ooops在php

时间:2016-05-05 09:23:01

标签: php oop

我正在使用oops在php中开发一个登录系统。 我无法将连接传递给查询,因此查询未处理。

下面是文件: 的config.php

<?php

define("DB_HOST",'localhost');
define("DB_USER",'root');
define("DB_PASSWORD",'');
define("DB_DATABASE",'admin_safeplace');


?>

dbConnect.php ---&gt;用于数据库连接

<?php

class dbConnect
{

    public $conn;
    function __construct()
    {

      //Initialize connection to database
      require_once('config.php');
      $this->conn=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_DATABASE);
      if(!$this->conn)
      {
        die('Cannot connect to the database');    

      }
      return $this->conn;

    }



}

?>

dbFunction.php ---&gt;用于各种功能

<?php
require_once('dbConnect.php');
session_start();
class dbFunction 
{

    function __construct()
    {
       //Connecting to the database
       $db=new dbConnect();      


    }
    function login($email,$password) //Login Function
    {

       $pass=md5($password);
       $sql="Select * from `super_user` where `email`='$email' AND `password`='$pass'";
       $res=mysqli_query($db->conn,$sql);
       $user_data = mysqli_fetch_array($res);
       $rowCount=mysqli_num_rows($res);
       if($rowCount==1)
       {

          $_SESSION['login']=true;
          $_SESSION['email']=$user_data['email'];
          return TRUE;


       }

       else

       {

         return FALSE;

       }


    }



}



?>

登录页面代码:

<!--Login Code-->
<?php

$funObj = new dbFunction(); 
    if(isset($_POST['submit']))
    {
        $email = $_POST['email'];  
        $password = $_POST['password'];  
        $user = $funObj->login($email, $password);  
        if ($user) 
        {  
            // Login Success  
           header("location:list_users.php");  
        } 
       else 
        {  
            // Login Failed  
            echo "<script>alert('Emailid / Password Not Match')</script>";  
        }  


    }
?> 

如何在login()function.can中将$ conn ie连接传递给查询 ?

1 个答案:

答案 0 :(得分:-1)

如果您开始使用OOPS,最好使用PDO库连接数据库并获取功能齐全的SQL数据库概念,如预处理语句,存储过程,事务等。

  1. 创建一个config.php,但改变如下

    <?php
        define("DB_HOST",'localhost');
        define("DB_USER",'root');
        define("DB_PASSWORD",'');
        define("DB_DATABASE",'admin_safeplace');
        try {
            $pdo = new PDO('mysql:host='. DB_HOST .';dbname='.DB_DATABASE, DB_USER, DB_PASSWORD);
        } catch (PDOException $e) {
            exit('Error Connecting To DataBase');
        }
    ?>
    
  2. 创建dbfunction.php作为代码片段的后续代码。

    <?php
        require_once('config.php');
    
        class dbFunction {
            function __construct($pdo) {
                $this->pdo = $pdo;
            }
    
            function login($email,$password) { //Login Function
                $pass=md5($password);
                $sql="Select * from `super_user` where `email`='$email' AND `password`='$pass'";
                $res=$this->pdo->prepare($sql);
                $query->execute();
                $query->fetchAll();
                $rowcount =  $query->rowCount();
    
                if($rowCount==1) {
                    $_SESSION['login']=true;
                    $_SESSION['email']=$user_data['email'];
    
                    return TRUE;
                }  else {
                    return FALSE;
                }
            }
        }
    ?>
    
  3. 使用HTML创建loginscreen.php,他们的php代码将检查登录凭据如下。

    <?php
        $db = new dbFunction($pdo);
        // Get the form data as in your case email and password
        $email = $_POST['email'];  
        $password = $_POST['password'];  
        $user = $db->login($email, $password);
    
        if($user) { // Login Success  
            header("location:list_users.php");  
        } else { // Login Failed  
            echo "<script>alert('Email id / Password Not Match')</script>";  
        }
    ?>