Я работаю вокруг с некоторыми 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;
}
}
?>
Пользователь, пароль, таблица и т. Д. Верны, но они не работают должным образом, нет перенаправления, но также нет ошибок.
Я делаю что-то неправильно?
Проблема в моем CGI-сервере и в том, как он работает с аутентификацией заголовка.
добавление этого в .htaccess решает проблему
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>
Других решений пока нет …