【问题标题】:Htaccess authenticationHtaccess 身份验证
【发布时间】:2015-10-08 18:23:01
【问题描述】:

我有一个主机,在那里我得到了指定的管理面板。在这个面板上,我可以设置密码和用户名,并且密码会被加密。所以我的问题是: 有什么办法可以设计认证吗?

我的意思是,当它需要登录名和密码时,它会在浏览器中弹出,我想在网站上实现这一点,我可以用 CSS 来设计它,而不是在浏览器中。有什么想法吗?

在此先感谢,任何有用的答案都会让我更接近。

【问题讨论】:

  • 请更具体。什么托管?什么管理面板?当您提到“在浏览器中”发生的事情时,您的确切含义是什么?屏幕截图可能会有所帮助。
  • 感谢您的帮助,同时我已经解决了这个问题! :) 顺便说一句,我的意思是它“发生”在浏览器中,它不在网页上,是浏览器通过弹出窗口请求身份验证。

标签: .htaccess .htpasswd


【解决方案1】:

首先,如果您使用“基本身份验证”且未使用 ssl 模块包装,请注意用户名和密码以明文(base64 编码)文本发送。

要实现你想要做的事情,你必须使用“表单身份验证”:

<form method="post" action="validate_credentials.php" >
  <table border="1" >
     <tr>
        <td><label for="user">Username</label></td>
        <td><input type="text" name="user" id='user'></td>
     </tr>
     <tr>
        <td><label for="pass" >Password</label></td>
        <td><input name="pass" id='pass' type="password" ></input></td>
      </tr>
      <tr>
         <td><input type="submit" value="Submit"/></td>
      </tr>
  </table>
</form>

validate_credentials.php 文件如下所示:

<?php

// Grab User submitted information
$username = $_POST["user"];
$password = $_POST["pass"];

// Stored user name and password
$db_user = "secret_username";
$db_pass = "secret_password";

// Authentication mechanism

if ($username != $db_user and $password != $db_pass) {
     echo"Invalid Credentials, Please try again.";
     exit();
}

if ($username == $db_user and $password == $db_pass) {
    echo"Valid Credentials, You are authenticated.";
    // You can now serve the document that was requested.
}

我只是尽量保持简单,以便您理解。为了安全起见,请验证用户输入,并且不要在 validate_credentials.php 文件中使用明文密码,您可以通过 Google 搜索如何做到这一点。

【讨论】:

  • 谢谢,这种方式现在容易多了!现在我可以继续前进了! :)
  • 很高兴能帮上忙 :)
猜你喜欢
  • 1970-01-01
  • 2015-08-18
  • 2012-08-25
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多