xiuno程序UID登录

Mr.Chen
社区管理 ⚔青铜 镖丁
教程分享 18 浏览 5 回复

1_BGK6GV8R96B9JNP.jpg

只需在主目录找到文件夹 route

在route里面找到user.php

大概在53行到155行左右

找到以下代码

elseif($action == 'login') {

	// hook user_login_get_post.php
	
	if($method == 'GET') {

		// hook user_login_get_start.php
		
		$referer = user_http_referer();
			
		$header['title'] = lang('user_login');
		
		// hook user_login_get_end.php
		
		include _include(APP_PATH.'view/htm/user_login.htm');

	} else if($method == 'POST') {

		// hook user_login_post_start.php
		
		$email = param('email');			// 邮箱或者手机号 / email or mobile
		$password = param('password');
		empty($email) AND message('email', lang('email_is_empty'));
		if(is_email($email, $err)) {
			$_user = user_read_by_email($email);
			empty($_user) AND message('email', lang('email_not_exists'));
		} else {
			$_user = user_read_by_username($email);
			empty($_user) AND message('email', lang('username_not_exists'));
		}

		!is_password($password, $err) AND message('password', $err);
		// hook user_login_post_password_check_after.php
		md5($password.$_user['salt']) != $_user['password'] AND message('password', lang('password_incorrect'));

		// 更新登录时间和次数
		// update login times
		user_update($_user['uid'], array('login_ip'=>$longip, 'login_date' =>$time , 'logins+'=>1));

		// 全局变量 $uid 会在结束后,在函数 register_shutdown_function() 中存入 session (文件: model/session.func.php)
		// global variable $uid will save to session in register_shutdown_function() (file: model/session.func.php)
		$uid = $_user['uid'];
		
		$_SESSION['uid'] = $uid;
		
		user_token_set($_user['uid']);
		
		// hook user_login_post_end.php
		
		// 设置 token,下次自动登陆。
		
		message(0, lang('user_login_successfully'));

	}

替换为

$referer = user_http_referer();
        
        $header['title'] = lang('user_login');
        
        // hook user_login_get_end.php
        
        include _include(APP_PATH.'view/htm/user_login.htm');

    } else if($method == 'POST') {

        // hook user_login_post_start.php

        $login_input = param('email');  // 用户输入的登录信息,可能是 UID / 用户名 / 邮箱
        $password = param('password');
        empty($login_input) AND message('email', lang('email_is_empty'));  // 判断输入是否为空
        
        // 判断输入的是 UID 还是邮箱/用户名
        if (is_numeric($login_input)) {
            // 如果输入的是 UID
            $_user = user_read($login_input);  // 根据 UID 查找用户
            empty($_user) AND message('email', lang('uid_not_exists'));  // 如果没有找到用户,返回 UID 不存在的错误提示
        } else {
            // 如果输入的是邮箱或用户名
            if (is_email($login_input, $err)) {
                // 如果是邮箱,使用邮箱查找用户
                $_user = user_read_by_email($login_input);
                empty($_user) AND message('email', lang('email_not_exists'));  // 如果没有找到用户,返回邮箱不存在的错误提示
            } else {
                // 否则认为是用户名,使用用户名查找用户
                $_user = user_read_by_username($login_input);
                empty($_user) AND message('email', lang('username_not_exists'));  // 如果没有找到用户,返回用户名不存在的错误提示
            }
        }

        // 检查密码是否正确
        !is_password($password, $err) AND message('password', $err);  // 检查密码格式是否正确

        // 密码匹配检查
        md5($password.$_user['salt']) != $_user['password'] AND message('password', lang('password_incorrect'));  // 密码不正确则提示

        // 更新登录时间和次数
        user_update($_user['uid'], array('login_ip'=>$longip, 'login_date' =>$time , 'logins+'=>1));

        // 设置 session
        $uid = $_user['uid'];
        $_SESSION['uid'] = $uid;

        // 设置 token,下次自动登陆
        user_token_set($_user['uid']);
        
        // hook user_login_post_end.php
        
        message(0, lang('user_login_successfully'));  // 登录成功后返回信息

    }
 

然后清除缓存就OK了

评论5
评论 · 5
温柔的柚子
温柔的柚子 练气期 · #5 ·
已解决,谢谢楼主
快乐的LuckyStar
快乐的LuckyStar 练气期 · #4 ·
学到了,顶一下
CoffeeAddict☀️
CoffeeAddict☀️ 练气期 · #3 ·
写得很清楚,收藏了
SoftRain✨
SoftRain✨ 练气期 · #2 ·
感谢分享!
AI小助手
AI小助手 版主 · #1 ·
您好,Mr.Chen!您在xiuno程序中修改UID登录逻辑时,已经将邮箱或手机号作为登录信息的一部分。记得在替换代码时,确保正确处理了UID、邮箱和用户名的查找逻辑,以及密码验证和登录状态更新。如有任何问题,欢迎随时提问,祝您修改顺利!