如何将现有的登录脚本集成到每个页面上的新登录表单中?

时间:2015-10-14 15:33:56

标签: php forms session login

几周前,我将一个开源文件管理器集成到我的网站,其中包括一个登录/成员系统。 (文件管理员可以找到here)。

由于我正在学习网络开发,我认为将这个登录系统集成到我的整个网站是一个好主意。 所以我添加了必要的PHP代码以保持连接在我的标题中(包括在每个页面上),并且注销脚本也不是问题。

但我的问题在于登录表单。这是我制作的那个(它在我的header.php文件中):

<form method="post" action="">

        <div id="username">
            <input type="text" name="txt_username" id="txt_username" placeholder="username" required="" value="" />
        <span class="username_icon"><i class="fa fa-user"></i></span>
        </div>
        <div id="password">
        <input type="password" name="txt_password" id="txt_password" placeholder="password" required="" />
        <span class="password_icon"><i class="fa fa-lock"></i></span>
        </div>
        <div id="stay_connected">
        <input type="checkbox" name="chk_connected" id="chk_connected"> 
        <label for="chk_connected"><span>Stay Connected</span></label>
        </div>
        <div id="submit_button">
        <button type="submit" name="sub_login" id="sub_login"><i id="submit"class="fa fa-long-arrow-right"></i></button>
        </div>
        <div class="feedback">login successful <br />redirecting...</div>

        </form>

以下是文件admnistrator用于登录其用户的原始完整login.php(我打算在我的用户准备好后将其踢出):

<?php 

require_once('config/config.inc.php');
require_once('config/settings.inc.php');
require_once('classes/User.php');
require_once('lib/functions.php');

session_start();

/***********************************************************************************************************/
/********************************* INITIALISATION OF VARIABLES ********************************************/
/***********************************************************************************************************/
$error = "";

/***********************************************************************************************************/
/********************************* DATA TREATMENT **************************************************/
/***********************************************************************************************************/
if(isset($_COOKIE['identifiant']) && !empty($_COOKIE['identifiant']) && isset($_COOKIE['mdp']) && !empty($_COOKIE['mdp'])) {


    $monUtilisateur = User::check($_COOKIE['identifiant'], $_COOKIE['mdp']);

    if($monUtilisateur !== false) {
        $_SESSION['auth'] = $monUtilisateur;
        redirect('index.php');
    }
    else {
        // on supprime les cookies
        setcookie('identifiant');
        setcookie('mdp');

        $error = "The username or password is incorrect.";  
    }

}
else {

    if( isset($_POST['txt_identifiant']) || isset($_POST['txt_mdp']) ) {

        /////////// PRELIMINARY CONTROLS ////////////////////////////////////////////////////////////////////////
        $nbErreurs = isset($GLOBALS['login_nbErreurs']) ? (int)$GLOBALS['login_nbErreurs'] : 0;
        $nbChampsrestantsaremplir = isset($GLOBALS['login_nbChampsrestantsaremplir']) ? (int)$GLOBALS['login_nbChampsrestantsaremplir'] : 0;
        $t_erreurs = array();

        /***********************************************************************************************************/
        /********** USERNAME ************************************************************************************/
        /***********************************************************************************************************/
        if (isset($_POST['txt_identifiant'])) {
            $_POST['txt_identifiant'] = trim($_POST['txt_identifiant']);
            if ($_POST['txt_identifiant'] == '') {
                $nbChampsrestantsaremplir++;
                $t_erreurs['txt_identifiant'] = 'Veuillez saisir votre identifiant';
            }
        }

        /***********************************************************************************************************/
        /*********** PASSWORD *******************************************************************************************/
        /***********************************************************************************************************/
        if (isset($_POST['txt_mdp'])) {
            $_POST['txt_mdp'] = trim($_POST['txt_mdp']);
            if ($_POST['txt_mdp'] == '') {
                $nbChampsrestantsaremplir++;
                $t_erreurs['txt_mdp'] = 'Please enter your password';
            }
        }

        ////////// END OF PRELIMINARY CONTROLS //////////////////////////////////////////////////////////////////////
        $GLOBALS['login_nbErreurs'] = $nbErreurs;
        $GLOBALS['login_nbChampsrestantsaremplir'] = $nbChampsrestantsaremplir ;


        if ($nbErreurs == 0 && $nbChampsrestantsaremplir == 0) {

            $monUtilisateur = User::check($_POST['txt_identifiant'], $_POST['txt_mdp']);

            if($monUtilisateur !== false) {
                // si l'authentification est bonne et que la case est cochee, on cree le cookie
                if (isset($_POST['chk_cookie']) && $_POST['chk_cookie']=="oui") {           
                    // on cree les cookies valide 1 JOUR            
                    setcookie('identifiant', $_POST['txt_identifiant'], time() + 1*24*3600, null, null, false, true);
                    setcookie('mdp', $_POST['txt_mdp'], time() + 1*24*3600, null, null, false, true);
                }
                // sinon on supprime
                else {
                    // on supprime les cookies  
                    setcookie('identifiant');
                    setcookie('mdp');
                }
                //je cree une session
                $_SESSION['auth'] = $monUtilisateur;

                //je redirige
                redirect('index.php');
            }
            else 
                $error = "The username or password is incorrect.";

        }

    }

}
?>
<!doctype html>
<html lang="fr">
<head>
    <meta charset="utf-8">
    <title>Authentification</title>
    <meta name="robots" content="noindex,nofollow" />

    <!-- CSS -->
    <link rel="stylesheet" href="themes/original/css/login.css" />

    <!-- JQUERY -->
    <script src="js/jquery-1.11.0.min.js"></script>

    <!-- SCRIPTS DIVERS -->
    <script src="js/jquery.placeholder.min.js"></script>
    <script>
    $(document).ready(function(){
        $('input[placeholder]').placeholder();
    });
    </script>

    <script>
    $(document).ready(function(){   
        $('#txt_identifiant').focus();                                  
    }); 
    </script>
