首先使用LDAP身份验证登录表单,然后再次查询用户MySQL

时间:2019-05-16 18:18:16

标签: php html css mysql ldap

我正在为本地应用程序创建一个登录表单,该登录表单将首先针对LDAP服务器(用户名和密码)进行身份验证,然后向本地mySQL DB进行身份验证,以检查用户(提供的用户名)是否已在数据库中注册并有权访问此本地应用)。

我已经弄清楚了LDAP的代码以及用于查询用户是否存在于数据库中的php查询,问题是我没有弄清楚如何正确地在php文件上写入用于管理它们的案例:

  1. 用户通过LDAP并存在于数据库中->将用户发送到应用程序的主站点。
  2. 用户通过LDAP但在数据库中不存在->发送消息,表明用户无权访问应用程序。
  3. 凭据在LDAP端不起作用。

前端HTML网站“ index.html”

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

  <div>
    <label for="username"><b>Username</b></label>
    <input type="text" placeholder="Enter Username" name="username" required>
    <label for="password"><b>Password</b></label>  
    <input type="password" placeholder="Enter Password" name="password" required>
    <button type="submit">Login</button>
  </div>
</form>

php文件用于管理LDAP,然后管理mySQL查询“ query.php”

<?php
$servername = "app.server.com";
$username = "root";
$password = "something";
$dbname = "app_calendar";
$error = false;

// check LDAP for username and pwd provided
$ldap = ldap_connect("ldap.server.com");
if (@$bind = ldap_bind($ldap, "ls\\".$_POST['username'], $_POST['password'])) 
{

  //SQL part to check if user is on app DB
    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_error) 
    {
        die("Connection failed: " . $conn->connect_error);
    } 
    $sql = "SELECT name, mail FROM ms_resources.users WHERE laptop = '".$_POST['username']."' LIMIT 1";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) 
    {
        while($row = $result->fetch_assoc())
        {
            $result2='<div class="alert alert-success alert-dismissible fade in">
            <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a><strong>User logged in!</strong> Welcome '. $row["name"]. '</div>';
            $error = true;
        }
    } 
    else 
    {
        $result2='<div class="alert alert-danger alert-dismissible fade in">
        <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a><strong>Error!</strong> No access granted for user: '.$_POST['username'].'</div>';
    }
    $conn->close();

} 
else 
{

   $result2='<div class="alert alert-danger alert-dismissible fade in">
   <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a><strong>Error! </strong>Invalid credentials!</div>';

}



<div class="container">
        <div>
            <?php echo $result2; ?>    
        </div>
    </div>

</body>

</html>

我将使用最后一部分:

<div class="container">
        <div>
            <?php echo $result2; ?>    
        </div>
    </div>

要发送引导程序错误,但之后又不知道如何重定向到适当的情况,我将不胜感激

0 个答案:

没有答案