dongtazu3080 2014-09-24 21:41 采纳率: 100%
浏览 24

将PHP脚本重建为面向对象的编程

I'm trying to rebuild the login_1.php into OOP but i was not successful. in login_1.php the $numberofrows is being echoed but in the login_2.php I am not gettig something back or errors. I do not know where my mistake is. If I comment the getData method out then i get the error "call of undefined method". I do not see a big difference between the getData Method in login_2.php and the flow in login_1.php

login_1.php (It works):

<form action="login.php" method="post" name="login">
   <input type="text" name="username" /><br />
   <input type="password" name="password" id="password"/><br />
   <input type="submit" value="Login" name="login" />
</form>
<?php
       $mysqli = new mysqli('localhost', 'root', '****', '******');
       if(isset($_POST['login'])){

        $username = $_POST['username'];
        $password = $_POST['password'];
        echo $username;
        $stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username=? AND  password=? LIMIT 1");
        $stmt->bind_param('ss', $username, $password);
        $stmt->execute();
        $stmt->bind_result($username, $password);
        $stmt->store_result();
        $numberofrows = $stmt->num_rows();
        echo  '# rows: '.$numberofrows;

}
?>

loginController:

<?php

     error_reporting(-1);
     ini_set('display_errors', 1);


       if (isset($_POST['login'])) {

                 $username = $_POST['username'];
                 $password = $_POST['password'];
                if(!empty($username) && !empty($password)){

                   try{
                   include "./models/login_2.php";
                   $login = new Login($username, $password);

                   if ($login== TRUE) {
                     session_start();
                     $_SESSION['username'] = $username;
                     header('Location: index.php');
                   }


                    }catch(Exception $exc ){
                   echo $exc->getMessage();
                    }
              }else{ echo "Please enter your username und your password!";}
            }

  ?>

login_2.php (Hier the getData method does not echo $numberofrows)

<?php

class Login
{
    private $host        = "localhost";
    private $user        = "root";
    private $db_password = "***";
    private $database    = "****";

    private $db;

    private $username;
    private $password;

    function __construct($username, $password)
    {
        // Set data
        $this->setData($username, $password);

        // connect to db
        $this->connectToDb();

        //get Data
        $this->getData();

    }

   private function setData($username, $password){

             $this->username = $username;
             $this->password = $password;

            }

    private function connectToDb(){
                      session_start();
                      // connect to the server.
                   $this->db = new mysqli($this->host, $this->user, $this->db_password, $this->database);    
                       if ($this->db->connect_errno) {
                           die("We are sorry, you could not be connected to the server,
                            plaese check your connection setting!");
                       }else{
                           echo "You are connected to the database";
                       }


            }

       private function getData(){
               $stmt = $this->db->prepare("SELECT username, password FROM users WHERE username=? AND  password=? LIMIT 1");

               $stmt->bind_param('ss', $username, $password);
               $stmt->execute();
               $stmt->bind_result($username, $password);
               $stmt->store_result();
               $numberofrows = $stmt->num_rows();
               echo  '# rows: '.$numberofrows;

           }
   }
?>

i appreciate any help.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 ETLCloud 处理json多层级问题
    • ¥15 matlab中使用gurobi时报错
    • ¥15 这个主板怎么能扩出一两个sata口
    • ¥15 不是,这到底错哪儿了😭
    • ¥15 2020长安杯与连接网探
    • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
    • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
    • ¥16 mybatis的代理对象无法通过@Autowired装填
    • ¥15 可见光定位matlab仿真
    • ¥15 arduino 四自由度机械臂