刚才Google一下,自已对这个又有了些新的认识,我说一下我的想法,望大家给予指正。(先声明一下,这个方法不是直接用代码来做的,好像在PHP文件中什么也不用写就可实现。) 1:先用Apache自带的htpasswd.exe程序生成一个密码文件newuser(生成的时候是没有扩展名的,我也不知道对不对,后来自已改成newuser.txt了,文件位置在e:\Apache2.2\htdocs\bin下面) 2:在Apache的配置文件中,找到LoadModule auth_basic_module modules/mod_auth_basic.so该行,并去掉前面的#号(默认是去掉的) 3:再找 <Directory "E:/Apache2.2/htdocs/"/> Options FollowSymLinks AllowOverride None Order allow,deny allow from all </Directory> 将其改为 <Directory "E:/Apache2.2/htdocs/"/> Options FollowSymLinks AllowOverride authconfig Order allow,deny allow from all </Directory> 4:新建一个文本文件,输入以下代码,并保存为passwd.htaccess文件(这个扩展名头次见,Google来的),不过我看Apache配置文件中这么一段描述:“ # The following lines prevent .htaccess and .htpasswd files from being # viewed by Web clients. # <FilesMatch "^\.ht"> Order allow,deny Deny from all </FilesMatch>”。 所以,我就把这个文件名稍稍改了一下,改成了passwd.ht,以下是该文件中的代码 authtype basic authname"goods" authuserfile e:\Apache2.2\htdocs\bin\newuser.txt require user admin 5:把这个文件passwd.ht放在了htdocs下面,这个目录下面有个shop.php的文件,我的目的是在浏览器里输入127.0.0.1/shop.php时,就弹出这个验证框,把以放在了这个目录下面,可还是不行。 我认为现在的情况是:密码文件有了(newuser.txt),配置中也设定了在访问哪个文件夹时进行密码保护(修改了Apache中的配置文件),用来读取密码文件的向导文件也有了(passwd.ht),可不知道还有什么遗漏的,现在验证框还是出不来。
Apache服务器已经内置用户验证机制,大家只要适当的加以设置,便可以控制网站的某些部分要用户验证。 前期准备,必须已经安装apache,如果还没安装,或者对安装很模糊的话, 第1步: 我们在/var/www(apache的主页根目录)下建立一个test目录 mkdir /var/www/test 第2步 然后我们编辑httpd.conf 添加 Alias /test"/var/www/test" <Directory "/var/www/test"> Options Indexes MultiViews AllowOverride AuthConfig #表示进行身份验证 Order allow,deny Allow from all </Directory>
#AllowOverride AuthConfig 表示进行身份验证这是关键的设置 第3步 在/var/www/test创建.htaccess文件 vi /var/www/test/.htaccess AuthName "frank share web" AuthType Basic AuthUserFile /var/www/test/.htpasswd require valid-user #AuthName 描述,随便写 #AuthUserFile /var/www/test/.htpasswd #require valid-user 或者 require user frank 限制是所有合法用户还是指定用户 #密码文件推荐使用.htpasswd,因为apache默认系统对“.ht”开头的文件默认不允许外部读取,安全系数会高一点哦。 第4步 就是创建apache的验证用户 htpasswd -c /var/www/test/.htpasswd frank #第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数 如果你们想修改密码,可以如下 htpasswd -m .htpasswd frank 第5步: ok,重启apache服务,然后访问 http://你的网站地址/test 如果顺利的话,应该能看到一个用户验证的弹出窗口,只要填入第4步创建的用户名和密码就行 后话,为了服务器的性能,一般不推荐使用AllowOverride AuthConfig或者AllowOverride ALL,因为这会使服务器会不断的去寻找.htaccess,从而影响服务器的效能,一般我们把一些后台管理界面或者其他特殊目录可能需要加验证这个需求。
1:用Apache自带的htpasswd.exe创建了一个密码文件user,该文件在E:\Apache2.2\bin目录下
2:新建文本文件,输入了以下代码
authtype basic
authname"goods"
authuserfile e:\Apache2.2\htdocs\web
require user admin
保存为passwd.htaccess文件,将其放在要保护的文件夹下,也就是e:\Apache2.2\htdocs\web这个目录下面。
————————————————
想问一下,接下来还要怎么做呢?
http://bbs.51cto.com/archiver/tid-443407.html
LZ看下这个资料,直接代码实现.
/*******************************************
HTTP验证功能
*******************************************/
if (!isset($PHP_AUTH_USER) || (!isset($PHP_AUTH_PW)))
{
header("WWW-Authenticate:Basic realm='soho'");
header('HTTP/1.0 401 Unauthorized');
echo "<script language='JavaScript'>alert ('验证失败!请重新登陆。');</script>";
exit;
}
else if ((isset($PHP_AUTH_USER)) && (isset($PHP_AUTH_PW)))
{
if (($PHP_AUTH_USER != "admin") || ($PHP_AUTH_PW !="admin"))
{
header ('WWW-Authenticate: Basic realm="admin"');
header ('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
}
else if (($PHP_AUTH_USER == "admin") && ($PHP_AUTH_PW == "admin"))
{
echo "<script language='JavaScript'>alert ('验证成功!');</script>";
exit;
}
}
麻烦帮忙看看,我觉得这里应该是没有问题的,现在画面上是可以出现那个登陆框的,可就是不管输什么就和没输一样,错三次之后就会弹出“验证失败!请重新登陆。”的提示框。
1:先用Apache自带的htpasswd.exe程序生成一个密码文件newuser(生成的时候是没有扩展名的,我也不知道对不对,后来自已改成newuser.txt了,文件位置在e:\Apache2.2\htdocs\bin下面)
2:在Apache的配置文件中,找到LoadModule auth_basic_module modules/mod_auth_basic.so该行,并去掉前面的#号(默认是去掉的)
3:再找
<Directory "E:/Apache2.2/htdocs/"/>
Options FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
将其改为
<Directory "E:/Apache2.2/htdocs/"/>
Options FollowSymLinks
AllowOverride authconfig
Order allow,deny
allow from all
</Directory>
4:新建一个文本文件,输入以下代码,并保存为passwd.htaccess文件(这个扩展名头次见,Google来的),不过我看Apache配置文件中这么一段描述:“ # The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>”。
所以,我就把这个文件名稍稍改了一下,改成了passwd.ht,以下是该文件中的代码
authtype basic
authname"goods"
authuserfile e:\Apache2.2\htdocs\bin\newuser.txt
require user admin
5:把这个文件passwd.ht放在了htdocs下面,这个目录下面有个shop.php的文件,我的目的是在浏览器里输入127.0.0.1/shop.php时,就弹出这个验证框,把以放在了这个目录下面,可还是不行。
我认为现在的情况是:密码文件有了(newuser.txt),配置中也设定了在访问哪个文件夹时进行密码保护(修改了Apache中的配置文件),用来读取密码文件的向导文件也有了(passwd.ht),可不知道还有什么遗漏的,现在验证框还是出不来。
前期准备,必须已经安装apache,如果还没安装,或者对安装很模糊的话,
第1步:
我们在/var/www(apache的主页根目录)下建立一个test目录
mkdir /var/www/test
第2步
然后我们编辑httpd.conf
添加
Alias /test"/var/www/test"
<Directory "/var/www/test">
Options Indexes MultiViews
AllowOverride AuthConfig #表示进行身份验证
Order allow,deny
Allow from all
</Directory>
#AllowOverride AuthConfig 表示进行身份验证这是关键的设置
第3步
在/var/www/test创建.htaccess文件
vi /var/www/test/.htaccess
AuthName "frank share web"
AuthType Basic
AuthUserFile /var/www/test/.htpasswd
require valid-user
#AuthName 描述,随便写
#AuthUserFile /var/www/test/.htpasswd
#require valid-user 或者 require user frank 限制是所有合法用户还是指定用户
#密码文件推荐使用.htpasswd,因为apache默认系统对“.ht”开头的文件默认不允许外部读取,安全系数会高一点哦。
第4步
就是创建apache的验证用户
htpasswd -c /var/www/test/.htpasswd frank
#第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数
如果你们想修改密码,可以如下
htpasswd -m .htpasswd frank
第5步:
ok,重启apache服务,然后访问 http://你的网站地址/test 如果顺利的话,应该能看到一个用户验证的弹出窗口,只要填入第4步创建的用户名和密码就行
后话,为了服务器的性能,一般不推荐使用AllowOverride AuthConfig或者AllowOverride ALL,因为这会使服务器会不断的去寻找.htaccess,从而影响服务器的效能,一般我们把一些后台管理界面或者其他特殊目录可能需要加验证这个需求。
——————————
参考地址:http://blog.chinaunix.net/u1/40541/showart_315264.html