예제 #1
0
/**
 * Authentifie le numéro de troll et un mot de pas hashé contre la base de donnée, et positionne les variables de
 * session en conséquence.
 * @return true si l'authentification a réussie
 * @return false si elle a échouée (mot de passe incorrecte ou troll inexistant)
 */
function userLogin($numTroll, $md5pass)
{
    global $db_vue_rm;
    // On regarde si le troll existe dans la base de données
    $sql = "SELECT pass_outils_troll, guilde_troll, nom_troll";
    $sql .= " FROM trolls WHERE id_troll={$numTroll}";
    $result = mysql_query($sql, $db_vue_rm);
    if ($result == false) {
        return false;
    }
    list($DBmd5pass, $DBAuthGuilde, $DBNomTroll) = mysql_fetch_array($result);
    if (mysql_affected_rows() > 0 && $DBmd5pass != "" && $DBmd5pass == $md5pass) {
        $_SESSION['AuthTroll'] = $numTroll;
        $_SESSION['Auth'] = $md5pass;
        $_SESSION['AuthGuilde'] = $DBAuthGuilde;
        $_SESSION['AuthNomTroll'] = $DBNomTroll;
        if (userIsGuilde() || userIsGroupSpec()) {
            // Controle de l'administrateur
            // Remplis la variable de session
            if (isDbAdministration()) {
                $_SESSION['admin'] = "authenticated";
            } else {
                $_SESSION['admin'] = "notauthorized";
            }
            $_SESSION['Status'] = "authentified";
            setcookie("cookie_id_troll", $_SESSION['AuthTroll'], time() + 31536000);
            // on garde le cookie 1 an
            enregistre_connection($_SESSION['AuthTroll']);
            return true;
        }
    }
    return false;
}
예제 #2
0
function initAuth()
{
    global $db_vue_rm;
    if (isset($_SERVER['REQUEST_URI'])) {
        $REQUEST_URI = $_SERVER['REQUEST_URI'];
    } else {
        $REQUEST_URI = "";
    }
    if (isset($_SERVER['HTTP_REFERER'])) {
        $HTTP_REFERER = $_SERVER['HTTP_REFERER'];
    } else {
        $HTTP_REFERER = "";
    }
    if (isset($_REQUEST['CHTROLL'])) {
        $CHTROLL = $_REQUEST['CHTROLL'];
    } else {
        $CHTROLL = "";
    }
    if (isset($_REQUEST['CHPASS'])) {
        $CHPASS = $_REQUEST['CHPASS'];
    } else {
        $CHPASS = "";
    }
    if (isset($_REQUEST['logout'])) {
        $logout = $_REQUEST['logout'];
    } else {
        $logout = "";
    }
    if (isset($_REQUEST['CHTROLL']) && isset($_REQUEST['CHPASS'])) {
        setcookie('autologin', $_REQUEST['autologin'], time() + 365 * 24 * 3600);
        if ($_REQUEST['autologin']) {
            setcookie('num_troll', $_REQUEST['CHTROLL'], time() + 365 * 24 * 3600);
            setcookie('hash_pass_troll', md5($_REQUEST['CHPASS']), time() + 365 * 24 * 3600);
        }
    }
    if (isset($_COOKIE['autologin'])) {
        $autologin = $_COOKIE['autologin'];
    } else {
        $autologin = false;
    }
    if ($autologin) {
        $CHTROLL = $_COOKIE['num_troll'];
        $CHPASS = $_COOKIE['hash_pass_troll'];
    }
    if ($HTTP_REFERER == "" || preg_match("/inc_authent/", $HTTP_REFERER)) {
        $GOTO = $REQUEST_URI;
    } else {
        $GOTO = $HTTP_REFERER;
    }
    if (!preg_match("/inc_authent/", $GOTO) && !preg_match("/index/", $GOTO)) {
        $_SESSION['uri'] = $GOTO;
    } else {
        $_SESSION['uri'] = "/cockpit.php";
    }
    # submit tout frais ?
    if ($CHTROLL > 0 || $CHPASS != "") {
        // Si le mot de passe n'est pas le mot de passe md5
        if (strlen($CHPASS) != 32) {
            // On se débarasse du pass en clair
            $CHPASS = md5($CHPASS);
        }
        $_SESSION['AuthTroll'] = $CHTROLL;
        $_SESSION['Auth'] = $CHPASS;
    }
    # demande de logout ?
    if ($logout) {
        $_SESSION['Status'] = "";
        $_SESSION['AuthTroll'] = "";
        $_SESSION['AuthNomTroll'] = "";
        $_SESSION['AuthGuilde'] = "";
        $_SESSION['Auth'] = "";
        $_SESSION['AuthGroupSpec'] = "";
        session_unset();
        session_destroy();
        setcookie('autologin', false);
        echo "<script language='JavaScript'>";
        echo "document.location.href='/index.php'";
        echo "</script>";
    }
    # Si la personne est déjà authentifiée
    if (isset($_SESSION['Status']) && $_SESSION['Status'] == "authentified") {
        return;
    }
    # Vérification normale
    if (is_numeric($CHTROLL) && $_SESSION['Status'] != "authentified") {
        $md5pass = "******";
        // Initialisation, mais çà sert pas à grand chose ici
        // On regarde si le troll existe dans la base de données
        $sql = "SELECT pass_outils_troll, guilde_troll, nom_troll, nom_rang_troll, groupe_spec_troll";
        $sql .= " FROM trolls WHERE id_troll={$CHTROLL}";
        $result = mysql_query($sql, $db_vue_rm);
        echo mysql_error();
        list($md5pass, $AuthGuilde, $AuthNomTroll, $nom_rang_troll, $groupe_spec_troll) = mysql_fetch_array($result);
        // S'il existe
        if (preg_match("/essai/", $nom_rang_troll)) {
            die("<h2>Vous êtes un troll à l'essai, vous n'avez pas accès aux outils pendant cette période<h2>");
        }
        if (mysql_affected_rows() > 0 && $md5pass != "") {
            // et que le mot de passe est correct
            if ($md5pass == $_SESSION['Auth']) {
                //$_SESSION[AuthTroll]=$_SESSION[AuthTroll]; // pour indiquer ici toutes les valeurs possibles de session
                $_SESSION['AuthGuilde'] = $AuthGuilde;
                $_SESSION['AuthNomTroll'] = $AuthNomTroll;
                $_SESSION['AuthGroupSpec'] = $groupe_spec_troll;
                //$_SESSION[Auth]=$_SESSION[Auth];
            } else {
                setcookie('autologin', false);
                die("<h2><font color='red'>Mot de passe incorrect</font></h2>");
            }
            // S'il n'existe pas dans la base de données
        } else {
            /* Premier connection du troll sur les outils */
            setcookie('autologin', false);
            echo "<script language='JavaScript'>";
            echo "document.location.href='/change_password.php'";
            echo "</script>";
            echo "2 - Si vous n'etes pas redirigé automatiquement, cliquez ici : ";
            echo "<a href='/change_password.php?act=premiere'> Là j'tai dis !! </a>";
        }
        if (userIsGuilde() || userIsGroupSpec()) {
            // Controle de l'administrateur
            // Remplis la variable de session
            if (isDbAdministration()) {
                $_SESSION['admin'] = "authenticated";
            } else {
                $_SESSION['admin'] = "notauthorized";
            }
            $_SESSION['Status'] = "authentified";
            setcookie("cookie_id_troll", $_SESSION['AuthTroll'], time() + 31536000);
            // on garde le cookie 1 an
            enregistre_connection($_SESSION['AuthTroll']);
            redirectAuth();
        } else {
            setcookie('autologin', false);
            session_unset();
            session_destroy();
            die("<h2>Soit vous n'êtes pas un Relais&Mago\n\t\t\t<br> soit le mot de passe est incorrect\n\t\t\t<br> soit c'est votre première connexion (réessayez)<br>\n\t\t\t<br><br>Conclusion : \n\t\t\t<br>Vous n'avez pas accès à ces pages<br>\n\t\t\tContactez glupglup (51166) pour résoudre le problème.<br><br>\n\t\t\t");
        }
    }
}