通过清心醉

PHP同步邮箱及用户名登陆的方法思路

首先假设我们有个user表,里面包含user,password,email主要3个字段
class loginModel extends BBS_SYSTEM
{
private $user;private $password; #用于接收POST过来的参数
protected $login_type; #登陆类型

private $mailtype; #邮件类型判断
protected function email_type($email) #判断邮件格式
{
$this->mailtype=$email;        /*
PHP5.3版本前使用以下语句
if(!ereg(“^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+”,$this->mailtype))
*/

if(preg_match(“/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/”,$this->mailtype))
//PHP5.3以后版本方法,可以自己写个方法判断PHP的版本来调用.
{
return true;
}
else
{
return false;
}

}

public function login()
{
$this->user=@$_POST[“user_name”];$this->password=@$_POST[“user_passwd”];
#有GET或者POST的最好带个@,否则人家刷新页面数据不存在,会报错,目录会暴光.
$login_type;
#根据帐户的类型来判断用户登陆时要用用户字段还是邮件字段
if ($this->email_type($this->user)) #判断用户是否使用EMAIL登陆
{
$login_type=’mail’;  #为用户登陆的类型字段赋值
}
else
{
$login_type=’user’;
}

$sql=”SELECT *FROM user”; #必须是通过审核了的用户.
foreach ( $this->pdo->query($sql) as $login) #提取SQL数据

{
if (($this->user==$login[$login_type])&&(md5($this->password)==$login[‘password’])&&$login[‘yesno’]==1)
{   #如果帐号和MD5加密后的密码正确
if ($login_type==’mail’) #生成邮件登陆的方式给视图调用,提示用户使用的登陆方式.
{
$this->login_type=”邮件”;
}

else
{
$this->login_type=”用户名”;
}
$_SESSION[“user”]=$this->user;
$this->view(‘login’);
}

else

{                 $this->view(‘error’);             }         }

}

}

 

关于作者

清心醉 administrator

发表评论

请输入验证码: