首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >LDAP身份验证失败时无法显示模式弹出窗口

LDAP身份验证失败时无法显示模式弹出窗口
EN

Stack Overflow用户
提问于 2019-05-15 20:52:35
回答 2查看 158关注 0票数 0

我正在通过PHP验证来自LDAP的用户。我已经尝试了一些代码,现在我可以完美地验证用户。但在登录失败的情况下,我希望显示一个带有一些自定义消息的模式弹出窗口。这是我的代码-

代码语言:javascript
复制
<?php


if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // username and password sent from form 

    $username = $_POST['username'];
    //print($username);
    $password = $_POST['password'];
    //print($password);
    // using ldap bind

    $ldaprdn  = 'uid=' .$username. ',ou=People,ou=AP,o=abcd.com'; // ldap rdn or dn
    $ldappass = $password;

    // connect to ldap server
    $ldapconn = ldap_connect("ad.abcd.com") or die("Could not connect to LDAP server.");

    if ($ldapconn) {

        try {
    $ldapbind = @ldap_bind($ldapconn, $ldaprdn, $ldappass);
} catch (Exception $e) {

    //echo "<script type='text/javascript'>$('#myModal').modal('show');</script>";
                //echo "<script type='text/javascript'>$('#myModal').fadeIn('show');</script>";
                echo "<script>
         $(window).load(function(){
             $('#myModal').modal('show');
         });
    </script>";
}
        if ($ldapbind) {

            $filter = '(sAMAccountName='.$username.')';
            $result = ldap_search($ldapconn, $ldaprdn, "(cn=*)") or exit("Unable to search LDAP server");
            $entries = ldap_get_entries($ldapconn, $result); 
            $userDN = $entries[0]["ikealegacyuid"][0];          

            echo ('<p style="color:green;">I have the user DN: '.$userDN.'</p>');
            $url = 'Location: logpage01.html?uid=' .$userDN;
            echo $url;
            header($url);
        } else {
         //echo "<script type='text/javascript'>$('#myModal').modal('show');</script>";
                //echo "<script type='text/javascript'>$('#myModal').fadeIn('show');</script>";
                echo "<script>
         $(window).load(function(){
             $('#myModal').modal('show');
         });
    </script>";
        }

    }

}
?>
<html>

   <head>
      <title>Login Page</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
      <style type = "text/css">
         body {
            font-family:Arial, Helvetica, sans-serif;
            font-size:14px;
         }
         label {
            font-weight:bold;
            width:100px;
            font-size:14px;
         }
         .box {
            border:#666666 solid 1px;
         }
      </style>

   </head>

   <body bgcolor = "#FFFFFF">

      <div align = "center">
         <div style = "width:300px; border: solid 1px #333333; " align = "left">
            <div style = "background-color:#333333; color:#FFFFFF; padding:3px;"><b>Login</b></div>

            <div style = "margin:30px">

               <form action = "" method = "post">
                  <label>UserName  :</label><input type = "text" name = "username" class = "box"/><br /><br />
                  <label>Password  :</label><input type = "password" name = "password" class = "box" /><br/><br />
                  <input type = "submit" value = " Submit "/><br />
               </form>



            </div>

         </div>

      </div>
      <div class="container">

  <!-- Modal -->
  <div class="modal fade" id="myModal" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <!-- <button type="button" class="close" data-dismiss="modal">&times;</button> -->
          <h4 class="modal-title">System Message : Failure</h4>
        </div>
        <div class="modal-body">
          <p>Sorry !! Something went wrong. Please contact your administrator.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal" onclick="window.location.href = 'logpage01.html';">Close</button>
        </div>
      </div>

    </div>
  </div>

</div>

   </body>
</html>

我尝试了这里找到的许多解决方案。但都不管用。我需要一些帮助。

更新:也检查了页面源代码。看起来还不错。如果没有,请让我知道问题所在。

我也试着在页面加载时调用modal。它工作得很完美。

代码语言:javascript
复制
<script type="text/javascript">
    $(window).on('load',function(){
        $('#myModal').modal('show');
    });
</script>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-16 03:25:14

仅仅回显脚本在这里是行不通的,在加载加载jQuery的html之前,您的浏览器最多只能运行一个引用$的脚本,所以即使它运行您的脚本,它也会抛出Uncaught ReferenceError: $ is not defined

相反,您可以使用一个标志来告诉浏览器是否显示模式。例如,您可以在else (和catch)语句中设置一个变量:

代码语言:javascript
复制
if ($ldapbind) { /*...*/ }
else {
  $access_denied=1;
}

并将其插入到html中,以便浏览器知道它必须在access_denied===1时加载模式,为此,您还需要添加仅在该条件下加载模式的脚本:

代码语言:javascript
复制
<div id="myModal" access_denied="<?php print $access_denied ?>" > ... </div>
<script> 
  $('#myModal[access_denied=1]').modal('show');
</script>

在另一个使用ajax请求的上下文中,您可能只需回显一些json或直接输出模态html。

票数 0
EN

Stack Overflow用户

发布于 2019-05-15 21:00:17

如果我没看错的话,你缺少popper.js,这在引导中是必需的。请检查此链接https://getbootstrap.com/docs/4.3/getting-started/introduction/,您将获得一个您可以使用的popper的在线cdn。或者简单地复制我的代码片段。还请注意,您在版本3中使用的是bootstrap。我强烈建议您使用V4。

在php中,当你想要显示模式时,你只需要回显下面的内容。

代码语言:javascript
复制
echo "<script>
             $('#myModal').modal('show');
       </script>";

代码语言:javascript
复制
   $('#myModal').modal('show');
代码语言:javascript
复制
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>

<div class="modal fade" id="myModal" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <!-- <button type="button" class="close" data-dismiss="modal">&times;</button> -->
          <h4 class="modal-title">System Message : Failure</h4>
        </div>
        <div class="modal-body">
          <p>Sorry !! Something went wrong. Please contact your administrator.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal" onclick="window.location.href = 'logpage01.html';">Close</button>
        </div>
      </div>

    </div>
  </div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56149845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档