PDA

View Full Version : کلاس login



erfannorouzi
سه شنبه 20 مرداد 1394, 23:55 عصر
با سلام و خسته نباشید خدمت اساتید یک کلاس برای 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);
Session::Set("UserIp", Security::GetIP());
}

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);
}

}