<?php
    
function randomstr($l) {
        
$characters '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

        
$s '';
        for(
$i 0$i $l$i++)
            
$s .= $characters[rand(0strlen($characters) - 1)];

        return 
$s;
    }

    
// wartosc ujemna = id bledu, wartosc dodatnia = id dodanego usera
    
function register($db$nick$pass$mail){
        
$query 'SELECT `id` FROM `users` WHERE `nick` = "'.$nick.'" OR `mail` = "'.$mail.'"';
        
$result $db->query($query);
        if(
$db->errno){
            return -
1// 'Wystąpił problem z bazą danych.'
        
}
        if(
$result->num_rows 0){
            return -
2// 'Użytkownik o podanym nicku już istnieje!'
        
}

        
$salt randomstr(16);
        
$query 'INSERT INTO `users` (`nick`, `password`, `salt`, `mail`) VALUES ("'.$nick.'", "'.md5($pass.$salt).'", "'.$salt.'", "'.$mail.'")';
        
$result $db->query($query);
        if(
$db->errno){
            return -
1// 'Wystąpił problem z bazą danych.'
        
}
        return 
$db->insert_id;
    }
    
    if(isset(
$_POST['login']) && isset($_POST['pass'])){
        
$login trim($_POST['login']);
        
$pass trim($_POST['pass']);
        
$pass_repeat trim($_POST['pass_repeat']);
        
$mail trim($_POST['mail']);
        if(
$login == '' || $pass == '' || $pass_repeat == '' || $mail == ''){
            
$info 'Dane nie mogą być puste';
        }else{
            if(
$pass != $pass_repeat){
                
$info 'Niezgodne hasła';
            }else{
                
$id register($db$login$pass$mail);
                if(
$id >= 1){
                    
$_SESSION['uid'] = $id;
                    
header('Location: index.php?action=logged');
                }

                
$errors = array(
                    -
=> 'Wystąpił problem z bazą danych.',
                    -
=> 'Użytkownik o podanym nicku już istnieje!'
                
);
                
$info $errors[$id];
            }
        }
    }

    
$content getView('register', array('info' => $info));
?>