转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/apachenginx/1051.html
我们经常会看到这种现象,看下图

apache 页面访问控制
为什么要进行这样的控制呢,给不同的人看不同的东西,对信息进行保护,虽然这种保护比较低级,多多少少还是有点用的。
一,用htpasswd命令,产生权限控制文件
查看复制打印?
- [[email protected] test]$ htpasswd -c ./access tank //生成一个密码文件 ,-c是新建一个文件 htpasswd -h可查看
- New password: //提示输入密码
- Re-type new password: //重复密码
- Adding password for user tank
- [[email protected] test]$ cat access //查看一下密码文件
- tank:Uj5B3qIF/BNdI //用户名是明文的,密码是加密的。
到这儿密码文件是生成好了。
二,页面访问控制方法
1,能过修改httpd.conf或者是httpd-vhosts.conf来进行配置
查看复制打印?
- listen 10004
- NameVirtualHost *:10004
- <VirtualHost *:10004>
- DocumentRoot "/home/zhangy/www/test"
- ServerName *:10004
- BandwidthModule On
- ForceBandWidthModule On
- Bandwidth all 1024000
- MinBandwidth all 50000
- LargeFileLimit * 500 50000
- MaxConnection all 2
- ErrorLog "/home/zhangy/apache/blog.51yip.com.com-error.log"
- CustomLog "/home/zhangy/apache/blog.51yip.com-access.log" common
- //看一下,下面的配置
- <Directory /home/zhangy/www/test>
- AuthType Basic
- AuthName "access test"
- AuthUserFile /home/zhangy/www/test/access
- Require valid-user
- </Directory>
- </VirtualHost>
2,我们可以利用.htaccess文件来进行控制
在test的根目录下面建一个.htaccess的文件
查看复制打印?
- [[email protected] test]$ vi .htaccess //打开个文件 ,添加权限内容
- [[email protected] test]$ cat .htaccess //下面就是.htaccess的内容
- AuthType Basic
- AuthName "access test"
- AuthUserFile /home/zhangy/www/test/access
- Require valid-user
如果要给很多人设置不同的用户名和密码,使用AuthGroupFile设置选项比较方便
3,不用密码文件,也可以进行访问控制
查看复制打印?
- define('ADMIN_USERNAME','tank'); // Admin Username
- define('ADMIN_PASSWORD','tank'); // Admin Password
- //log check
- if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
- $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME ||$_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) {
- Header("WWW-Authenticate: Basic realm=\"access test\"");
- Header("HTTP/1.0 401 Unauthorized");
- echo <<<EOB
- <html><body>
- <h1>Rejected!</h1>
- <big>Wrong Username or Password!</big>
- </body></html>
- EOB;
- exit;
- }
上面用的是php的方法,其他语言我想也有。您可以把上面的这段代码写成一个文件,进行共用包涵,也可以把它封装到底基,这样不管访问什么页面,都可以进行访问控制。
PS:
.htaccess文件需要主配置的配合,如果有冲突就不行
PHP_AUTH_USER方式也不靠谱,因为有些cgi环境就不行,详见http://php.net/manual/en/features.http-auth.php
我的fastcgi环境就得不到用户的输入,HTTP_AUTHORIZATION也得不到。
Continue reading 【转】PHP 页面访问控制的3种方法
javascript + 与其他运算符有些特别
因为它也表示字符串连接,所以当+号两边有任何字符串类型时,就会当做字符串连接。
例如
1 + ‘1’// = ‘11’;
1 + 1 //= 2
2*’1’ //= 2
Continue reading javascript 加运算符
这几天折腾搭建了个SVN服务器,这里记录下。
svn官方文档 http://svn.apache.org/repos/asf/subversion/tags/1.6.19/INSTALL
我这里建立的是配合apache的,发现当前的apache没有dav,没有ssl,只好重新编译apache:
./configure -prefix=xxx/apache2_2 -enable-so -enable-dav --enable-ssl --enable-rewrite -enable-mods-shared=all
make clean && make && make install
可以看到加载了dav,ssl (这里假设已经安装了openssl,如果没有还要安装openssl)
然后下载svn,编译安装
wget http://subversion.tigris.org/downloads/subversion-1.6.19.tar.gz
tar zxvf subversion-1.6.19.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.19.tar.gz
tar zxvf subversion-deps-1.6.19.tar.gz
cd subversion-1.6.19
./configure --prefix=/xxxx/svn --with-apxs=/xxxx/apache2_2/bin/apxs --enable-dav --enable-so && make clean && make && make install
查看svn是否装好
/xxx/svn/bin/svnserve --version
创建svn仓库根目录和一个仓库
#根目录
mkdir -p /xxxx/svn
#创建个仓库
svnadmin create /xxxx/svn/projects
#创建密码用户名
htpasswd -c /xxxxx/svn/mymeho ignet
#上面的命令创建了一个ignet的svn用户,密码存储在文件/xxxxx/svn/mymeho中。
配置apache
(如果只使用svnserve方式,则使用/xxxx/svn/projects/conf/svnserve.conf 中的配置,参见http://blog.51yip.com/server/901.html)
LoadModule ssl_module modules/mod_ssl.so
<Location /mymesvnhoho/repos>
DAV svn
SVNPath /xxxxx/svn/projects #仓库目录
SSLRequireSSL #需要ssl方式
AuthType Basic
AuthName "my svn" #取个名字
AuthUserFile /xxxx/svn/mymeho #指定用户密码文件
Require valid-user
</Location>
ssl相关:
#创建私钥
openssl genrsa 4096 > svn.mymeho.key
#创建自签名证书30年
openssl req -new -key svn.mymeho.key -x509 -days 10950 -out svn.mymeho.crt
apache ssl配置
Listen 20080
NameVirtualHost *:880
<VirtualHost *:880>
SSLEngine On
SSLCertificateFile conf/ssl/svn.mymeho.crt #指向证书
SSLCertificateKeyFile conf/ssl/svn.mymeho.key #指向私钥
DirectoryIndex index.php index.html
#这里880端口专门用于svn,如果指明了目录(DocumentRoot)则需要配置Directory权限,否则无法访问,这些和普通apache一样。
ServerName 127.0.0.1:880
</VirtualHost>
启动apache
apache2_2/bin/apachectl start
到这里就配置好了。
我测试了一下我的服务器提交速度,惨不忍睹,不堪使用,这里只是尝试一下。
参见:
http://mark.koli.ch/2010/03/howto-setting-up-your-own-svn-server-using-apache-and-mod-dav-svn.html
Continue reading linux下svn+apache+ssl搭建
今天avast突然不能更新,报错为文件签名不合法,半天找不到原因,差点以为中毒了要重装系统,结果将奇虎360关掉了就可以更新了。
别的不想多说,直接删了奇虎360.
推荐另外一个http://www.comodo.cn
Continue reading avast无法更新问题,文件签名不合法
今天同bryntum.com的Mats讨论了一些Extjs4的问题:
1: Ext.define中的属性定义要注意,不要用object或array类型
例如:
Ext.define('MyPanel', {
extend : 'Ext.Panel',
fd1:{
p1:1,
p2:2
}
});
这样定义的类MyPanel创建的所有实例的fd1属性会指向同一个json对象。这是因为目前Extjs的实现的属性copy没有深拷贝,同样的问题存在于通过config定义的属性。
解决方案:
constructor: function() {
arguments[0].fd1 = {p1:1,p2:2};
this.callParent(arguments);
}
即通过在构造器中设置实例属性来达到目的。
Mats说这不是bug,而是prototype本身就是这样的。但是我觉得真是容易上当,这样的解决方案也很不方便。
2: 怎样在config中设置scope?
name="code" class="js">Ext.define('MyPanel', { extend : 'Ext.Panel',
Continue reading extjs4 define的一些问题我一般使用第一种方式,即re = /pattern/[flags] 。
这次使用
re = new RegExp("pattern",["flags"]) 这种方式半天不起作用。
再想一下,原来我忽略了\这个字符串在javacript string中的本来作用。\是转义字符啊。
所以就像java的\要多加一个的道理,如下例是等同的
var reg = /\d+/g;
var reg2 = new RegEx('\d+','g');
这个问题乍一看还真不好看出来。
所以还是第一种方式要好些。
这里推荐一个不错的正则测试网站http://www.gethifi.com/tools/regex
Continue reading javascript 正则表达式new Regex方式的问题
这个是老生长谈,但是要用时有记不清,还是来拦下笔头心里踏实。
首先要对table引用样式table-layout: fixed; 并且table要指明宽度,百分比,像素都可以,但要指明。
对于td要指明宽度,百分比,像素都可以,其他列都指明,本列不设置也可以(但其他列都要指明,这样才能计算本列宽,否则两个未指明宽度列就不好控制)。
td 需要overflow:hidden;white-space: nowrap;这两个样式。
这样就行了。
Continue reading td中内容固定宽度
form大家都很熟悉,都用老的了。这次我就碰到这么个问题,我想使用form来提交查询参数,但是要达到刷新页面这些参数还在的效果,那么最好是使用get方法来提交了。但是我不希望设置action,这样就不用关心原来的url了,而且不会冲掉之前的url参数。
但是get方法和post方法不一样:
get方法下,会将input里面的值添加到url后面,原来的参数会冲掉。
post方法下,会将input里面的值作为http内容提交,因此不会影响原来的url也不会冲掉参数。
就是这个区别,会对你的编程思路造成影响。如果使用get,那么你还需要将之前的想办法参数手动保留下来,例如将参数写入input。
如果用post,你可能需要注意重置一些参数。
明天国庆,节日快乐!
Continue reading form action属性默认值与method属性相关的一个问题
Pagination