几周前,我将一个开源文件管理器集成到我的网站,其中包括一个登录/成员系统。 (文件管理员可以找到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,请查看评论。谢谢!
答案 0 :(得分:0)
使表单元素名称和表单操作与原始登录表单的名称和操作相匹配。