Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用表单的PHP HTTP基本身份验证_Php_Http_Authentication - Fatal编程技术网

使用表单的PHP HTTP基本身份验证

使用表单的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基本身份验证,让用户以HTML格式提交用户名和密码,并使用HTTP基本身份验证进行身份验证

我听说Internet Explorer不再支持使用NoMore,所以我不知道最好的方法

可以使用PHP、javascript和HTML。我不想使用PERL,也不喜欢使用大型javascript库


如果您不认为HTTP基本身份验证。是最好的方法,请推荐一些简单易行的方法。它将只是一个5-6人的登录站点。无需使其复杂化。

如果我理解正确,您需要将.htpasswd与.htaccess一起使用:

IMHO,使用HTTP身份验证的全部意义在于能够委派身份验证任务:

  • web服务器负责拒绝未经授权访问受保护的资源
  • 浏览器负责在需要时询问用户名和密码
  • 因此,你有一个工作系统,以最小的努力

    现在,如果您使用HTML表单请求凭据,服务器将知道您是谁,但浏览器不会:它将在找到
    WWW-Authenticate
    响应头和
    401
    状态代码后立即请求凭据。要使其工作,浏览器必须在每个HTTP请求上发送
    授权
    请求头;但是,表单无法指示浏览器发送适当的HTTP标头

    当然,您可以用PHP编写自己的服务器端身份验证代码,将服务器配置为通过它解析静态文件,并在获得有效凭据(然后需要存储在其他地方,例如PHP会话)后立即省略
    401
    WWW Authenticate
    )。但是,您已经失去了HTTP身份验证的所有优势:此时,带有PHP会话的自定义登录处理程序将是一个更简单的解决方案

    总而言之:

    • 如果您需要简单性,请忘记HTML表单
    • 如果需要HTML表单,请编写自己的代码
    如何使用HTTP基本身份验证并让用户以HTML格式提交用户名和密码

    不可能

    请推荐一些简单易行的方法

    会话、cookies。
    谷歌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参数。该方法的难点在于触发注销。这就是为什么每个人都推荐旧的学校登录表单;我已经设置好了。目前,他们用那个丑陋的弹出框登录。我希望有一个样式化的表单并将其传递到站点