PHP案例:連接數據庫實現登錄功能

PHP案例:連接數據庫實現登錄功能

一、創建數據庫與表

二、創建PHP項目login

 

1、用戶實體類 - User.php

<?php
/**
 * Created by PhpStorm.
 * User: howard
 * Date: 2017/4/12
 * Time: 13:54
 */

namespace net\hw\bean;

class User
{
    private $id;
    private $username;
    private $password;
    private $telephone;
    private $registerTime;
    private $popedom;

    /**
     * @return mixed
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @param mixed $id
     */
    public function setId($id)
    {
        $this->id = $id;
    }

    /**
     * @return mixed
     */
    public function getUsername()
    {
        return $this->username;
    }

    /**
     * @param mixed $username
     */
    public function setUsername($username)
    {
        $this->username = $username;
    }

    /**
     * @return mixed
     */
    public function getPassword()
    {
        return $this->password;
    }

    /**
     * @param mixed $password
     */
    public function setPassword($password)
    {
        $this->password = $password;
    }

    /**
     * @return mixed
     */
    public function getTelephone()
    {
        return $this->telephone;
    }

    /**
     * @param mixed $telephone
     */
    public function setTelephone($telephone)
    {
        $this->telephone = $telephone;
    }

    /**
     * @return mixed
     */
    public function getRegisterTime()
    {
        return $this->registerTime;
    }

    /**
     * @param mixed $registerTime
     */
    public function setRegisterTime($registerTime)
    {
        $this->registerTime = $registerTime;
    }

    /**
     * @return mixed
     */
    public function getPopedom()
    {
        return $this->popedom;
    }

    /**
     * @param mixed $popedom
     */
    public function setPopedom($popedom)
    {
        $this->popedom = $popedom;
    }

    function __toString()
    {
        return "User{id=$this->id, username='$this->username',
        password='$this->password', telephone='$this->telephone',
        registerTime='$this->registerTime', popedom=$this->popedom}";
    }
}

?>

2、數據源類 - DataSource.php

<?php
/**
 * Created by PhpStorm.
 * User: howard
 * Date: 2017/4/12
 * Time: 13:56
 */

namespace net\hw\util;

class DataSource
{
    public function getConn()
    {
        $host = "localhost";
        $username = "root";
        $password = "root";
        $dbname = "simonshop";

        $conn = mysqli_connect($host, $username, $password, $dbname);

        if ($conn->connect_errno)
        {
            die("連接MySQL數據庫失敗!" . $conn->connect_error);
        }

        return $conn;
    }
}

3、用戶數據訪問類 - UserDao.php

<?php

namespace net\hw\dao;

require_once("/net/hw/bean/User.php");
require_once("/net/hw/util/DataSource.php");

use \net\hw\bean\User;
use \net\hw\util\DataSource;

class UserDao
{
    public function findUserById($id)
    {
        $dataSource = new DataSource();
        $conn = $dataSource->getConn();
        $sql = "select * from t_user where id = $id";
        $result = $conn->query($sql);
        $row = $result->fetch_array(MYSQLI_ASSOC);
        $user = new User();
        $user->setId($row['id']);
        $user->setUsername($row['username']);
        $user->setPassword($row['password']);
        $user->setTelephone($row['telephone']);
        $user->setRegisterTime($row['register_time']);
        $user->setPopedom($row['popedom']);
        return $user;
    }

    public function findAllUsers()
    {
        $dataSource = new DataSource();
        $conn = $dataSource->getConn();
        $sql = "select * from t_user";
        $result = $conn->query($sql);
        $i = 0;
        $users = array();
        while($row = $result->fetch_assoc()) {
            $users[$i] = new User();
            $users[$i]->setId($row['id']);
            $users[$i]->setUsername($row['username']);
            $users[$i]->setPassword($row['password']);
            $users[$i]->setTelephone($row['telephone']);
            $users[$i]->setRegisterTime($row['register_time']);
            $users[$i]->setPopedom($row['popedom']);
            $i++;
        }

        return $users;
    }

    public function login($username, $password)
    {
        $dataSource = new DataSource();
        $conn = $dataSource->getConn();
        $sql = "select * from t_user where username = '$username' and password = '$password'";
        $result = $conn->query($sql);
        if ($result->num_rows > 0) {
            return true;
        } else {
            return false;
        }
    }
}

?>

說明:$result->fetch_array(MYSQLI_ASSOC) 就相當於 $result->fetch_assoc()

4、登錄頁面 - login.php

<!DOCTYPE html>
<html>
<head>
    <title>用戶登錄</title>
    <style type="text/css">
        body {
            text-align: center;
        }

        table {
            margin: auto;
        }
    </style>
</head>
<body>
<h3>用戶登錄</h3>
<form action="doLogin.php" method="POST">
    <table border="1" cellspacing="0" cellpadding="5">
        <tr>
            <td>用戶名</td><td>
            <input id="username" type="text" name="username"></td>
        </tr>
        <tr>
            <td>密碼</td>
            <td><input id="password" type="password" name="password"></td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <input type="submit" value="登錄" onclick="return checkForm();">
                <input type="reset" value="重置">
            </td>
        </tr>
    </table>
</form>
</body>
<script type="text/javascript">
    function checkForm() {
        var username = document.getElementById("username").value;
        var password = document.getElementById("password").value;

        if (username == null || username == "") {
            alert("用戶名不能爲空!");
            document.getElementById("username").focus();
            return false;
        }

        if (password == null || password == "") {
            alert("密碼不能爲空!");
            document.getElementById("password").focus();
            return false;
        }

        return true;
    }
</script>
</html>

5、登錄處理頁面 - doLogin.php

<?php
require_once("/net/hw/dao/UserDao.php");
use \net\hw\dao\UserDao;

$username = $_POST["username"];
$password = $_POST["password"];

$userDao = new UserDao();
$success = $userDao->login($username, $password);

if ($success) {
    $location = "success.php?username=$username";
    header("location:$location");
} else {
    $location = "failure.php?username=$username";
    header("location:$location");
}
?>

6、登錄成功頁面 - succes.php

<!DOCTYPE html>
<html>
 <head>  
  <title>登錄成功</title>
 </head>
 <body>    
   <h1>
   <?php 
      $username=$_GET["username"];
      echo $username;
   ?>,登錄成功</h1>
 </body>
</html>

7、登錄失敗頁面 - failure.php

<!DOCTYPE html>
<html>
 <head>
  <title>登錄失敗</title>
 </head>
 <body>
   <h1>
   <?php 
      $username=$_GET["username"];
      echo $username;
   ?>,登錄失敗</h1>
 </body>
</html>

運行效果如下:

8、顯示單個用戶頁面  - showOneUser.php

<?php
require_once("/net/hw/dao/UserDao.php");
use \net\hw\dao\UserDao;

$userDao = new UserDao();
$id = 2;
$user = $userDao->findUserById($id);
echo $user . "<br>";

?>

9、顯示全部用戶頁面 - showAllUsers.php

<?php
require_once("/net/hw/dao/UserDao.php");
use \net\hw\dao\UserDao;

$userDao = new UserDao();
$users = $userDao->findAllUsers();
foreach ($users as $user) {
    echo $user . "<br>";
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章