<?php
include("./includes/common.php");

if(!$conf['userlogin']){
    @header('Content-Type: text/html; charset=UTF-8');
	exit("<script language='javascript'>alert('未开启登录');window.location.href='./';</script>");
}
if($islogin2==1){
	@header('Content-Type: text/html; charset=UTF-8');
	exit("<script language='javascript'>alert('您已登录！');window.location.href='./';</script>");
}
if(isset($_POST['act']) && $_POST['act']=='register'){
    @header('Content-Type: application/json; charset=UTF-8');
    $username = trim(isset($_POST['username'])?daddslashes($_POST['username']):'');
    $password = isset($_POST['password'])?$_POST['password']:'';
    $repassword = isset($_POST['repassword'])?$_POST['repassword']:'';
    $email = trim(isset($_POST['email'])?daddslashes($_POST['email']):'');
    if(empty($username) || empty($password) || empty($email)){
        exit('{"code":-1,"msg":"用户名、密码和邮箱不能为空"}');
    }
    if(!preg_match('/^[a-zA-Z0-9_]{3,20}$/', $username)){
        exit('{"code":-1,"msg":"用户名需为3-20位字母、数字或下划线"}');
    }
    if(strlen($password) < 6 || strlen($password) > 32){
        exit('{"code":-1,"msg":"密码长度需为6-32位"}');
    }
    if($password !== $repassword){
        exit('{"code":-1,"msg":"两次输入的密码不一致"}');
    }
    if(!preg_match('/^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$/', $email)){
        exit('{"code":-1,"msg":"邮箱格式不正确"}');
    }
    $exists=$DB->find('user','uid',['type'=>'local','username'=>$username], null, '1');
    if($exists){
        exit('{"code":-1,"msg":"用户名已被注册"}');
    }
    $exists2=$DB->find('user','uid',['openid'=>$username,'type'=>'local'], null, '1');
    if($exists2){
        exit('{"code":-1,"msg":"用户名已被注册"}');
    }
    $existmail=$DB->find('user','uid',['email'=>$email], null, '1');
    if($existmail){
        exit('{"code":-1,"msg":"该邮箱已被注册"}');
    }
    $hash = password_hash($password, PASSWORD_DEFAULT);
    $result=$DB->insert('user', [
        'username' => $username,
        'email' => $email,
        'password' => $hash,
        'type' => 'local',
        'openid' => $username,
        'nickname' => $username,
        'faceimg' => '',
        'enable' => 1,
        'regip' => $clientip,
        'loginip' => $clientip,
        'addtime' => 'NOW()',
        'lasttime' => 'NOW()',
    ]);
    if(!$result){
        exit('{"code":-1,"msg":"注册失败，请稍后重试"}');
    }
    $uid = $DB->lastInsertId();
    if(isset($_SESSION['fileids']) && count($_SESSION['fileids'])>0){
        $ids = array_reverse($_SESSION['fileids']);
        if(count($ids) > 60){
            $ids = array_splice($ids, 0, 60);
        }
        $ids = implode(',',$ids);
        $DB->exec("UPDATE pre_file SET uid='{$uid}' WHERE id IN ({$ids}) AND uid=0");
    }
    if($conf['mail_open'] && $conf['mail_smtp'] && $conf['mail_user'] && $conf['mail_pass']){
        try{
            $Mailer = new \lib\Mailer($conf['mail_smtp'], $conf['mail_port'], $conf['mail_user'], $conf['mail_pass'], $conf['mail_ssl'], $conf['mail_from'], $conf['mail_name']);
            $title = $conf['title'].' - 注册成功通知';
            $content = '<div style="font-family:Arial,Microsoft YaHei;font-size:14px;line-height:1.8;color:#333;">'.
                '<h3 style="color:#23b7e5;">恭喜您，注册成功！</h3>'.
                '<p>尊敬的 <b>'.htmlspecialchars($username).'</b>，您好：</p>'.
                '<p>您已成功注册 <b>'.htmlspecialchars($conf['title']).'</b> 账号，以下是您的注册信息：</p>'.
                '<table style="border-collapse:collapse;margin:10px 0;">'.
                '<tr><td style="padding:6px 12px;border:1px solid #ddd;background:#f5f5f5;">用户名</td><td style="padding:6px 12px;border:1px solid #ddd;">'.htmlspecialchars($username).'</td></tr>'.
                '<tr><td style="padding:6px 12px;border:1px solid #ddd;background:#f5f5f5;">邮箱</td><td style="padding:6px 12px;border:1px solid #ddd;">'.htmlspecialchars($email).'</td></tr>'.
                '<tr><td style="padding:6px 12px;border:1px solid #ddd;background:#f5f5f5;">注册时间</td><td style="padding:6px 12px;border:1px solid #ddd;">'.date('Y-m-d H:i:s').'</td></tr>'.
                '</table>'.
                '<p>请妥善保管您的账号信息，祝您使用愉快！</p>'.
                '<p style="color:#999;font-size:12px;">此邮件由系统自动发送，请勿直接回复。</p>'.
                '</div>';
            $Mailer->send($email, $title, $content);
        }catch(Exception $e){}
    }
    $session=md5('local'.$username.$password_hash);
    $expiretime=time()+2592000;
    $token=authcode("{$uid}\t{$session}\t{$expiretime}", 'ENCODE', SYS_KEY);
    setcookie("user_token", $token, time() + 2592000, '/');
    exit('{"code":0,"msg":"注册成功，已自动登录"}');
}

