![]() |
Показаны 9 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- http-авторизаци¤ на php (http://netadmin.ws/forum/showthread.php?threadid=4074)
http-авторизаци¤ на php
платформа: windows
web-сервер: apache
при выполнении кода:
if(!isset($PHP_AUTH_USER)) {
Header('WWW-Authenticate: Basic realm="'.$config['sitename'].' Control Panel"');
Header('HTTP/1.0 401 Unauthorized');
echo 'Login and Password needed';
exit;
}
__________________
www.relmax.com
Web Site Design and Development
А пхп как модуль стоит? Из мануала:
quote:
The HTTP Authentication hooks in PHP are only available when it is running as an Apache module and is hence not available in the CGI version.
эмм... спасибо, все заработало..
просто в install.txt для php, написано в httpd.conf добавить
# for the apache module
LoadModule php4_module c:/php/sapi/php4apache.dll
AddType application/x-httpd-php .php4
#for the cgi binary (you can use that one compiled with force cgi redirect too)
ScriptAlias /php4/ "C:/php/"
Action application/x-httpd-php4 "/php4/php.exe"
AddType application/x-httpd-php4 .php
НО НАДО ТО ТОЛЬКО первые три (точнее две - без комментариев) строки.
__________________
www.relmax.com
Web Site Design and Development
Не совсем то, что тебе надо
<?php
//auth_user.php
include "./common_db.inc";
$register_script = "./register.php";
function auth_user($userid, $userpassword) {
global $default_dbname, $user_tablename;
$link_id = db_connect($default_dbname);
$query = "SELECT username FROM $user_tablename
WHERE userid = '$userid'
AND userpassword = password('$userpassword')";
$result = mysql_query($query);
if(!mysql_num_rows($result)) return 0;
else {
$query_data = mysql_fetch_row($result);
return $query_data[0];
}
}
function login_form() {
global $PHP_SELF;
?>
<HTML>
<HEAD>
<TITLE>Login</TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="<? echo $PHP_SELF ?>">
<DIV ALIGN="CENTER"><CENTER>
<H3>Please log in to access the page you requested.</H3>
<TABLE BORDER="1" WIDTH="200" CELLPADDING="2">
<TR>
<TH WIDTH="18%" ALIGN="RIGHT" NOWRAP>ID</TH>
<TD WIDTH="82%" NOWRAP>
<INPUT TYPE="TEXT" NAME="userid" SIZE="8">
</TD>
</TR>
<TR>
<TH WIDTH="18%" ALIGN="RIGHT" NOWRAP>Password</TH>
<TD WIDTH="82%" NOWRAP>
<INPUT TYPE="PASSWORD" NAME="userpassword" SIZE="8">
</TD>
</TR>
<TR>
<TD WIDTH="100%" COLSPAN="2" ALIGN="CENTER" NOWRAP>
<INPUT TYPE="SUBMIT" VALUE="LOGIN" NAME="Submit">
</TD>
</TR>
</TABLE>
</CENTER></DIV>
</FORM>
</BODY>
</HTML>
<?
}
session_start();
if(!isset($userid)) {
login_form();
exit;
}
else {
session_register("userid", "userpassword");
$username = auth_user($userid, $userpassword);
if(!$username) {
session_unregister("userid");
session_unregister("userpassword");
echo "Authorization failed. " .
"You must enter a valid userid and password combo. " .
"Click on the following link to try again.<BR>\n";
echo "<A HREF=\"$PHP_SELF\">Login</A><BR>";
echo "If you're not a member yet, click " .
"on the following link to register.<BR>\n";
echo "<A HREF=\"$register_script\">Membership</A>";
exit;
}
else echo "Welcome, $username!";
}
?>
__________________
Международное брачное агенство в Сибири.
Tagore,
А где здесь http-авторизация?
По коду замечание - лучше для работы с сессиями использовать массив $_SESSION, т.е. вбивать в него переменные напрямую без session_register(); во избежание возможных глюков (были прецеденты).
+ хороший тон -> делать mysql_free_result и закрывать соединение с базой из скрипта. Без обид 
quote:
session_register("userid", "userpassword");
__________________
FAQ OFF
кстати в php 4.1.3 $_SESSION не работает.
polo добавил 29-01-2003 в 15:34:32:
точнее он не работает при создании нового элемента массива, не записывается.
__________________
Всегда есть решение.
...не видно (и даже в комментариях не упомянуто)в каком месте данные проверяются..
результат может быть плачевным
$query = "SELECT username FROM $user_tablename
WHERE userid = '$userid'
AND userpassword = password('$userpassword')";
__________________
FAQ OFF
Nevermind
Да знаю, знаю. Хотел просто хоть может кому понадобиться если.
__________________
Международное брачное агенство в Сибири.
| Формат времени GMT. Текущее время 08:07. | Показаны 9 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.