【问题标题】:Mysql user auth doen't work [closed]Mysql用户身份验证不起作用[关闭]
【发布时间】:2014-11-18 01:11:11
【问题描述】:

我正在使用一些 php + mysql 和用户身份验证。我已经实现了这个:

<?php

    if (!isset($_SERVER['PHP_AUTH_USER']))
    {
            header('WWW-Authenticate: Basic realm="Administrator"');
            header('HTTP/1.0 401 Unauthorized');
            echo  'Username and password are required to view this page';
            exit;
    }
    else
    {
            if(isset($_ENV["OPENSHIFT_MYSQL_DB_HOST"]))
            {

                    $conn = mysql_connect($_ENV["OPENSHIFT_MYSQL_DB_HOST"].':'.$_ENV["OPENSHIFT_MYSQL_DB_PORT"],
                                          $_ENV["OPENSHIFT_MYSQL_DB_USERNAME"],
                                          $_ENV["OPENSHIFT_MYSQL_DB_PASSWORD"]) or die(mysql_error());
            }
            else
            {
                    $conn = mysql_connect("localhost", "user", "pass") or die(mysql_error());
            }
            mysql_select_db("db", $conn) or die(mysql_error());
            $sqlquery = "SELECT * FROM admin_users";
            $result = mysql_query($sqlquery, $conn) or die(mysql_error());
            $access_granted = 0;
            while($user = mysql_fetch_array($result))
            {
                    if ($_SERVER['PHP_AUTH_USER'] == $user['user_name'] &&
                        $_SERVER['PHP_AUTH_PW'] == $user['password'])
                    {
                            $access_granted++;
                    }
            }
            if(!$access_granted)
            {
                    header('WWW-Authenticate: Basic realm="Administrator"');
                    header('HTTP/1.0 401 Unauthorized');
                    echo "Invalid username and/or password";
                    exit;
            }
    }
?>

用户、通行证、表格等正确但无法正常工作,没有重定向但也没有错误

我做错了吗?

【问题讨论】:

  • 你打开错误报告了吗? (&lt;?php error_reporting(E_ALL); ini_set("display_errors", 1); ?&gt;)
  • 这可能是因为其中一个结果验证了您的if 条件并使access_granted NON 0,因此您在同一页面上
  • 我忘了说我在 apache 服务器上运行,如果在 wamp 本地设置它可以正常工作,但不能在我的服务器上运行
  • @bSaraogi 是的,所有应用程序的页面始终相同

标签: php mysql .htaccess cgi authentication


【解决方案1】:

问题在于我的基于 CGI 服务器及其处理标头身份验证的方式

将其添加到 .htaccess 中可以解决问题

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>

【讨论】:

    猜你喜欢
    • 2015-07-13
    • 2020-06-19
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    相关资源
    最近更新 更多