剛剛寫的一個小功能,發上來你們共享,支持開源!
首先呢咱們要先找到登陸驗證在什麼地方。
\app\frontend.base.php 在這個文件中115行的位置增長下邊的代碼
//增長用戶使用電子郵件登陸功能 2010-5-20 14:10:41 Dearlv.
if(is_email($user_name))
{
$mod_user =&m('member');
$user_name_arr=$mod_user->get(array(
'fields' => 'user_name',
'conditions' => "email='".$user_name."'",
));
}
$user_name=trim($user_name_arr['user_name']);
這樣就能夠實現一個簡單的郵箱登陸了。支持開源,請保留版權!~
PS:你們要實現郵箱地址登陸功能,別忘了在後臺開啓檢查郵箱惟一!~也就是一個郵箱只能註冊一個帳戶!~
看了下回復,說不明? 我來解釋下這段程序
if(is_email($user_name)) //這一步是調用原來有的方法檢查用戶輸入的是不是電子郵箱
{
$mod_user =&m('member');//這個是實例化一個模型,在這個模型裏邊存儲了用戶的相關信息
$user_name_arr=$mod_user->get(array(
'fields' => 'user_name',
'conditions' => "email='".$user_name."'",
));//這個是以get方法以查詢表中email字段爲條件查詢username 而後放到一個數組裏邊
}
$user_name=trim($user_name_arr['user_name']);//這一步是將數組中的username從新賦值給username。
這個我試驗了是可行的。
或許大家的程序是通過二次開發的,因此我把放在什麼地方明確一下
在上邊我說的文件裏邊有
$user_name = trim($_POST['user_name']);
$password = $_POST['password'];
上邊兩句!~這個是獲取用戶輸入的用戶名和密碼,在下邊接着放上我寫的代碼就能夠了
在源程序來講獲取結束就是
$ms =& ms();
$user_id = $ms->user->auth($user_name, $password);
這段代碼。或許有所不同,可是放到獲取用戶輸入的用戶名密碼下邊是沒有錯誤的。由於的代碼原理是根據用戶輸入的數據判斷是不是電子郵箱,若是是才走的寫的代碼!~而後在後邊會根據郵箱獲取的用戶名從新賦值給user_name 而後就是按原程序走!~
更正一下代碼的邏輯錯誤
if(is_email($user_name)) //這一步是調用原來有的方法檢查用戶輸入的是不是電子郵箱 { $mod_user =&m('member');//這個是實例化一個模型,在這個模型裏邊存儲了用戶的相關信息 $user_name_arr=$mod_user->get(array( 'fields' => 'user_name', 'conditions' => "email='".$user_name."'", ));//這個是以get方法以查詢表中email字段爲條件查詢username 而後放到一個數組裏邊 $user_name=trim($user_name_arr['user_name']);//這一步是將數組中的username } 將從新賦值放到IF裏邊纔對!~