PHP实现登陆代理

####代理模式

  • 组成
  • 抽象角色:通过接口或抽象类生命真实角色实现的业务方法
  • 代理角色:实现抽象角色,是真是角色的代理
  • 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑 #####实现Mysql连接类
/**
 * Created by PhpStorm.
 * User: gewenrui
 * Date: 16/3/13
 * Time: 上午8:16
 */
namespace db;
//php允许借口存储常量
interface IConnectInfo{
    //服务器名称
    const HOST     = "localhost";
    //用户名
    const USERNAME = "root";
    //密码
    const PASSWORD = "";
    //数据库名称444444444444444444444
    const DBNAME   ="proxylog";
    public function doConnect();
}
class UniversalConnect implements IConnectInfo{
    //实现了作用域解析操作符来访问连接值
    //静态变量处理速度优势,提供私有可见性提供的封装性
    private static $server    = IConnectInfo::HOST;
    private static $currentDB = IConnectInfo::DBNAME;
    private static $username  = IConnectInfo::USERNAME;
    private static $password  = IConnectInfo::PASSWORD;
    private static $hookup;
    public  function doConnect()
    {
        //连接数据库
        self::$hookup = mysqli_connect(self::$server,self::$username,self::$password,self::$currentDB);
        if(self::$hookup){
            echo "Successfucl connection to MYSQL"."</br>";
        }else if(mysqli_connect_error(self::$hookup)){
            echo "".mysqli_connect_error();
        }
        return self::$hookup;
    }
}

######进行新建表操作

class CreateTable{
    //设置表名
    private  $tableMaster = "proxyLog";
    private  $hookup;
    public function __construct()
    {
        $this->tableMaster = "proxyLog";
        $this->hookup = UniversalConnect::doConnect();

        $drop = "DROP TABLE IF EXITS $this->tableMaster"."</br>";
        //echo $drop;
        if($this->hookup->query($drop) == true){
            printf("Old table %s has been dropped"."</br>",$this->tableMaster);
        }
        $sql = "CREATE TABLE $this->tableMaster (uname VARCHAR(15),pw VARCHAR(120))";
        //echo $sql;
        if($this->hookup->query($sql) == true){
            echo "Table{$this->tableMaster} has been created successful";
        }
        $this->hookup->close();
    }
}

######向表中添加数据

class HashRegister{
    public function __construct()
    {
        $this->tableMaster = "proxyLog";
        $this->hookup = UniversalConnect::doConnect();
        $username = $this->hookup->real_escape_string(trim($_POST['uname']));
        $password = $this->hookup->real_escape_string(trim($_POST['pw']));
        $sql = "INSERT INTO $this->tableMaster(uname,pw) VALUES('$username',md5('$password'))";
        echo $sql;
        if($this->hookup->query($sql)){
            echo "registeration conpleted";
        }else if($result = $this->hookup->query($sql) == false){
            printf("Invalid query : %s while query %s");
            exit();
            $this->hookup->close();
        }

    }
}

#####代理模式实现用户登陆

<?php
/**
 * Created by PhpStorm.
 * User: gewenrui
 * Date: 16/3/13
 * Time: 上午10:35
 */
include "demo26.php";

interface ISubject{
    function request();
}
//生成一个客户端接受用户post的数据
//实现登陆代理
class Client{
    private $proxy;
    private $un;
    private $pw;

    public function __construct()
    {
        $this->tableMaster = "proxyLog";
        $this->hookup = \db\UniversalConnect::doConnect();
        $this->un = $this->hookup->real_escape_string(trim($_POST['uname']));
        $this->pw = $this->hookup->real_escape_string(trim($_POST['pw']));
        //代理模式
        $this->getIface($this->proxy = new Proxy());

    }
    public function getIface(ISubject $proxy){
        $proxy->login($this->un,$this->pw);
    }
}

//代理类
class Proxy implements ISubject{
    private $tableMaster;
    private $hookup;
    private $logGood;
    private $realSubject;
    public  function login($uNow,$pwNow){
        $uname = $uNow;
        $pw    = md5($pwNow);
        $this->logGood = false;
        $this->tableMaster = "proxyLog";
        $this->hookup = \db\UniversalConnect::doConnect();
        $sql = "SELECT pw from $this->tableMaster WHERE uname = '$uname'";

        if($result = $this->hookup->query($sql)){
            $row = $result->fetch_array(MYSQLI_ASSOC);
            echo $pw;
            if($row['pw'] == $pw){

                $this->logGood = true;

            }
            $result->close();
        }else if(($result = $this->hookup->query($sql)===false)){
            printf("failed %s",$this->hookup->error);
            exit();
        }
        $this->hookup->close();
        if($this->logGood){
            //执行request方法
            $this->request();
        }else{
            echo "username and/or password not on record";
        }
    }
    public function request()
    {
        $this->realSubject = new RealSubject();
        $this->realSubject ->request();
    }
}

class RealSubject implements ISubject{
    public function request()
    {
      $practice = <<<REQUEST
        <html>
        <head><body><head> data </head>
        <body>
        1.  fuck u silly b
        </body>
        </html>
REQUEST;
echo $practice;

    }
}
$data = new Client();

转载于:https://my.oschina.net/kakoi/blog/636552

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值