1. 일반 데이터베이스 연결 수업
중요 인터페이스:
인터페이스는 MySQL 연결 데이터를 저장하는 데 사용됩니다. 이 인터페이스를 구현하는 클래스는 이 데이터를 사용할 수 있습니다.
인터페이스를 통해 프로그램의 간단하고 필요한 부분을 분리할 수 있으며, 어떤 프로그램이라도 이 인터페이스를 구현할 수 있습니다.
인터페이스는 인터페이스를 통해 정의되고 구현을 통해 구현됩니다.
<?<span style="color: #000000;">php </span><span style="color: #008000;">//</span><span style="color: #008000;">文件名IConnectInfo.php</span> <span style="color: #0000ff;">interface</span><span style="color: #000000;"> IConnectInfo { </span><span style="color: #0000ff;">const</span> Host = "localhost"<span style="color: #000000;">; </span><span style="color: #0000ff;">const</span> UserName = "root"<span style="color: #000000;">; </span><span style="color: #0000ff;">const</span> Password = ""<span style="color: #000000;">; </span><span style="color: #0000ff;">const</span> DBName = "bergift"<span style="color: #000000;">; </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> doConnect(); } </span>?>
일반적인 MySQL 연결 클래스 및 정적 변수:
인터페이스 구현에서는 도메인 확인 연산자를 사용하여 액세스 값을 연결합니다. 개인용 정적 변수 수신을 사용하면 정적 변수 처리 속도를 활용하고 캡슐화를 보장할 수 있습니다.
전역 변수는 캡슐화를 파괴하므로 전역 변수 사용을 피하세요. 정적 변수는 클래스 인스턴스화를 줄이는 데 도움이 됩니다.
<?<span style="color: #000000;">php </span><span style="color: #0000ff;">include_once</span>('IConnectInfo.php'<span style="color: #000000;">); </span><span style="color: #0000ff;">class</span> UniversalConnect <span style="color: #0000ff;">implements</span><span style="color: #000000;"> IConnectInfo { </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #800080;">$Server</span> = IConnectInfo::<span style="color: #000000;">Host; </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #800080;">$CurrentDB</span> = IConnectInfo::<span style="color: #000000;">DBName; </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #800080;">$User</span> = IConnectInfo::<span style="color: #000000;">UserName; </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #800080;">$Password</span> = IConnectInfo::<span style="color: #000000;">Password; </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #800080;">$HookUp</span><span style="color: #000000;">; </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> doConnect(){ self</span>::<span style="color: #800080;">$HookUp</span> = <span style="color: #008080;">mysqli_connect</span>(self::<span style="color: #800080;">$Server</span>,self::<span style="color: #800080;">$User</span>,self::<span style="color: #800080;">$Password</span>,self::<span style="color: #800080;">$CurrentDB</span><span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(self::<span style="color: #800080;">$HookUp</span><span style="color: #000000;">){ }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">mysqli_connect_error</span>(self::<span style="color: #800080;">$HookUp</span><span style="color: #000000;">)){ </span><span style="color: #0000ff;">echo</span> "Fail: ".<span style="color: #008080;">mysqli_connect_error</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">return</span> self::<span style="color: #800080;">$HookUp</span><span style="color: #000000;">; } } </span>?>
간단한 연결 연산을 클래스와 인터페이스를 통해 구현하면 개발 시간을 대폭 단축할 수 있고, 수정이 용이하며, 모든 정보가 상수에 저장됩니다.
에이전트 모드:
보호 에이전트는 요청을 확인한 후에만 실제 주제에 요청을 보냅니다. 이 실제 주제는 데이터베이스 정보 액세스와 같은 요청의 대상입니다.
개인적인 이해: 사용자가 요청을 보내고, 프록시 모듈이 요청을 받은 후 확인 모듈로 이동하며, 올바른 경우 참값을 반환하고 프록시 모듈은 대상으로 전달됩니다. 실제 요청.
공통 클래스를 통해 데이터베이스 연결 및 데이터베이스 선택을 완료합니다.
일반 클래스에는 데이터베이스 정보가 포함된 인터페이스와 데이터베이스 연결을 구현하는 클래스가 포함됩니다.
보호 에이전트에는 인터페이스, 검증을 구현하는 에이전트 모듈, 구현된 클라이언트 개체 클래스가 포함됩니다.
프로세스: 로그인 페이지 -> Client.php(구현된 클라이언트 객체 클래스) - > 올바른 값 -> 에이전트는 처리를 위해 페이지를 realProject.php로 보냅니다.
프록시의 역할은 승인된 사용자만 웹사이트에 접근할 수 있도록 하는 것입니다.
프록시 모드의 프록시 참가자는 사용자가 실제 주제에 접근하기 전에 높은 보안성을 보장하기 위해 몇 가지 작업을 수행할 수 있는 장소라고 볼 수 있습니다.
프록시 모듈은 민감한 정보를 처리하기 위해 보안 수준이 높은 모듈을 호출할 수 있는 간단한 비밀번호 확인입니다.
인터페이스 파일
<?<span style="color: #000000;">php </span><span style="color: #008000;">//</span><span style="color: #008000;">文件名ISubject.php</span> <span style="color: #0000ff;">Interface</span><span style="color: #000000;"> ISubject { </span><span style="color: #0000ff;">function</span><span style="color: #000000;"> request(); } </span>?>
프록시 클래스
<?<span style="color: #000000;">php </span><span style="color: #008000;">//</span><span style="color: #008000;">文件名Proxy.php</span> <span style="color: #0000ff;">include_once</span>('ISubject.php'<span style="color: #000000;">); </span><span style="color: #0000ff;">include_once</span>('RealSubject.php'<span style="color: #000000;">); </span><span style="color: #0000ff;">include_once</span>('UniversalConnect.php'<span style="color: #000000;">); </span><span style="color: #0000ff;">class</span> Proxy <span style="color: #0000ff;">implements</span><span style="color: #000000;"> ISubject { </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$TableMaster</span><span style="color: #000000;">; </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$HookUp</span><span style="color: #000000;">; </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$LoginSuccess</span><span style="color: #000000;">; </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$RealSubject</span><span style="color: #000000;">; </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> login(<span style="color: #800080;">$UserNow</span>,<span style="color: #800080;">$PassNow</span><span style="color: #000000;">) { </span><span style="color: #800080;">$UserName</span> = <span style="color: #800080;">$UserNow</span><span style="color: #000000;">; </span><span style="color: #800080;">$PassWord</span> = <span style="color: #008080;">md5</span>(<span style="color: #800080;">$PassNow</span><span style="color: #000000;">); </span><span style="color: #800080;">$this</span>->LoginSuccess = <span style="color: #0000ff;">false</span><span style="color: #000000;">; </span><span style="color: #800080;">$this</span>->TableMaster = "BAdmin"<span style="color: #000000;">; </span><span style="color: #800080;">$this</span>->HookUp = UniversalConnect::<span style="color: #000000;">doConnect(); </span><span style="color: #800080;">$sql</span> = "SELECT password from <span style="color: #800080;">$this</span>->TableMaster WHERE username = '<span style="color: #800080;">$UserName</span>'"<span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$result</span> = <span style="color: #800080;">$this</span>->HookUp->query(<span style="color: #800080;">$sql</span><span style="color: #000000;">)) { </span><span style="color: #800080;">$row</span> = <span style="color: #800080;">$result</span>-><span style="color: #000000;">fetch_array(MYSQLI_ASSOC); </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$row</span>['password']==<span style="color: #800080;">$PassWord</span><span style="color: #000000;">) { </span><span style="color: #800080;">$this</span>->LoginSuccess = <span style="color: #0000ff;">true</span><span style="color: #000000;">; } </span><span style="color: #800080;">$result</span>-><span style="color: #000000;">close(); } </span><span style="color: #0000ff;">elseif</span>((<span style="color: #800080;">$result</span> = <span style="color: #800080;">$this</span>->HookUp->query(<span style="color: #800080;">$sql</span>))===<span style="color: #0000ff;">false</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">echo</span> "Failed".<span style="color: #800080;">$this</span>->HookUp-><span style="color: #000000;">error; </span><span style="color: #0000ff;">exit</span><span style="color: #000000;">(); } </span><span style="color: #800080;">$this</span>->HookUp-><span style="color: #000000;">close(); </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$this</span>-><span style="color: #000000;">LoginSuccess) { </span><span style="color: #800080;">$this</span>-><span style="color: #000000;">request(); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #008080;">header</span>("Location:index.php"<span style="color: #000000;">); } } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> register(<span style="color: #800080;">$UserNow</span>,<span style="color: #800080;">$PassNow</span><span style="color: #000000;">) { </span><span style="color: #800080;">$UserName</span> = <span style="color: #800080;">$UserNow</span><span style="color: #000000;">; </span><span style="color: #800080;">$PassWord</span> = <span style="color: #008080;">md5</span>(<span style="color: #800080;">$PassNow</span><span style="color: #000000;">); </span><span style="color: #800080;">$this</span>->LoginSuccess = <span style="color: #0000ff;">false</span><span style="color: #000000;">; </span><span style="color: #800080;">$this</span>->TableMaster = "BAdmin"<span style="color: #000000;">; </span><span style="color: #800080;">$this</span>->HookUp = UniversalConnect::<span style="color: #000000;">doConnect(); </span><span style="color: #800080;">$sql</span> = "INSERT INTO <span style="color: #800080;">$this</span>->TableMaster VALUES('<span style="color: #800080;">$UserName</span>','<span style="color: #800080;">$PassWord</span>')"<span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$result</span> = <span style="color: #800080;">$this</span>->HookUp->query(<span style="color: #800080;">$sql</span><span style="color: #000000;">)) { </span><span style="color: #800080;">$this</span>->LoginSuccess = <span style="color: #0000ff;">true</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">elseif</span>((<span style="color: #800080;">$result</span> = <span style="color: #800080;">$this</span>->HookUp->query(<span style="color: #800080;">$sql</span>))===<span style="color: #0000ff;">false</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">echo</span> "Failed".<span style="color: #800080;">$this</span>->HookUp-><span style="color: #000000;">error; </span><span style="color: #0000ff;">exit</span><span style="color: #000000;">(); </span><span style="color: #008000;">//</span><span style="color: #008000;">header("Location:index.php");</span> <span style="color: #000000;"> } </span><span style="color: #800080;">$this</span>->HookUp-><span style="color: #000000;">close(); </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$this</span>-><span style="color: #000000;">LoginSuccess) { </span><span style="color: #0000ff;">echo</span> "<script>alert('Success!');</script>"<span style="color: #000000;">; } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #008080;">header</span>("Location:index.php"<span style="color: #000000;">); } } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> request() { </span><span style="color: #800080;">$this</span>->realSubject = <span style="color: #0000ff;">new</span><span style="color: #000000;"> RealSubject(); </span><span style="color: #800080;">$this</span>->realSubject-><span style="color: #000000;">request(); } } </span>?>
클라이언트가 보낸 정보를 수신하고 확인을 위해 프록시 클래스에 메시지를 보내는 클라이언트 클래스입니다.
<?<span style="color: #000000;">php </span><span style="color: #008000;">//</span><span style="color: #008000;">文件名Client.php</span> <span style="color: #0000ff;">include_once</span>('Proxy.php'<span style="color: #000000;">); </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Client { </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$Proxy</span><span style="color: #000000;">; </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$UserName</span><span style="color: #000000;">; </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$PassWord</span><span style="color: #000000;">; </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> __construct() { </span><span style="color: #800080;">$this</span>->TableMaster = 'BAdmin'<span style="color: #000000;">; </span><span style="color: #800080;">$this</span>->HookUp = UniversalConnect::<span style="color: #000000;">doConnect(); </span><span style="color: #800080;">$this</span>->UserName = <span style="color: #800080;">$this</span>->HookUp->real_escape_string(<span style="color: #008080;">trim</span>(<span style="color: #800080;">$_POST</span>['username'<span style="color: #000000;">])); </span><span style="color: #800080;">$this</span>->PassWord = <span style="color: #800080;">$this</span>->HookUp->real_escape_string(<span style="color: #008080;">trim</span>(<span style="color: #800080;">$_POST</span>['password'<span style="color: #000000;">])); </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$_GET</span>['do']==='register'<span style="color: #000000;">) { </span><span style="color: #800080;">$this</span>->getRegis(<span style="color: #800080;">$this</span>->proxy=<span style="color: #0000ff;">new</span><span style="color: #000000;"> Proxy()); }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #800080;">$_GET</span>['do']==='login'<span style="color: #000000;">) { </span><span style="color: #800080;">$this</span>->getIface(<span style="color: #800080;">$this</span>->proxy=<span style="color: #0000ff;">new</span><span style="color: #000000;"> Proxy()); } } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">function</span> getIface(ISubject <span style="color: #800080;">$proxy</span><span style="color: #000000;">) { </span><span style="color: #800080;">$proxy</span>->login(<span style="color: #800080;">$this</span>->UserName,<span style="color: #800080;">$this</span>-><span style="color: #000000;">PassWord); } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">function</span> getRegis(ISubject <span style="color: #800080;">$proxy</span><span style="color: #000000;">) { </span><span style="color: #800080;">$proxy</span>->register(<span style="color: #800080;">$this</span>->UserName,<span style="color: #800080;">$this</span>-><span style="color: #000000;">PassWord); } } </span><span style="color: #800080;">$Worker</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Client(); </span>?>
실제 테마는 프록시 클래스로만 들어갈 수 있습니다.
<?<span style="color: #000000;">php </span><span style="color: #008000;">//</span><span style="color: #008000;">文件名RealSubject.php</span> <span style="color: #0000ff;">include_once</span>('ISubject.php'<span style="color: #000000;">); </span><span style="color: #0000ff;">class</span> RealSubject <span style="color: #0000ff;">implements</span><span style="color: #000000;"> ISubject { </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> request() { </span><span style="color: #008080;">session_save_path</span>(<span style="color: #008080;">dirname</span>(<span style="color: #ff00ff;">__FILE__</span>).'/sess/'<span style="color: #000000;">); @</span><span style="color: #008080;">session_start</span><span style="color: #000000;">(); </span><span style="color: #800080;">$_SESSION</span>['bergift'] = 'admin'<span style="color: #000000;">; </span><span style="color: #008080;">header</span>("Location:main.php"<span style="color: #000000;">); } } </span>?>