$title = '用户注册 - ' . $conf['title'];
$authTitle = '用户注册';
$authSub   = '创建一个账号，开始使用';
$authIcon  = 'fa-user-plus';
include SYSTEM_ROOT.'auth_header.php';
?>
            <form id="registerform" onsubmit="return registerSubmit();">
                <div class="auth-field">
                    <i class="fa fa-user"></i>
                    <input type="text" name="username" id="username" placeholder="用户名（3-20位字母、数字或下划线）" required="">
                </div>
                <div class="auth-field">
                    <i class="fa fa-envelope"></i>
                    <input type="email" name="email" id="email" placeholder="邮箱地址（用于接收通知）" required="">
                </div>
                <div class="auth-field">
                    <i class="fa fa-lock"></i>
                    <input type="password" name="password" id="password" placeholder="密码（6-32位）" required="">
                </div>
                <div class="auth-field">
                    <i class="fa fa-lock"></i>
                    <input type="password" name="repassword" id="repassword" placeholder="确认密码" required="">
                </div>
                <button type="submit" class="auth-btn"><i class="fa fa-user-plus"></i> 注册</button>
            </form>
            <div class="auth-links">已有账号？<a href="./login.php">立即登录</a></p>
<?php include SYSTEM_ROOT.'auth_footer.php';?>
<script src="https://s4.zstatic.net/ajax/libs/layer/2.3/layer.js"></script>
<script>
function registerSubmit(){
    var username = document.getElementById('username').value.trim();
    var email = document.getElementById('email').value.trim();
    var password = document.getElementById('password').value;
    var repassword = document.getElementById('repassword').value;
    if(!username || !password || !email){
        layer.alert('用户名、密码和邮箱不能为空', {icon: 7});
        return false;
    }
    var ii = layer.load(2, {shade:[0.1,'#fff']});
	$.ajax({
		type : "POST",
		url : "register.php",
		data : {act:'register', username:username, email:email, password:password, repassword:repassword},
		dataType : 'json',
		success : function(data) {
			layer.close(ii);
			if(data.code == 0){
				layer.alert(data.msg, {icon: 1});
				window.location.href = './';
			}else{
				layer.alert(data.msg, {icon: 7});
			}
		},
		error : function() {
			layer.close(ii);
			layer.alert('网络错误，请稍后重试', {icon: 7});
		}
	});
	return false;
}
</script>
</body>
</html>
