使用表单的PHP HTTP基本身份验证
如何使用HTTP基本身份验证,让用户以HTML格式提交用户名和密码,并使用HTTP基本身份验证进行身份验证 我听说Internet Explorer不再支持使用NoMore,所以我不知道最好的方法 可以使用PHP、javascript和HTML。我不想使用PERL,也不喜欢使用大型javascript库使用表单的PHP HTTP基本身份验证,php,http,authentication,Php,Http,Authentication,如何使用HTTP基本身份验证,让用户以HTML格式提交用户名和密码,并使用HTTP基本身份验证进行身份验证 我听说Internet Explorer不再支持使用NoMore,所以我不知道最好的方法 可以使用PHP、javascript和HTML。我不想使用PERL,也不喜欢使用大型javascript库 如果您不认为HTTP基本身份验证。是最好的方法,请推荐一些简单易行的方法。它将只是一个5-6人的登录站点。无需使其复杂化。如果我理解正确,您需要将.htpasswd与.htaccess一起使用:
如果您不认为HTTP基本身份验证。是最好的方法,请推荐一些简单易行的方法。它将只是一个5-6人的登录站点。无需使其复杂化。如果我理解正确,您需要将.htpasswd与.htaccess一起使用:IMHO,使用HTTP身份验证的全部意义在于能够委派身份验证任务:
WWW-Authenticate
响应头和401
状态代码后立即请求凭据。要使其工作,浏览器必须在每个HTTP请求上发送授权
请求头;但是,表单无法指示浏览器发送适当的HTTP标头
当然,您可以用PHP编写自己的服务器端身份验证代码,将服务器配置为通过它解析静态文件,并在获得有效凭据(然后需要存储在其他地方,例如PHP会话)后立即省略401
和WWW Authenticate
)。但是,您已经失去了HTTP身份验证的所有优势:此时,带有PHP会话的自定义登录处理程序将是一个更简单的解决方案
总而言之:
- 如果您需要简单性,请忘记HTML表单
- 如果需要HTML表单,请编写自己的代码
谷歌PHP认证教程和获得超过9000篇文章 哦,好吧,其中一个
<?
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'代码>在脚本顶部jQuery库具有ajax函数,该函数具有用于身份验证的“密码”和“用户”参数。当用户单击login时,您可以获得login和password的值,并将其传递给$.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;
});
$(“#提交”)。单击(函数(){
$.ajax({
url:'authenticated.php',
用户名:$('#login').val(),
密码:$('#passwd').val(),
成功:功能(数据){
//对来自服务器的数据执行某些操作
}
});
返回false;
});
它必须是HTML格式的原因是什么?除非你使用了像http://user:password@HTTP基本身份验证将导致浏览器显示一个标准弹出框,询问用户名和密码。这可以代替HTML表单吗?我希望他们看到一个HTML表单…提交它…然后让他们使用HTML基本身份验证登录。。。我根本不想让弹出框显示出来。仅仅登录5-6个人太美观了。是的,可以将HTTP认证与表单结合起来。如jcubic所示,使用jQuery或XMLHttpRequest参数。该方法的难点在于触发注销。这就是为什么每个人都推荐旧的学校登录表单;我已经设置好了。目前,他们用那个丑陋的弹出框登录。我希望有一个样式化的表单并将其传递到站点