login и более безопасный контроль в сеансах

Я работаю в login, чтобы приватизировать немного Веб приложение, которое я делаю. Моими знаниями дело не в том, что они были основными, но также лучшие, и я нуждаюсь в помощи.

Нет метода реестра. Реестр сделаю я лично с базы данных. То, в чем я нуждаюсь, так это советы или способами делать этот login и позже, контроль сеанса, больше страховок, надежнее, лучшую структуру документов .php в корневом каталоге...

На данный момент, единственным, что я применяю, является PDO и изрекает их prepare чтобы предотвращать вставки SQL.

Структура документов они:

  • login.php (Здесь - формуляр, и где работают функции). Это код PHP, который есть перед заголовком, чтобы управлять о login:

    if (isset($_POST['entrar'])) {
        require "functions.php";
        $error = [];
        $user = ValidUser($error);
        if(empty($error)){
            logearUsuario($user);
            header("Location: application.php");
        }
    }
    

    Имена переменных, которые нужно подбирать из-за form: user (пользователь), pass (password) и входить (submit)

  • conn.php (В этом документе находится необходимое для связи в базу данных, в está случай MySQL, но в будущем он изменится PostgreSQL. Говорится о функции, которую он включает во все необходимое, чтобы присоединяться)

    function connection(){
    
        try{
    
            $dsn = 'mysql:host=localhost; dbname=controlusuarios';
            $userBBDD = 'root';
            $passBBDD = '';
            $conn  = new PDO($dsn, $userBBDD, $passBBDD);
            return $conn;
    
        }catch(Exception $e){
    
            die('Error: ' . $e->GetMessage());
    
        }
    }
    
  • functions.php (Он содержит несколько функций. Одна, чтобы санкционировать пользователя, и другая для logearlo. Условие logeo случается в документе login.php)

    function validUser(&$error){
    
        if((!isset($_POST['user'])) || (!isset($_POST['pass']))){
            $error[0] = "Usuario y/o contraseña incorrectos.";
            return null;
        }
        $user = $_POST['user'];
        $pass = $_POST['pass'];
        if(($user == '') || ($pass == '')){
            $error[0] = "Usuario y/o contraseña incorrectos.";
            return null;
        }else{
    
            $con = connection();
            $sql = "SELECT name FROM usuarios WHERE name = :user AND password = :pass";
            $query = $con->prepare($sql);
            $query-> bindParam(':user', $user);
            $query-> bindParam(':pass', $pass);
            $query-> execute();
            $contador = $query -> rowCount();
            if($contador != 1){
                $error[0] = "Usuario y/o contraseña incorrectos.";
                return null;
            }
            $con = null;
            return $user;
        }
    
     }
    
     function logearUsuario($user){
    
        session_start();
        $_SESSION['name'] = $user;
    
     }
    
6
задан 02.02.2018, 16:20
0 ответов