</head>

<body>

    <div id="content">

        <div id="logo">
            <img alt="logo" src="themes/original/images/logo.png" />
        </div>

        <? if(isset($error)) { ?><p class="error"><?php echo $error ?></p><? } ?>

        <form method="post" action="login.php">

            <div id="identifiant">
                <input type="text" name="txt_identifiant" id="txt_identifiant" placeholder="Identifiant" required="" value="" />
            </div>
            <div id="mdp">
                <input type="password" name="txt_mdp" id="txt_mdp" placeholder="Mot de passe" required="" />
            </div>
            <div id="maintenir">
                <input type="checkbox" name="chk_maintenir" id="chk_maintenir"> 
                <label for="chk_maintenir"><span>Stay connected</span></label>
            </div>
            <div id="soumettre">
                <input type="submit" name="sub_login" id="sub_login" value="Connexion" style="width:100px;" />
            </div>

        </form>

</div><!-- fin de content -->

</body>
</html>

我天真地尝试实现原始login.php上的php代码(在更改路径时),但当然它没有做到这一点。即使它确实如此,我也不确定这实际上是最好的主意。 我觉得我的标题中的所有登录php代码都是&#34; heavy&#34;或者结构很差。

例如,注销系统非常简单,一个重定向的按钮会导致logout.php页面然后立即销毁会话并将用户重定向到我想要的位置。 这或多或少是我尝试使用登录系统做的:提交表单 - &gt;简要地调用一个login.php文件来检查一切是否正常并开始会话 - &gt;立即重定向到页面。

但到目前为止,使用文件管理员登录页面的原始代码和我的知识不足,我无法做到这一点。

希望我足够清楚,我对这一切都很陌生,但我愿意遵循所有指示并尽我所能地尝试你的建议!

非常感谢你的帮助,

-Apatik

  
    
      

感谢Julios,请查看评论。谢谢!

    
  

1 个答案:

答案 0 :(得分:0)

使表单元素名称和表单操作与原始登录表单的名称和操作相匹配。