【问题标题】:How to use PHP-based authentication from non-PHP based AJAX app?如何在非基于 PHP 的 AJAX 应用程序中使用基于 PHP 的身份验证?
【发布时间】:2012-01-10 20:21:09
【问题描述】:

我被要求使用“直接”的 HTML 和 Javascript 创建一个独立的 Web 应用程序,该应用程序对现有的 PHP 应用程序(后端是 MySQL)进行用户身份验证。不幸的是,我对 PHP 身份验证的工作原理并没有完全掌握,我宁愿不要为了这种特殊情况而投入大量时间来学习 PHP。

到目前为止,我可以看到两种可能性

1) 围绕我的新应用创建一个 PHP 包装器并使用原生 PHP 身份验证(不喜欢这样)

2) 围绕 PHP 身份验证创建一个简单的 REST-ful 网络服务(不知道怎么做)

还有什么我应该考虑的吗?非常感谢您的帮助!

【问题讨论】:

    标签: php ajax authentication rest restful-authentication


    【解决方案1】:

    没有一种进行 php 身份验证的标准方法。通常它涉及在会话中存储一些信息或 UID,但很难一概而论。

    您需要通过查看哪些表单在哪里提交来了解现有身份验证的工作原理。

    例如,如果你发现登录表单是这样的

    <form id="login" action="login.php">
    <input type="text" name"username">
    <input type="password" name="password">
    </form>
    

    您可以使用 AJAX 调用模拟表单提交。

    这样的调用在 JQuery 中可能看起来像这样:

    <script>
    $(document).ready(function() {
      $("form#login").bind("submit",function() {
        $.post("login.php", "username=INSERTUSERNAMEHERE&password=INSERTPASSWORDHERE");
        return false;
      });
    });
    </script>
    

    【讨论】:

    • 感谢您的提示,这是有道理的。找到原始 PHP 应用程序的作者,并说他会制作一些自定义的 php“服务”供我调用。认为结果会很好。
    【解决方案2】:

    没有 PHP 身份验证之类的东西。它是:

    • HTTP 身份验证,使用 HTTP 标头。
    • 通过提交 HTML 表单进行身份验证。

    也许你的网站可以调用PHP webapp的登录页面,看看是否成功。

    【讨论】:

      【解决方案3】:

      “PHP 身份验证”通常接受用户名和密码,随后(如果它们正确)以某种方式将当前会话标记为“已登录”。

      使用正确的凭据通过 Ajax 提交应用程序的登录表单可能就足够了。

      【讨论】:

        【解决方案4】:

        我会这样做:

        $('form#login').submit(function(e){
            e.preventDefault();
            var formValues = $(this).serialize();
            $.ajax({
              url: 'login.php',
              type: 'POST',
              dataType: 'html',
              data: formValues,
              success: function(data, textStatus, xhr) {
                $('.login-response').html(data);
              }
            });
        });
        

        你的 html 会是这样的:

        <form id="login" action="login.php">
            <input type="text" name"username">
            <input type="password" name="password">
            <div class="login-response"</div>
        </form>
        

        【讨论】:

          猜你喜欢
          • 2016-04-03
          • 1970-01-01
          • 2016-01-29
          • 2015-06-04
          • 2014-10-12
          • 2012-03-19
          • 1970-01-01
          • 2012-11-03
          • 1970-01-01
          相关资源
          最近更新 更多