CSS定义Input之Radio和Checkbox的样式



<style type=”text/css”>

form#form1 {font:12px tahoma,sans-serif}

input[type=”checkbox”] {visibility:hidden;width:0;height:0;margin:0;padding:0;}

input[type=”checkbox”]+label {background:url(checkstyle.gif) no-repeat;padding-left:18px;color:#ccc;}

input[type=”checkbox”]+label:hover {color:#369;background-position:0 -16px;}

input[type=”checkbox”]:checked+label {color:#000;background-position:0 -48px;}

input[type=”checkbox”]:focus+label {color:#963;background-position:0 -32px;}

input[type=”radio”] {visibility:hidden;width:0;height:0;margin:0;padding:0;}

input[type=”radio”]+label {background:url(checkstyle.gif) no-repeat 0 -64px;padding-left:18px;color:#ccc;}

input[type=”radio”]+label:hover {color:#369;background-position:0 -80px;}

input[type=”radio”]:checked+label {color:#000;background-position:0 -112px;}

input[type=”radio”]:focus+label {color:#963;background-position:0 -96px;}

</style>

用Apache仿照FTP的列表方式的虚拟主机配置写法

<Virtualhost *:80>

DocumentRoot “/home/123456”

ServerName ftp.aaa.com

AddDefaultCharset UTF-8

<directory home=””/home/123456″”>

Options Indexes

IndexOptions NameWidth=* //这个是让表格字段名自动适应宽度

IndexOptions FancyIndexing //采用类似Windows的排列方式

IndexOptions FoldersFirst //文件夹排在文件前面

IndexOptions HTMLTable //采用HTML的表格方式

AddIcon (IMG,/icons/pdf.gif) .pdf

AddIcon (IMG,/icons/doc.gif) .doc

AddIcon (IMG,/icons/xls.gif) .xls

AddIcon (IMG,/icons/ppt.gif) .ppt

AddIcon (IMG,/icons/rar.gif) .rar .zip .tgz .tar.gz .rpm .iso

AddIcon (IMG,/icons/msi.gif) .msi .exe

AddIcon (IMG,/icons/txt.gif) .txt

AddIcon (IMG,/icons/dll.gif) .dll .sys

AddIcon (IMG,/icons/xml.gif) .xml

AddIcon (IMG,/icons/html.gif) .htm .html

AddIcon (IMG,/icons/media.gif) .wmv .rm .rmvb .asf .mov

AddIcon (IMG,/icons/img.gif) .jpg .gif .png .bmp

IndexStyleSheet “ftp.css” //指定CSS文件,对样式进行具体规定

AllowOverride None

Order allow,deny

Allow from all

</directory>

</Virtualhost>

使用openssl生成自签证的certificate

第一步:先建立一个 CA 的证书

首先为 CA 创建一个 RSA 私用密钥,

[root@rocketcnvm ssl]#openssl genrsa -des3 -out ca.key 1024

系统提示输入 PEM pass phrase,也就是密码,输入后牢记它。

生成 ca.key 文件,将文件属性改为400,并放在安全的地方。

[root@rocketcnvm ssl]#chmod 400 ca.key

你可以用下列命令查看它的内容,

[root@rocketcnvm ssl]# openssl rsa -noout -text -in ca.key

利用 CA 的 RSA 密钥创建一个自签署的 CA 证书(X.509结构)

[root@rocketcnvm ssl]#openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

然后需要输入下列信息:

Country Name: cn 两个字母的国家代号

State or Province Name: An Hui 省份名称

Locality Name: Bengbu 城市名称

Organization Name: Family Network 公司名称

Organizational Unit Name: Home 部门名称

Common Name:distinguish  name

Email Address: sunstorm@263.net Email地址

生成 ca.crt 文件,将文件属性改为400,并放在安全的地方。

[root@rocketcnvm ssl]#chmod 400 ca.crt

你可以用下列命令查看它的内容,

[root@rocketcnvm ssl]#openssl x509 -noout -text -in ca.crt

用下面的命令也可以生成没有密码保护的CA密钥和证书文件:

[root@rocketcnvm ssl]#openssl req -new -x509 -out ca.crt -keyout ca.key

想给CA密钥加密码保护可以:

[root@rocketcnvm ssl]#openssl res -des3 -in ca.key -out ca.key.new

[root@rocketcnvm ssl]#mv ca.key.new ca.key

第二步:下面要创建服务器证书签署请求,

首先为你的 Apache 创建一个 RSA 私用密钥:

[root@rocketcnvm ssl]#openssl genrsa -des3 -out server.key 1024

这里也要设定pass phrase。

生成 server.key 文件,将文件属性改为400,并放在安全的地方。

[root@rocketcnvm ssl]#chmod 400 server.key

你可以用下列命令查看它的内容,

[root@rocketcnvm ssl]#openssl rsa -noout -text -in server.key

用 server.key 生成证书签署请求 CSR.

[root@rocketcnvm ssl]#openssl req -new -key server.key -out server.csr

这里也要输入一些信息,和生成ca.crt的信息类似

至于 ‘extra’ attributes 不用输入。

“Common Name: Chen Yang 你的姓名”这条信息请你输入你的服务器的域名或者IP地址,

你可以查看 CSR 的细节

[root@rocketcnvm ssl]#openssl req -noout -text -in server.csr

第三步:下面可以签署证书了

[root@rocketcnvm ssl]#openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

就可以得到server.crt。

将文件属性改为400,并放在安全的地方。

[root@rocketcnvm ssl]#chmod 400 server.crt

检查私钥是否于证书匹配,可以使用如下命令进行对比:四 其它

[root@rocketcnvm ssl]# openssl rsa -noout -modulus -in ca.key | openssl md5

Enter pass phrase for ca.key:

86e24bf0156116c4f6617a8d980b3acd

[root@rocketcnvm ssl]# openssl x509 -noout -modulus -in ca.crt | openssl md5

86e24bf0156116c4f6617a8d980b3acd


补充

在CentOS6.3环境下,openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key,无法生效。改成openssl x509 -days 3650 -req -in server.csr -signkey server.key -out server.crt即可

上面生成的证书有效期为10年(呵呵太长了点,一般三年就行了)

这时证书的相关文件就都已经生成好了。当前文件夹下应该有server.crt、server.csr、server.key这三个文件。

如果你是个完美论者,理所当然应该把文件丢到证书的“官方目录”中去,省的把文件胡乱放置以后找不着:

[root@www ~]# mv server.crt /etc/pki/tls/certs/

[root@www ~]# mv server.key /etc/pki/tls/private/

最后仅仅需要修改配置文件来指定证书路径:

找到如下一节:

# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A new
# certificate can be generated using the genkey(1) command.
SSLCertificateFile /etc/pki/tls/certs/server.crt

# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you’ve both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /etc/pki/tls/private/server.key

另外,在/etc/httpd/conf.d/ssl.conf里面将SSLPassPhraseDialog builtin修改为

SSLPassPhraseDialog exec:/etc/httpd/key.sh

编辑:/ect/apache2/key.sh

#!/bin/bash

echo ‘your pass phrase’ //在单引号里输入你的Server.key的密码

注意key.sh的权限755

重启Apache服务

这样每次启动apache时都可以不需要输入Server.key的密码了。

SED用于UNIXDOS文本格式转换

将UNIX风格的文本转换成DOS/Windows格式

您可能知道,基于 DOS/Windows 的文本文件在每一行末尾有一个 CR(回车)和 LF(换行),而 UNIX 文本只有一个换行。有时可能需要将某些 UNIX 文本移至 Windows 系统,该脚本将为您执行必需的格式转换。

$ sed -e ‘s/$/ /’ myunix.txt > mydos.txt

在该脚本中,’$’ 规则表达式将与行的末尾匹配,而 ‘ ‘ 告诉 sed 在其之前插入一个回车。在换行之前插入回车,立即,每一行就以 CR/LF 结束。请注意,仅当使用 GNU sed 3.02.80 或以后的版本时,才会用 CR 替换 ‘ ‘。

将DOS/Windows格式转换为UNIX格式

我已记不清有多少次在下载一些示例脚本或 C 代码之后,却发现它是 DOS/Windows 格式。虽然很多程序不在乎 DOS/Windows 格式的 CR/LF 文本文件,但是有几个程序却在乎 — 最著名的是 bash,只要一遇到回车,它就会出问题。以下 sed 调用将把 DOS/Windows 格式的文本转换成可信赖的 UNIX 格式:

$ sed -e ‘s/.$//’ mydos.txt > myunix.txt

该脚本的工作原理很简单:替代规则表达式与一行的最末字符匹配,而该字符恰好就是回车。我们用空字符替换它,从而将其从输出中彻底删除。如果使用该脚本并注意到已经删除了输出中每行的最末字符,那么,您就指定了已经是 UNIX 格式的文本文件。也就没必要那样做了!

如何在下载文件名中使用UTF-8编码

通过把Content-Type设置为application/octet-stream, 可以把动态生成的内容当作文件来下载,相信这个大家都会。 那么用Content-Disposition设置下载的文件名, 这个也有不少人知道吧。 基本上,下载程序都是这么写的:

<?php $filename = “document.txt”; header(‘Content-Type: application/octet-stream’); header(‘Content-Disposition: attachment; filename=’ . $filename); print “Hello!”; ?>

这样用浏览器打开之后,就可以下载document.doc。

但是,如果$filename是UTF-8编码的,有些浏览器就无法正常处理了。 比如把上面那个程序稍稍改一下:

<?php $filename = “中文 文件名.txt”; header(‘Content-Type: application/octet-stream’); header(‘Content-Disposition: attachment; filename=’ . $filename); print “Hello!”; ?>

把程序保存成UTF-8编码再访问,IE6下载的文件名就会乱码。 FF3下下载的文件名就只有“中文”两个字。Opera 9下一切正常。

输出的header实际上是这样子:

Content-Disposition: attachment; filename=中文 文件名.txt

其实按照RFC2231的定义, 多语言编码的Content-Disposition应该这么定义:

Content-Disposition: attachment; filename*=”utf8”%E4%B8%AD%E6%96%87%20%E6%96%87%E4%BB%B6%E5%90%8D.txt”

即:

  • filename后面的等号之前要加 *
  • filename的值用单引号分成三段,分别是字符集(utf8)、语言(空)和urlencode过的文件名。
  • 最好加上双引号,否则文件名中空格后面的部分在Firefox中显示不出来
  • 注意urlencode的结果与php的urlencode函数结果不太相同,php的urlencode会把空格替换成+,而这里需要替换成%20

经过试验,发现几种主流浏览器的支持情况如下:

IE6 attachment; filename=”<URL编码之后的UTF-8文件名>”
FF3 attachment; filename=”UTF-8文件名”
attachment; filename*=”utf8”<URL编码之后的UTF-8文件名>”
O9 attachment; filename=”UTF-8文件名”
Safari3(Win) 貌似不支持?上述方法都不行

这样看来,程序必须得这样写才能支持所有主流浏览器:

<?php $ua = $_SERVER[“HTTP_USER_AGENT”]; $filename = “中文 文件名.txt”; $encoded_filename = urlencode($filename); $encoded_filename = str_replace(“+”, “%20”, $encoded_filename); header(‘Content-Type: application/octet-stream’); if (preg_match(“/MSIE/”, $ua)) { header(‘Content-Disposition: attachment; filename=”‘ . $encoded_filename . ‘”‘); } else if (preg_match(“/Firefox/”, $ua)) { header(‘Content-Disposition: attachment; filename*=”utf8”’ . $filename . ‘”‘); } else { header(‘Content-Disposition: attachment; filename=”‘ . $filename . ‘”‘); } print ‘ABC’; ?>

MySQL中将一个表数据批量导入另一表

不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定导入字段。

本文就将以MySQL数据库为例,介绍如何通过SQL命令行将某个表的所有数据或指定字段的数据,导入到目标表中。此方法对于SQLServer数据库,也就是T-SQL来说,同样适用。

类别一、如果两张张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法:

INSERT INTO 目标表 SELECT  * FROM 来源表;

例如,要将 articles 表插入到 newArticles 表中,则可以通过如下SQL语句实现:

INSERT INTO newArticles SELECT  * FROM articles;

类别二、如果只希望导入指定字段,可以用这种方法:

INSERT INTO 目标表 (字段1, 字段2, …) SELECT  字段1, 字段2, …  FROM 来源表;

请注意以上两表的字段必须一致,否则会出现数据转换错误。