با سلام و خسته نباشید خدمت اساتید یک کلاس برای login نوشتم لطفا ببینید از نظر شی گرايی و قابل توسعه بودن و امنیت درست هست یا خیر تشکر
<?php class Login extends Database { private $_User; private $_Pass; private $_Token; function __construct($user,$pass,$token) { parent::__construct(); $this->CatchPost($user, $pass,$token); } public function NullSession() { if(!isset($_SESSION)) unset ($_SESSION[]); } public function Login() { $this->CheckToken(); $this->SetEscape(); $this->HashPass(); if($this->CheckToDb()){ $this->SetSession(); $this->SetCookie(); Security::Redirect(URL); }else{ Error::SetError("نام کاربری یا گذرواژه اشتباه است"); Security::Redirect(URL."signin"); } } private function CheckToken() { if($this->Token !==Session::Get("Token")) Security::Redirect (URL."signin"); } public function CatchPost($user,$pass,$token) { $this->_User=$user; $this->_Pass=$pass; $this->_Token=$token; } private function SetEscape() { $this->_User=Security::CheckPost($this->_User); $this->_Pass=Security::CheckPost($this->_Pass); } private function HashPass() { $this->_Pass=hash("sha512", $this->_Pass); } public function validation() { $this->User= strtolower($this->User); if($this->_User ===""){ Error::SetError("لطفا نام کاربری را وارد کنید"); Security::Redirect(URL."signin"); }elseif($this->_Pass ==="") { Error::SetError("گذرواژه (پسورد) را وارد نمایید"); Security::Redirect(URL."signin"); } } private function CheckToDb() { $data=array( "user"=> $this->_User, "pass"=> $this->_Pass ); return $this->select("Select COUNT(username,password) FROM user WHERE username=:user AND password=:pass",$data,"fetch",PDO::FETCH_COLUMN); } private function SetSession() { Session::Set("UserName", $this->_User); } private function SetCookie() { $hash=md5(uniqid(rand())); Cookie::Set("remember","$hash",time()+60*60*24*30); $data=array( "remember"=>$hash ); $this->update("user", $data,"username=".$this->_User); } }