如何使用HTTP基本身份验证,让用户以HTML格式提交用户名和密码,并使用HTTP基本身份验证进行身份验证。
我听说Internet Explorer不再支持http://user:password@website.com的使用,所以我不知道解决此问题的最佳方法。
使用PHP和javascript和HTML就行了。我不想使用PERL而且我不会使用大的javascript库。
如果您不认为HTTP Basic Auth。是最好的方法,请推荐一些简单易行的方法。它只是5-6人的登录网站。无需复杂化。
答案 0 :(得分:3)
jQuery库具有ajax函数,其具有用于Authentication的“password”和“user”参数。当用户单击登录时,您可以获得登录名和密码的值,并传递给$ .ajax函数。
$('#submit').click(function() { $.ajax({ url: 'authenticated.php', username: $('#login').val(), password: $('#passwd').val(), success: function(data) { //do something with data from the server } }); return false; });
答案 1 :(得分:2)
恕我直言,使用HTTP身份验证的重点是能够委派身份验证任务:
因此,您可以轻松地使用工作系统。
现在,如果您使用HTML表单来请求凭据,服务器将知道您是谁,但浏览器不会:它会在找到WWW-Authenticate
响应标头后立即询问凭据。 401
状态代码。为此,浏览器必须在每个 HTTP请求上发送Authorization
请求标头;但是,您的表单无法指示浏览器发送相应的HTTP标头。
当然,您可以在PHP中编写自己的服务器端身份验证代码,将服务器配置为通过它解析静态文件,并在获得有效凭据后立即省略401
和WWW-Authenticate
然后需要存储在其他地方,例如,PHP会话)。但是,您已经失去了HTTP身份验证的所有优势:此时,使用PHP会话的自定义登录处理程序将是一个更容易的解决方案。
总结一下:
答案 2 :(得分:0)
如果我理解正确,你需要使用带有.htaccess的.htpasswd:http://tools.dynamicdrive.com/password/
答案 3 :(得分:-1)
如何使用HTTP基本身份验证并让用户以HTML格式提交用户名和密码
没办法。
会议,饼干。请推荐一些简单易行的方法。
哦,其中一个
<?
if (isset($_POST['auth_name'])) {
$name=mysql_real_escape_string($_POST['auth_name']);
$pass=mysql_real_escape_string($_POST['auth_pass']);
$query = "SELECT * FROM users WHERE name='$name' AND pass='$pass'";
$res = mysql_query($query) or trigger_error(mysql_error().$query);
if ($row = mysql_fetch_assoc($res)) {
session_start();
$_SESSION['user_id'] = $row['id'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
}
header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit;
}
if (isset($_GET['action']) AND $_GET['action']=="logout") {
session_start();
session_destroy();
header("Location: http://".$_SERVER['HTTP_HOST']."/");
exit;
}
if (isset($_REQUEST[session_name()])) session_start();
if (isset($_SESSION['user_id']) AND $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) return;
else {
include 'your design here.php';
?>
<form method="POST">
<input type="text" name="auth_name"><br>
<input type="password" name="auth_pass"><br>
<input type="submit"><br>
</form>
<?
}
exit;
?>
打算放入文件并在脚本顶部调用require '/path/auth.php';