ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>女人天堂在线,一区二区三区日韩精品,综合国产精品http://www.aygfsteel.com/chenglu/嗯哼zh-cnWed, 21 May 2025 07:56:23 GMTWed, 21 May 2025 07:56:23 GMT60微信公共òq›_° PHP SDK 增强ç‰?/title><link>http://www.aygfsteel.com/chenglu/archive/2013/08/24/wechat-php-sdk-power.html</link><dc:creator>saobaolu</dc:creator><author>saobaolu</author><pubDate>Sat, 24 Aug 2013 08:02:00 GMT</pubDate><guid>http://www.aygfsteel.com/chenglu/archive/2013/08/24/wechat-php-sdk-power.html</guid><description><![CDATA[     摘要: 代码改编è‡?NetPuter 大大发布çš?SDKåQŒè¿™ä»?SDK 是我用过的最好的 PHP SDKåQŒä¿®æ”¹äº†ä¸€äº›ä¸œè¥¿ï¼š1、增加了收到的讯息类åž?voice video2、收到text的时候,如果æ˜?hello2bizuser 的话åQŒè°ƒç”?onsubscribe æ–ÒŽ³•åQˆå¾®ä¿?.x 以前貌似都还是发hello2bizuser 所以不得不兼容啊)Code highlighting produced by A...  <a href='http://www.aygfsteel.com/chenglu/archive/2013/08/24/wechat-php-sdk-power.html'>阅读全文</a><img src ="http://www.aygfsteel.com/chenglu/aggbug/403271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/chenglu/" target="_blank">saobaolu</a> 2013-08-24 16:02 <a href="http://www.aygfsteel.com/chenglu/archive/2013/08/24/wechat-php-sdk-power.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何固定表格宽度http://www.aygfsteel.com/chenglu/archive/2010/07/06/table-width.htmlsaobaolusaobaoluTue, 06 Jul 2010 14:43:00 GMThttp://www.aygfsteel.com/chenglu/archive/2010/07/06/table-width.html如何固定表格宽度 转自http://blog.csdn.net/cjh47349038/archive/2009/04/09/4058680.aspx

<TABLE style="table-layout: auto | fixed">
auto: 默认å€?br /> fixed: 宽度固定,截断­‘…出的内å®?br />
<TABLE style="word-break: normal | break-all | keep-all">
normal: 默认å€?按字词截断换è¡?br /> break-all: å¼ø™¡Œæˆªæ–­òq¶æ¢è¡?br /> keep-all: 不截断不换行

使用:style="table-layout:fixed;"
表示输出停止,停留在设定的长度�

使用:style="word-break : break-all;"
表示对超镉Kƒ¨åˆ?换行再ç‘ô¾l­æ˜¾½C?

对于在英文中使用,请ä‹É用style="table-layout:fixed; word-wrap:break-word"
推荐使用word-wrap:break-word;word-break:break-all;table-layout:fixed;

==============================================================================

word-wrap同word-break的区�/span>

word-wrap:
normal      Default. Content exceeds the boundaries of its container. 
break-word Content wraps to next line, and a word-break occurs when necessary. 必要时会触发word-break�/p>

word-break:
normal      Default. Allows line breaking within words. 好像是只对Asian text起作用ã€?br /> break-all Behaves the same as normal for Asian text, yet allows the line to break arbitrarily for non-Asian text. This value is suited to Asian text that contains some excerpts of non-Asian text. 
keep-all Does not allow word breaking for Chinese, Japanese, and Korean. Functions the same way as normal for all non-Asian languages. This value is optimized for text that includes small amounts of Chinese, Japanese, or Korean.

æ€È»“如下åQ?br /> word-wrap是控制换行的ã€?br /> 使用break-wordæ—Óž¼Œæ˜¯å°†å¼ºåˆ¶æ¢è¡Œã€‚中文没有ä“Q何问题,英文语句也没问题。但是对于长串的英文åQŒå°±ä¸è“v作用ã€?/span>

break-word是控制是否断词的ã€?br /> normal是默认情况,英文单词不被拆开ã€?br /> break-allåQŒæ˜¯æ–­å¼€å•词。在单词到边界时åQŒä¸‹ä¸ªå­—母自动到下一行。主要解决了长串英文的问题ã€?br /> keep-allåQŒæ˜¯æŒ‡Chinese, Japanese, and Korean不断词。即只用此时åQŒä¸ç”¨word-wrapåQŒä¸­æ–‡å°±ä¸ä¼šæ¢è¡Œäº†ã€‚(英文语句正常。)


ie下:
使用word-wrap:break-word;所有的都正常�/p>

ff下:
如这2个都不用的话åQŒä¸­æ–‡ä¸ä¼šå‡ºä»ÖM½•问题。英文语句也不会出问题。但是,长串英文会出问题ã€?br /> ä¸ÞZº†è§£å†³é•¿ä¸²è‹±æ–‡åQŒä¸€èˆ¬ç”¨word-wrap:break-word;word-break:break-all;ã€‚ä½†æ˜¯ï¼Œæ­¤æ–¹å¼ä¼šå¯ÆD‡´åQŒæ™®é€šçš„英文语句中的单词会被断开åQˆie下也是)ã€?/p>

目前主要的问题存在于 长串英文 å’?英文单词被断开。其实长串英文就是一个比较长的单词而已ã€?br /> 卌™‹±æ–‡å•词应不应该被断开那?那问题很明显了,昄¡„¶ä¸åº”该被断开了ã€?br /> 对于长串英文åQŒå°±æ˜¯æ¶æ„çš„东西åQŒè‡ªç„¶ä¸ç”¨åŽ»½Ž¡äº†ã€‚但是,也要想些办法åQŒä¸è®©å®ƒæŠŠå®¹å™¨æ’‘大ã€?br /> 用:overflow:auto; ie下,长串会自动折行。ff下,长串会被遮盖ã€?/p>


所以,¾lég¸ŠåQ?span style="line-height: 21px; color: #ff0000; ">最好的方式是word-wrap:break-word;overflow:hidden;而不是word-wrap:break-word;word-break:break-all;ã€?br /> word-wrap:break-word;overflow:auto;在ie下没有ä“Q何问题。在ff下,长串会被遮住部分内容ã€?/span>

另,‹¹‹è¯•代码如下åQ?/p>

1.htm===================================================================

<style>
.c1{ width:300px;      border:1px solid red}
.c2{ width:300px;word-wrap:break-word;      border:1px solid yellow}
.c3{ width:300px;word-wrap:break-word;word-break:break-all;      border:1px solid green}
.c4{ width:300px;word-wrap:break-word;word-break:keep-all; border:1px solid blue}
.c5{ width:300px;word-break:break-all;      border:1px solid black}
.c6{ width:300px;word-break:keep-all;      border:1px solid red}
.c7{ width:300px;word-wrap:break-word;overflow:auto;      border:1px solid yellow}
</style>

.c1{ width:300px;      border:1px solid red}
<div class="c1">
safjaskflasjfklsajfklasjflksajflksjflkasjfksafj
</div>
<div class=c1>
This is all English. This is all English. This is all English.
</div>
<div class=c1>
全是中文的情å†üc€‚全是中文的情况。全是中文的情况ã€?br /> </div>
<div class=c1>
ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. 
</div>

<br>
.c2{ width:300px;word-wrap:break-word; border:1px solid yellow}
<div class="c2">
safjaskflasjfklsajfklasjflksajflksjflkasjfksafj
</div>
<div class=c2>
This is all English. This is all English. This is all English.
</div>
<div class=c2>
全是中文的情å†üc€‚全是中文的情况。全是中文的情况ã€?br /> </div>
<div class=c2>
ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. 
</div>

<br>
.c3{ width:300px;word-wrap:break-word;word-break:break-all;      border:1px solid green}
<div class="c3">
safjaskflasjfklsajfklasjflksajflksjflkasjfksafj
</div>
<div class=c3>
This is all English. This is all English. This is all English.
</div>
<div class=c3>
全是中文的情å†üc€‚全是中文的情况。全是中文的情况ã€?br /> </div>
<div class=c3>
ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. 
</div>

<br>
.c4{ width:300px;word-wrap:break-word;word-break:keep-all; border:1px solid blue}
<div class="c4">
safjaskflasjfklsajfklasjflksajflksjflkasjfksafj
</div>
<div class=c4>
This is all English. This is all English. This is all English.
</div>
<div class=c4>
全是中文的情å†üc€‚全是中文的情况。全是中文的情况ã€?br /> </div>
<div class=c4>
ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. 
</div>

<br>
.c5{ width:300px;word-break:break-all;      border:1px solid black}
<div class="c5">
safjaskflasjfklsajfklasjflksajflksjflkasjfksafj
</div>
<div class=c5>
This is all English. This is all English. This is all English.
</div>
<div class=c5>
全是中文的情å†üc€‚全是中文的情况。全是中文的情况ã€?br /> </div>
<div class=c5>
ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. 
</div>

<br>
.c6{ width:300px;word-break:keep-all;      border:1px solid red}
<div class="c6">
safjaskflasjfklsajfklasjflksajflksjflkasjfksafj
</div>
<div class=c6>
This is all English. This is all English. This is all English.
</div>
<div class=c6>
全是中文的情å†üc€‚全是中文的情况。全是中文的情况ã€?br /> </div>
<div class=c6>
ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. 
</div>

<br>
.c7{ width:300px;word-wrap:break-word;overflow:auto;      border:1px solid yellow}
<div class="c7">
safjaskflasjfklsajfklasjflksajflksjflkasjfksafj
</div>
<div class=c7>
This is all English. This is all English. This is all English.
</div>
<div class=c7>
全是中文的情å†üc€‚全是中文的情况。全是中文的情况ã€?br /> </div>
<div class=c7>
ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. ä¸­è‹±æ–‡æØœæŽ’çš„æƒ…å†µã€‚Chinese and English. 
</div>



saobaolu 2010-07-06 22:43 发表评论
]]>
键盘输入10个整敎ͼŒå†’æˆö排序òq¶è¾“出结果到文äšghttp://www.aygfsteel.com/chenglu/archive/2010/06/26/SortTest.htmlsaobaolusaobaoluSat, 26 Jun 2010 01:02:00 GMThttp://www.aygfsteel.com/chenglu/archive/2010/06/26/SortTest.html 1 import java.io.*;
 2 import java.util.Scanner;
 3 public class SortTest {
 4     public static void main(String[] args) throws IOException {
 5         int temp = 0;//临时变量åQŒç”¨äºŽå†’泡交æ?nbsp;       
 6         int[] num=new int[10];  //声明一个空的数¾l?nbsp; 10个长åº?/span>
 7         Scanner sc = new Scanner(System.in);
 8         FileOutputStream out=new FileOutputStream("1.txt");
 9         PrintStream p=new PrintStream(out);
10         //开始åó@环赋å€?/span>
11         for(int i =0;i<num.length;i++){
12             num[i]=sc.nextInt();
13         }
14         p.append("æŽ’åºå‰äØ“:");
15         for (int i = 0; i <num.length; i++) {
16             System.out.println(num[i]);
17             p.append(num[i]+" , ");
18         }
19         // ç”¨äºŽæŽ’序
20         for (int i = 0; i < num.length-1; i++) {
21             for (int j = 0; j < num.length - i - 1; j++) {
22                 if (num[j] > num[j + 1]) {
23                     temp = num[j];
24                     num[j] = num[j + 1];
25                     num[j + 1= temp;
26                 }
27             }
28         }
29         //输出文äšg
30         p.append("\n");
31         p.append("æŽ’åºåŽäØ“:");
32         // å¾ªçŽ¯è¾“å‡º
33         System.out.println("æŽ’åºåŽäØ“:");
34         for (int i = 0; i <num.length; i++) {
35             System.out.println(num[i]);
36             p.append(num[i]+" , ");
37         }
38     
39         
40     }
41 } 最后应该把p¾l™close了哈

]]>
【è{】解决table不能换行的问题与CSS之自动换行æ€È»“http://www.aygfsteel.com/chenglu/archive/2010/06/25/table_huanhang.htmlsaobaolusaobaoluFri, 25 Jun 2010 06:06:00 GMThttp://www.aygfsteel.com/chenglu/archive/2010/06/25/table_huanhang.html转自åQšhttp://www.ry168.net/bbs/thread-226-1-1.html
table不能换行问题 一般是åQšä¸€è¡Œé‡Œé¢å…¨æ˜¯æ•°å­—或是字母或者结ž®¾æœ‰å¤šä¸ªæ„Ÿå¹å¯‚€Œå¯¼è‡?table不能换行åQŒä¸­æ–‡é»˜è®¤çš„会自动换行的åQŒå­—母不能换行问题:
style="table-layout:fixed; word-break: break-all; overflow:hidden;"
复制代码在单元格属性里加入上面˜q™å¥åQŒå¦‚åQ?br /> <td style="table-layout:fixed; word-break: break-all; overflow:hidden;">
复制代码用表格做¾|‘é¡µæŽ’ç‰ˆçš„æ—¶å€™ï¼Œä¸€èˆ¬éƒ½èƒ½æ­£å¸æ€‹É用。偏偏有时会¼„°åˆ°ä¸€ŒDµè¿ž¾l­çš„英文词或者一堆感叹号(!!!)把网™åµå°±æ’‘开的现象ã€?/p>

æ€È»“了一下,只要在CSS中定义了如下句子åQŒå¯ä¿ç½‘™åµä¸ä¼šå†è¢«æ’‘开了ã€?/p>

自动换行问题,正常字符的换行是比较合理çš?而连¾l­çš„æ•°å­—和英文字½W¦å¸¸å¸¸å°†å®¹å™¨æ’‘大,æŒø™®©äººå¤´ç–?下面介绍的是CSS如何实现换行的方æ³?/p>

对于div,p½{‰å—¾U§å…ƒç´?/p>

正常文字的换�亚洲文字和非亚洲文字)元素拥有默认的white-space:normal,当定义的宽度之后自动换行

html
<div id="wrap">正常文字的换�亚洲文字和非亚洲文字)元素拥有默认的white-space:normal,当定�lt;/div>
css
#wrap{white-space:normal; width:200px; }

IE‹¹è§ˆå™?/p>

˜qžç®‹çš„英文字½W¦å’Œé˜¿æ‹‰ä¼¯æ•°å­?使用word-wrap: break-word ;或者word-break:break-all;实现强制断行

html
<div id="wrap">abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111</div>

css
#wrap{word-break:break-all; width:200px;}
或�
#wrap{word-wrap:break-word; width:200px;}

Firefox‹¹è§ˆå™?br /> ˜qžç®‹çš„英文字½W¦å’Œé˜¿æ‹‰ä¼¯æ•°å­—的断行,Firefox的所有版本的没有解决˜q™ä¸ªé—®é¢˜,æˆ‘ä»¬åªæœ‰è®©è¶…å‡ø™¾¹ç•Œçš„字符隐藏或è€?¾l™å®¹å™¨æ·»åŠ æ»šåŠ¨æ¡

html
<div id="wrap">abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111</div>

css
#wrap{word-break:break-all; width:200px; overflow:auto;}

对于table元素
IE‹¹è§ˆå™?br /> 1. 使用 table-layout:fixed;强制table的宽åº?多余内容隐藏<table style="table-layout:fixed" width="200"><tr><td>abcdefghigklmnopqrstuvwxyz1234567890ssssssssssssss</td></tr></table>
复制代码2. 使用 table-layout:fixed;强制table的宽�内层td,th采用word-break : break-all;或者word-wrap : break-word ;换行 <table width="200" style="table-layout:fixed;"><tr><td width="25%" style="word-break : break-all; ">abcdefghigklmnopqrstuvwxyz 1234567890</td><td style="word-wrap : break-word ;">abcdefghigklmnopqrstuvwxyz 1234567890</td></tr></table>
复制代码3.在td,th中嵌套div,p½{‰é‡‡ç”¨ä¸Šé¢æåˆ°çš„div,p的换行方æ³?/p>

Firefox‹¹è§ˆå™?/p>

1. 使用 table-layout:fixed;强制table的宽åº?内层td,th采用word-break : break-all;或者word-wrap : break-word ;换行åQŒä‹É用overflow:hidden;隐藏­‘…出内,˜q™é‡Œoverflow:auto;无法起作ç”?lt;table style="table-layout:fixed" width="200"><tr>

<td width="25%"  style="word-break : break-all; overflow:hidden; ">abcdefghigklmnopqrstuvwxyz1234567890</td>

<td width="75%" style="word-wrap : break-word; overflow:hidden; ">abcdefghigklmnopqrstuvwxyz1234567890</td>

</tr></table>
复制代码2.在td,th中嵌套div,p½{‰é‡‡ç”¨ä¸Šé¢æåˆ°çš„对付Firefox的方法ã€?/p>

最佳CSS定义换行代码.wrap { table-layout:fixed; word-break: break-all; overflow:hidden; }
复制代码当然åQŒè¿™¿UçŽ°è±¡å‡ºçŽ°çš„å‡ çŽ‡å¾ˆå°åQŒä½†æ˜¯ä¸èƒ½æŽ’除网友的恶搞ã€?



saobaolu 2010-06-25 14:06 发表评论
]]>
QQ在线状态代码详解及如何自定义在¾U‰K£Žæ ¼å›¾ç‰?/title><link>http://www.aygfsteel.com/chenglu/archive/2010/06/25/wp_qq.html</link><dc:creator>saobaolu</dc:creator><author>saobaolu</author><pubDate>Thu, 24 Jun 2010 23:28:00 GMT</pubDate><guid>http://www.aygfsteel.com/chenglu/archive/2010/06/25/wp_qq.html</guid><description><![CDATA[¾|‘址是http://wp.qq.com<br /> 发现˜q™ä¸ªçŽ©æ„­‘Šæ¥­‘Šå¼ºå¤§äº†åQŒå°±å¿ä¸ä½æŠŠå®˜æ–¹çš„介¾læ¬˜q‡æ¥åQ?br /> 代码样例<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000"><</span><span style="color: #000000">a href</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://sighttp.qq.com/cgi-bin/check?sigkey=81a37f0b7cac68639bddfdb9b93a6c92bc211f3e3a4e683afbb31a079382dc9d</span><span style="color: #000000">"</span><span style="color: #000000">;target</span><span style="color: #000000">=</span><span style="color: #000000">_blank; onclick</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">var tempSrc='http://sighttp.qq.com/wpa.js?rantime='+Math.random()+'&sigkey=81a37f0b7cac68639bddfdb9b93a6c92bc211f3e3a4e683afbb31a079382dc9d';var oldscript=document.getElementById('testJs');var newscript=document.createElement('script');newscript.setAttribute('type','text/javascript'); newscript.setAttribute('id', 'testJs');newscript.setAttribute('src',tempSrc);if(oldscript == null){document.body.appendChild(newscript);}else{oldscript.parentNode.replaceChild(newscript, oldscript);}return false;</span><span style="color: #000000">"</span><span style="color: #000000">><</span><span style="color: #000000">img border</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000"> SRC</span><span style="color: #000000">=</span><span style="color: #000000">'http:</span><span style="color: #008000">//</span><span style="color: #008000">wpa.qq.com/pa?p=1:80000805:1' alt="点击˜q™é‡Œ¾l™æˆ‘发消æ?></a></span></div> <p>1)、sigkeyä¸ÞZ¸ªäººé‰´æƒkeyåQŒè¯·å‹¿ä¿®æ”¹ï¼Œå¦åˆ™æ— æ³•发è“v临时会话ã€?/p> <p>2)、äÍ时会话图æ ?lt;img border="0" SRC='http://wpa.qq.com/pa?p=1:80000805:1' alt="点击˜q™é‡Œ¾l™æˆ‘发消æ?></p> <p>SRC是图标链接,自定义图标中可以替换˜q™ä¸€éƒ¨åˆ†ä¸ø™‡ªå·±å›¾ç‰‡çš„链接åQ?/p> <p>参数åQ?/p> <p style="line-height: 24px">P=以冒å?#8220;:”分隔多个参数</p> <p style="line-height: 24px">½W¬ä¸€ä¸ªå‚æ•îCØ“ç‰ˆæœ¬åøP¼Œç›®å‰ä¸?åQ?/p> <p style="line-height: 24px">½W¬äºŒä¸ªäØ“QQ/TMåïL åQ?/p> <p style="line-height: 24px">½W¬ä¸‰ä¸ªå‚æ•îCؓ囑փé£Žæ ¼åQŒæ”¯æŒå¤š¿UçŠ¶æ€ã€?/p> <p style="line-height: 24px">alt是图标旁留言ã€?/p> <p>3)、除了自定义图标需要修改äÍ时会话图标外åQŒå…¶ä»–æƒ…å†µä¸‹å»ø™®®ä¸è¦ä¿®æ”¹ä»£ç åQŒå› ä¸ºæœ‰å¯èƒ½å¯ÆD‡´åœ¨ä¸åŒçš„环境和浏览器下,无法发è“v临时会话ã€?/p> <br /> <p style="font-weight: bold; font-size: 14px; margin-bottom: 3px">自定义在¾U‰K£Žæ ¼å›¾ç‰?/p> <p>用JS实现åQŒå…·ä½“步骤如下:</p> <p>1) 甌™¯·ä»£ç </p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><</span><span style="color: #000000">a href</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://sighttp.qq.com/cgi-bin/check?sigkey=81a37f0b7cac68639bddfdb9b93a6c92bc211f3e3a4e683afbb31a079382dc9d</span><span style="color: #000000">"</span><span style="color: #000000">; target</span><span style="color: #000000">=</span><span style="color: #000000">_blank; onclick</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">var tempSrc='http://sighttp.qq.com/wpa.js?rantime='+Math.random()+'&sigkey=81a37f0b7cac68639bddfdb9b93a6c92bc211f3e3a4e683afbb31a079382dc9d';var oldscript=document.getElementById('testJs');var newscript=document.createElement('script');newscript.setAttribute('type','text/javascript'); newscript.setAttribute('id', 'testJs');newscript.setAttribute('src',tempSrc);if(oldscript == null){document.body.appendChild(newscript);}else{oldscript.parentNode.replaceChild(newscript, oldscript);}return false;</span><span style="color: #000000">"</span><span style="color: #000000">><</span><span style="color: #000000">img border</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000"> SRC</span><span style="color: #000000">=</span><span style="color: #000000">'http:</span><span style="color: #008000">//</span><span style="color: #008000">wpa.qq.com/pa?p=1:80000805:1' alt="点击˜q™é‡Œ¾l™æˆ‘发消æ?></a></span></div> <p>2) 定义online数组åQŒå¿…™åÀL˜¯online命名</p> <p><script>var online= new Array();</script> <p>3) 获取在线状æ€?/p> <p><script src="http://webpresence.qq.com/getonline?Type=1&80000805:"></script></p> <p>可以获取多个åQŒå¿…™åÖM»¥å†’号分隔åQŒä»¥å†’号¾l“å°¾åQŒæ¯”å¦?</p> <p><script src="http://webpresence.qq.com/getonline?Type=1&80000805:10000:123456:"></script></p> <p>online[0]=0,表示80000805¼›Èº¿</p> <p>online[1]=1,表示10000在线</p> <p>online[2]=1,表示123456在线</p> <p>填写åïL çš„先后顺序,分别对应数组onlineçš?ã€?ã€?</p> <p>4) æ·ÕdŠ ä»£ç </p> <p>把SRC='http://wpa.qq.com/pa?p=1:80000805:1'æ›¿æ¢ä¸ø™‡ªå·Þqš„囄¡‰‡åQŒæ¯”å¦?</p> <div style="border-right: #cccccc 4px solid; padding-right: 5px; border-top: #cccccc 4px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 4px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 4px solid; background-color: #eeeeee"><span style="color: #000000"><</span><span style="color: #000000">script</span><span style="color: #000000">></span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000">(online[</span><span style="color: #000000">0</span><span style="color: #000000">]</span><span style="color: #000000">==</span><span style="color: #000000">0</span><span style="color: #000000">) document.write(</span><span style="color: #000000">"</span><span style="color: #000000"><a href=</span><span style="color: #000000">"</span><span style="color: #000000">http:</span><span style="color: #008000">//</span><span style="color: #008000">sighttp.qq.com/cgi-bin/check?sigkey=81a37f0b7cac68639bddfdb9b93a6c92bc211f3e3a4e683afbb31a079382dc9d"; target=_blank; onclick="var tempSrc='http://sighttp.qq.com/wpa.js?rantime='+Math.random()+'&sigkey=81a37f0b7cac68639bddfdb9b93a6c92bc211f3e3a4e683afbb31a079382dc9d';var oldscript=document.getElementById('testJs');var newscript=document.createElement('script');newscript.setAttribute('type','text/javascript'); newscript.setAttribute('id', 'testJs');newscript.setAttribute('src',tempSrc);if(oldscript == null){document.body.appendChild(newscript);}else{oldscript.parentNode.replaceChild(newscript, oldscript);}return false;"><img border="0" SRC=<strong>'http://xxxx/outline.jpg'</strong> alt="点击˜q™é‡Œ¾l™æˆ‘发消æ?></a>"); </span><span style="color: #008000"><br /> </span><span style="color: #0000ff">else</span><span style="color: #000000"> document.write(</span><span style="color: #000000">"</span><span style="color: #000000"><a href=</span><span style="color: #000000">"</span><span style="color: #000000">http:</span><span style="color: #008000">//</span><span style="color: #008000">sighttp.qq.com/cgi-bin/check?sigkey=81a37f0b7cac68639bddfdb9b93a6c92bc211f3e3a4e683afbb31a079382dc9d"; target=_blank; onclick="var tempSrc='http://sighttp.qq.com/wpa.js?rantime='+Math.random()+'&sigkey=81a37f0b7cac68639bddfdb9b93a6c92bc211f3e3a4e683afbb31a079382dc9d';var oldscript=document.getElementById('testJs');var newscript=document.createElement('script');newscript.setAttribute('type','text/javascript'); newscript.setAttribute('id', 'testJs');newscript.setAttribute('src',tempSrc);if(oldscript == null){document.body.appendChild(newscript);}else{oldscript.parentNode.replaceChild(newscript, oldscript);}return false;"><img border="0" SRC=<strong>'http://xxxx/online.jpg'</strong> alt="点击˜q™é‡Œ¾l™æˆ‘发消æ?></a>"); </script> </span></div> <br /> 我是˜q™æ ·çœ‹çš„åQŒç”¨tx的方法得到某QQåäh˜¯å¦åœ¨¾U¿ï¼Œç”¨js判断åQŒæ˜¾½Cºonline.jpg或者outline.jpg˜q™ä¸¤ä¸ªå›¾ç‰‡ï¼Œå…¶ä½™ä¸å˜ã€?img src ="http://www.aygfsteel.com/chenglu/aggbug/324381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/chenglu/" target="_blank">saobaolu</a> 2010-06-25 07:28 <a href="http://www.aygfsteel.com/chenglu/archive/2010/06/25/wp_qq.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse6.0注册机源代码http://www.aygfsteel.com/chenglu/archive/2010/06/19/MyEclipse6_cracker.htmlsaobaolusaobaoluSat, 19 Jun 2010 14:09:00 GMThttp://www.aygfsteel.com/chenglu/archive/2010/06/19/MyEclipse6_cracker.html 

package myeclipsegen;

import java.io.*;

public class MyEclipseGen {
    
private static final String LL = "Decompiling this copyrighted software is a violation of both your license agreement and the Digital Millenium Copyright Act of 1998 (http://www.loc.gov/copyright/legislation/dmca.pdf). Under section 1204 of the DMCA, penalties range up to a $500,000 fine or up to five years imprisonment for a first offense. Think about it; pay for a license, avoid prosecution, and feel better about yourself.";
    
public String getSerial(String userId, String licenseNum) {
        java.util.Calendar cal 
= java.util.Calendar.getInstance();
        cal.add(
13);
        cal.add(
6-1);
        java.text.NumberFormat nf 
= new java.text.DecimalFormat("000");
        licenseNum 
= nf.format(Integer.valueOf(licenseNum));
        String verTime 
= new StringBuilder("-").append(new java.text.
                SimpleDateFormat(
"yyMMdd").format(cal.getTime())).append("0").
                         toString();
        String type 
= "YE3MP-";
        String need 
= new StringBuilder(userId.substring(01)).append(type).
                      append(
"300").append(licenseNum).append(verTime).toString();
        String dx 
= new StringBuilder(need).append(LL).append(userId).toString();
        
int suf = this.decode(dx);
        String code 
= new StringBuilder(need).append(String.valueOf(suf)).
                      toString();
        
return this.change(code);
    }

    
private int decode(String s) {
        
int i;
        
char[] ac;
        
int j;
        
int k;
        i 
= 0;
        ac 
= s.toCharArray();
        j 
= 0;
        k 
= ac.length;
        
while (j < k) {
            i 
= (31 * i) + ac[j];
            j
++;
        }
        
return Math.abs(i);
    }

    
private String change(String s) {
        
byte[] abyte0;
        
char[] ac;
        
int i;
        
int k;
        
int j;
        abyte0 
= s.getBytes();
        ac 
= new char[s.length()];
        i 
= 0;
        k 
= abyte0.length;
        
while (i < k) {
            j 
= abyte0[i];
            
if ((j >= 48&& (j <= 57)) {
                j 
= (((j - 48+ 5% 10+ 48;
            } 
else if ((j >= 65&& (j <= 90)) {
                j 
= (((j - 65+ 13% 26+ 65;
            } 
else if ((j >= 97&& (j <= 122)) {
                j 
= (((j - 97+ 13% 26+ 97;
            }
            ac[i] 
= (char) j;
            i
++;
        }
        
return String.valueOf(ac);
    }

    
public MyEclipseGen() {
        
super();
    }

    
public static void main(String[] args) {
        
try {
            System.out.println(
"please input register name:");
            BufferedReader reader 
= new BufferedReader(new InputStreamReader(
                    System.in));
            String userId 
= null;
            userId 
= reader.readLine();
            MyEclipseGen myeclipsegen 
= new MyEclipseGen();
            String res 
= myeclipsegen.getSerial(userId, "20");
            System.out.println(
"Serial:" + res);
            reader.readLine();
        } 
catch (IOException ex) {
        }
    }
}
ç‚ÒŽ­¤ä¸‹è²æºæ–‡ä»¶å’Œ¾~–译好的classæ–‡äšgå?br /> /Files/chenglu/MyEclipse61Gen.zip
额,˜q˜æœ‰åQŒMyEclipse6的下载地址是:请ä‹É用迅雷下载。ã€?a >http://downloads.myeclipseide.com/downloads/products/eworkbench/6.0.1GA/MyEclipse_6.0.1GA_E3.3.1_FullStackInstaller.exe

saobaolu 2010-06-19 22:09 发表评论
]]>
option select倯DŽ·å–å°è®?/title><link>http://www.aygfsteel.com/chenglu/archive/2010/06/17/option_jsp.html</link><dc:creator>saobaolu</dc:creator><author>saobaolu</author><pubDate>Wed, 16 Jun 2010 23:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/chenglu/archive/2010/06/17/option_jsp.html</guid><description><![CDATA[先来看html代码<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff"><</span><span style="color: #800000">p</span><span style="color: #0000ff">></span><span style="color: #000000"><br />   </span><span style="color: #0000ff"><</span><span style="color: #800000">label</span><span style="color: #0000ff">></span><span style="color: #000000">选择分类</span><span style="color: #0000ff"></</span><span style="color: #800000">label</span><span style="color: #0000ff">></span><span style="color: #000000"><br />     </span><span style="color: #0000ff"><</span><span style="color: #800000">select </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="classId"</span><span style="color: #0000ff">></span><span style="color: #000000"><br />       </span><span style="color: #0000ff"><</span><span style="color: #800000">option </span><span style="color: #ff0000">value</span><span style="color: #0000ff">="1"</span><span style="color: #0000ff">></span><span style="color: #000000">企业动æ€?/span><span style="color: #0000ff"></</span><span style="color: #800000">option</span><span style="color: #0000ff">></span><span style="color: #000000"><br />       </span><span style="color: #0000ff"><</span><span style="color: #800000">option </span><span style="color: #ff0000">value</span><span style="color: #0000ff">="2"</span><span style="color: #0000ff">></span><span style="color: #000000">最新活åŠ?/span><span style="color: #0000ff"></</span><span style="color: #800000">option</span><span style="color: #0000ff">></span><span style="color: #000000"><br />     </span><span style="color: #0000ff"></</span><span style="color: #800000">select</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> </span><span style="color: #0000ff"></</span><span style="color: #800000">p</span><span style="color: #0000ff">></span></div> 在纯struts2中获取用户选择值直æŽ?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">private</span><span style="color: #000000"> String classId;<br />  </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> setTitle(String title) {<br />   </span><span style="color: #0000ff">this</span><span style="color: #000000">.title </span><span style="color: #000000">=</span><span style="color: #000000"> title;<br />  }<br />  </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getClassId() {<br />   </span><span style="color: #0000ff">return</span><span style="color: #000000"> classId;<br />  }</span></div> ž®±å¯ä»¥ï¼Œéœ€è¦æ³¨æ„çš„æ˜¯select一定要带nameåQŒoption取到的是value<img src ="http://www.aygfsteel.com/chenglu/aggbug/323677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/chenglu/" target="_blank">saobaolu</a> 2010-06-17 07:12 <a href="http://www.aygfsteel.com/chenglu/archive/2010/06/17/option_jsp.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java md5 ž®è®¡http://www.aygfsteel.com/chenglu/archive/2010/06/16/java_md5.htmlsaobaolusaobaoluWed, 16 Jun 2010 01:09:00 GMThttp://www.aygfsteel.com/chenglu/archive/2010/06/16/java_md5.html 

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import sun.misc.BASE64Encoder;

    
public String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException {
        
//¼‹®å®šè®¡ç®—æ–ÒŽ³•
        MessageDigest md5=MessageDigest.getInstance("MD5");
        BASE64Encoder base64en 
= new BASE64Encoder();
        
//加密后的字符�/span>
        String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
        
return newstr;
    }
 u错了åQŒè¿™ä¸æ˜¯md5的算法,是md5+base64加密åQŒï¼Œ

saobaolu 2010-06-16 09:09 发表评论
]]>
jsp判断resultset是否为空http://www.aygfsteel.com/chenglu/archive/2010/03/22/jsp-rs-null.htmlsaobaolusaobaoluMon, 22 Mar 2010 13:24:00 GMThttp://www.aygfsteel.com/chenglu/archive/2010/03/22/jsp-rs-null.html1
2if(rs.isAfterLast()==rs.isBeforeFirst()){
3    out.print("您所查找的信息不存在åQŒè¯·¼‹®è®¤åŽå†æŸ¥æ‰¾!");
4    }
else{
5
6}


saobaolu 2010-03-22 21:24 发表评论
]]>
[é›·]蜗居版优乐美òq¿å‘Šhttp://www.aygfsteel.com/chenglu/archive/2010/01/26/woju_uloveit.htmlsaobaolusaobaoluTue, 26 Jan 2010 03:17:00 GMThttp://www.aygfsteel.com/chenglu/archive/2010/01/26/woju_uloveit.html

saobaolu 2010-01-26 11:17 发表评论
]]>
Linux权限http://www.aygfsteel.com/chenglu/archive/2010/01/08/linux_permit_exchange.htmlsaobaolusaobaoluThu, 07 Jan 2010 20:36:00 GMThttp://www.aygfsteel.com/chenglu/archive/2010/01/08/linux_permit_exchange.htmlr(ReadåQŒè¯»å?åQšå¯¹æ–‡äšg而言åQŒå…·æœ‰è¯»å–文件内容的权限åQ›å¯¹ç›®å½•来说åQŒå…·æœ‰æµè§ˆç›®å½•的权限ã€?br /> w(Write,写入)åQšå¯¹æ–‡äšg而言åQŒå…·æœ‰æ–°å¢žã€ä¿®æ”ÒŽ–‡ä»¶å†…容的权限åQ›å¯¹ç›®å½•来说åQŒå…·æœ‰åˆ é™¤ã€ç§»åŠ¨ç›®å½•å†…æ–‡äšg的权限ã€?br /> x(eXecuteåQŒæ‰§è¡?åQšå¯¹æ–‡äšg而言åQŒå…·æœ‰æ‰§è¡Œæ–‡ä»¶çš„æƒé™åQ›å¯¹ç›®å½•了来说该用户å…ähœ‰˜q›å…¥ç›®å½•的权限ã€?br /> e.g.  -rw-r--r--
1.åŽÀLމ½W¬ä¸€ä¸? 后面三个三个ä¸ÞZ¸€¾l?rw-/r--/r--  (所有者权é™?¾l„用æˆähƒé™?其他用户权限)
2.解析åQšæ‰€æœ‰è€…æƒé™ï¼šè¯Õd–、写入、不可执行;本组用户权限åQšè¯»å–、不可写入、不可执行;其他用户权限åQšè¯»å–、不可写入、不可执行ã€?br /> 3.两种方式去解析成数字表示法:
    3.1åQšr: 对应数å€?  w: 对应数å€?  xåQšå¯¹åº”æ•°å€?åQŒåˆ™åQ?+2+1=7/4+0+0=4/4+0+0=4åQ?44权限
    3.2åQšå°†å…¶è{换成二进制数åQŒæœ‰å€¼å°±æ˜?åQŒæ²¡å€¼å°±æ˜?åQŒåˆ™åQ?10/100/100åQŒè{换成十进åˆÓž¼š110=7/100=4/110=4åQ?44权限


saobaolu 2010-01-08 04:36 发表评论
]]>
Linux(½W?â€?ç«?æ€È»“http://www.aygfsteel.com/chenglu/archive/2010/01/08/linux_1to4.htmlsaobaolusaobaoluThu, 07 Jan 2010 18:45:00 GMThttp://www.aygfsteel.com/chenglu/archive/2010/01/08/linux_1to4.html阅读全文

saobaolu 2010-01-08 02:45 发表评论
]]>
html常见标签 for Ajax考试http://www.aygfsteel.com/chenglu/archive/2010/01/07/html_tags_ajax.htmlsaobaolusaobaoluThu, 07 Jan 2010 08:31:00 GMThttp://www.aygfsteel.com/chenglu/archive/2010/01/07/html_tags_ajax.html阅读全文

saobaolu 2010-01-07 16:31 发表评论
]]>
Springçš„applicationContext.xmlæ–‡äšghttp://www.aygfsteel.com/chenglu/archive/2010/01/02/Spring_applicationContext.htmlsaobaolusaobaoluSat, 02 Jan 2010 15:42:00 GMThttp://www.aygfsteel.com/chenglu/archive/2010/01/02/Spring_applicationContext.html

Springçš„applicationContext.xmlæ–‡äšg

惛_¿…用过Spring的程序员们都有这æ ïLš„æ„Ÿè§‰åQŒSpring把逻辑层封装的太完¾ŸŽäº†åQˆä¸ªäººæ„Ÿè§‰View层封装的不是很好åQ‰ã€‚以至于有的初学è€? 都不知道Spring配置文äšg的意思,ž®±æ‹¿æ¥ç”¨äº†ã€‚所以今天我¾l™å¤§å®¶è¯¦¾l†è§£é‡Šä¸€ä¸‹Springçš„applicationContext.xmlæ–‡äšgã€? OkåQŒæˆ‘˜q˜æ˜¯é€šè¿‡ä»£ç åŠ æ³¨é‡Šçš„æ–¹å¼ä¸ºå¤§å®¶æ¼”½Cºï¼š 以下是详解Springçš„applicationContext.xmlæ–‡äšg代码åQ?br /> <!-- 头文ä»Óž¼Œä¸»è¦æ³¨æ„ä¸€ä¸‹ç¼–ç ? -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 建立数据�-->
 <bean >
<!-- 数据库驱动,我这里ä‹É用的是Mysql数据åº? -->
  <property >
   <value>com.mysql.jdbc.Driver</value>
  </property>
<!-- 数据库地址åQŒè¿™é‡Œä¹Ÿè¦æ³¨æ„ä¸€ä¸‹ç¼–码,不然ä¹Þq å¯æ˜¯å¾ˆéƒé—ïLš„哦! -->
  <property >
   <value>
       jdbc:mysql://localhost:3306/tie?useUnicode=true&characterEncoding=utf-8
   </value>
  </property>
<!-- 数据库的用户� -->
  <property >
   <value>root</value>
  </property>
<!-- 数据库的密码 -->
  <property >
   <value>123</value>
  </property>
 </bean>
<!-- 把数据源注入¾l™Session工厂 -->
 <bean
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property >
   <ref bean="dataSource" />
  </property>
<!-- 配置映射文äšg -->
  <property >
   <list>
    <value>com/alonely/vo/User.hbm.xml</value>
   </list>
  </property>
 </bean>
<!-- 把Session工厂注入¾l™hibernateTemplate -->
 <!-- 解释一下hibernateTemplateåQšhibernateTemplate提供了很多方便的æ–ÒŽ³•åQŒåœ¨æ‰§è¡Œæ—¶è‡ªåŠ¨å¾ç«?HibernateCallback 对象åQŒä¾‹å¦‚:load()、get()、save、delete()½{‰æ–¹æ³•ã€?-->
 <bean
  class="org.springframework.orm.hibernate3.HibernateTemplate">
  <constructor-arg>
   <ref local="sessionFactory" />
  </constructor-arg>
 </bean>
<!-- 把DAO注入¾l™Session工厂 -->
 <bean >
  <property >
   <ref bean="sessionFactory" />
  </property>
 </bean>
<!-- 把Service注入¾l™DAO -->
 <bean >
  <property >
   <ref local="userDAO" />
  </property>
 </bean>
<!-- 把Action注入¾l™Service -->
 <bean >
  <property >
   <ref bean="userService" />
  </property>
 </bean>
</beans>
以上Springçš„applicationContext.xmlæ–‡äšg我是用的SSHæž¶æž„åQŒå¦‚果您用Springçš„MVCæž¶æž„åQŒå…¶åŽŸç†ä¹Ÿæ˜¯ä¸€æ ïLš„ã€?


saobaolu 2010-01-02 23:42 发表评论
]]>
Linux下Squid代理服务器的配置(�http://www.aygfsteel.com/chenglu/archive/2009/12/18/linux_Squid.htmlsaobaolusaobaoluFri, 18 Dec 2009 00:24:00 GMThttp://www.aygfsteel.com/chenglu/archive/2009/12/18/linux_Squid.htmlLinux下Squid代理服务器的配置(�

启动squid时如果不在squid.conf中设¾|®ä¸»æœºåž®†æ— æ³•启动,必须要设¾|®visible_hostname˜q™ä¸ªå‚æ•°å€û|¼Œæœ¬æ–‡ä¸­ï¼Œè®„¡½®çš„主机名是服务器的真实机器名powersiteåQŒåœ¨squid.conf中找到该™å¹åƈ修改åQ?
visible_hostname linuxserver

你想让所有员工仅在上班时可上¾|‘,而且不允è®?92.168.1.23˜q™å°ä¸ÀLœºä¸Šç½‘åQŒå¯ä»¥åŠ å…¥è¿™æ ïLš„配置åQ?
# ž®†ä»¥ä¸‹ACLæ·ÕdŠ åˆ°squid.confçš„ACL配置部分
acl home_network src 192.168.1.0/24
acl business_hours time M T W H F 9:00-17:00
acl RestrictedHost src 192.168.1.23
# ž®†è¿™äº›å†…å®ÒŽ·»åŠ åˆ°squid.confçš„http_access配置部分
http_access deny RestrictedHost
http_access allow home_network business_hours

你只惛_œ¨æ—©æ™¨˜q™æ®µæ—‰™—´å…è®¸å‘˜å·¥è®‰K—®InternetåQ?
# ž®†ä»¥ä¸‹ACLæ·ÕdŠ åˆ°squid.confçš„ACL配置部分
acl mornings time 08:00-12:00
# ž®†è¿™äº›å†…å®ÒŽ·»åŠ åˆ°squid.confçš„http_access配置部分
http_access allow mornings

Squid支持从外部读取包含有web站点或域名的文äšg˜q›è¡ŒACL限制。在下面的例子中创徏了两个文ä»Óž¼Œ/etc/squid/allowed-sites.squidå’?etc/squid/restricted-sites.squidåQŒå¾ˆæ˜Žæ˜¾åQŒä¸€ä¸ªæ˜¯å…è®¸è®‰K—®çš„ç«™ç‚ÒŽ–‡ä»Óž¼Œå¦ä¸€ä¸ªæ˜¯é™åˆ¶è®‰K—®ç«™ç‚¹æ–‡äšgã€?
# vi /etc/squid/allowed-sites.squid
www.163.com
www.yahoo.cn

# vi /etc/squid/restricted-sites.squid
www.sex.com
sex.com
然后配置在工作时间允许或限制讉K—®çš„目标站点,以下的ACL配置和前面的略微不同åQ?
#
# ž®†ä»¥ä¸‹ACLæ·ÕdŠ åˆ°squid.confçš„ACL配置部分
#
acl home_network src 192.168.1.0/24
acl business_hours time M T W H F 9:00-17:00
acl GoodSites dstdomain "/etc/squid/allowed-sites.squid"
acl BadSites dstdomain "/etc/squid/restricted-sites.squid"

#
# ž®†è¿™äº›å†…å®ÒŽ·»åŠ åˆ°squid.confçš„http_access配置部分
#
http_access deny BadSites
http_access allow home_network business_hours GoodSites

æ ÒŽ®IP地址限制Web讉K—®
˜q™ä¸ªACL讉K—®æŽ§åˆ¶åˆ—表可以限制整个一个网ŒDµï¼ŒåŠŸèƒ½˜q˜æ˜¯å¾ˆå¼ºçš„ã€?
#
# ž®†ä»¥ä¸‹ACLæ·ÕdŠ åˆ°squid.confçš„ACL配置部分
#
acl home_network src 192.168.1.0/255.255.255.0
然后æ·ÕdŠ http_access允许˜q™ä¸ªACLåQ?
#
# ž®†è¿™äº›å†…å®ÒŽ·»åŠ åˆ°squid.confçš„http_access配置部分
#
http_access allow home_network

讄¡½®Squid为透明代理
如果客户端连接网¾lœï¼Œž®±éœ€è¦åœ¨‹¹è§ˆå™¨è®¾¾|®Squid代理服务器,˜q™æ˜¯ä»¶æ¯”较麻烦的工作åQŒè€Œä¸”代理服务器的地址或端口更换,每台服务器都必须重新讄¡½®æ‰èƒ½ç”Ÿæ•ˆåQŒæƒ³è§£å†³˜q™ä¸ªé—®é¢˜åQŒå¯ä»¥ä‹É用透明代理的方法。透明代理ž®±æ˜¯ä½¿ç”¨iptables防火墙将squidçš?128端口的请求全部è{发到HTTPçš?0端口åQŒä»Žè€Œå®žçŽ°é€æ˜Žä»£ç†ã€?
2.6内核版本之上åQšæ–°ç‰ˆæœ¬çš„squid只需要修æ”ÒŽˆå¦‚下的内容即可。默认是“http_port 3128”åQŒè¦ž®†å…¶æ”¹äØ““http_port 3128 transparent”çš„åŞ式:
另外˜q˜è¦é…ç½®iptables防火å¢?br /> 在下面两个例子中åQŒä½œä¸ºé˜²ç«å¢™çš„æœåŠ¡å™¨æœ‰ä¸¤å—ç½‘å¡ï¼Œ˜qžæŽ¥Internetçš„eth0和连接内¾|‘çš„eth1åQŒåŒæ—‰™˜²ç«å¢™ä¹Ÿæ˜¯å†…网的网兟ë€?
如果Squid服务器和防火墙在一台服务器上,那么所有的HTTP80端口的请求将转发到Squid服务的配¾|®ç«¯å?128上ã€?
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i eth1 -p tcp --dport 3128
iptables -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o eth0 -p tcp --dport 80
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i eth0 -p tcp --sport 80
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -o eth1 -p tcp --sport 80
如果Squid服务器和防火墙在不同的服务器上,iptables的规则将有所不同åQ?
iptables -t nat -A PREROUTING -i eth1 -s ! 192.168.1.100 -p tcp --dport 80 -j DNAT --to 192.168.1.100:3128
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -d 192.168.1.100 -j SNAT --to 192.168.1.1
iptables -A FORWARD -s 192.168.1.0/24 -d 192.168.1.100 -i eth1 -o eth1 -m state
--state NEW,ESTABLISHED,RELATED -p tcp --dport 3128 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/24 -s 192.168.1.100 -i eth1 -o eth1 -m state --state ESTABLISHED,RELATED -p tcp --sport 3128 -j ACCEPT

Squid的密码验è¯?br /> 1åQ?创徏密码文äšg。密码和用户名存攑֜¨/etc/squid/squid_passwdæ–‡äšg中,òq‰™œ€è¦å°†˜q™ä¸ªæ–‡äšg的权限设¾|®äؓ其它用户只读ã€?
# touch /etc/squid/squid_passwd
# chmod o+r /etc/squid/squid_passwd
åQ?åQ‰ä‹É用htpasswdæ·ÕdŠ ç”¨æˆ·åQŒåƈ讄¡½®å¯†ç ã€‚添加用户不需要对squid˜q›è¡Œé‡å¯æ“ä½œåQŒæˆ‘创徏的用户名是www
# htpasswd /etc/squid/squid_passwd www
New password:
Re-type password for user www
#
åQ?åQ‰æ‰¾åˆ°ncsa_auth命ä×o的具体位¾|®ï¼ŒåŽé¢çš„配¾|®éœ€è¦ç”¨åˆ°ç»å¯¹èµ\å¾?
# which ncsa_auth
/usr/sbin/ncsa_auth
åQ?åQ?然后我们ž®Þp¦åœ¨squid.confæ–‡äšg中定义验证程序了åQŒåˆ›å»ºåä¸ºncsa_usersçš„ACLòq¶åР入关键字REQUIRED来强制让Squid使用NCSA验证æ–ÒŽ³•ã€?
#
# 在squid.confçš„auth_param部分æ·ÕdŠ ä¸‹åˆ—å†…å®¹
#
auth_param basic program /usr/sbin/ncsa_auth /etc/squid/squid_passwd

#
# ž®†ä»¥ä¸‹ACLæ·ÕdŠ åˆ°squid.confçš„ACL配置部分
#
acl ncsa_users proxy_auth REQUIRED

#
# ž®†è¿™äº›å†…å®ÒŽ·»åŠ åˆ°squid.confçš„http_access配置部分
#
http_access allow ncsa_users



saobaolu 2009-12-18 08:24 发表评论
]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÏÌÄþÊÐ| ¶¨ÈÕÏØ| ¶«ÑôÊÐ| ÓÀ²ýÏØ| ̨°²ÏØ| ÒåÂíÊÐ| »³ÈáÇø| ´ó·áÊÐ| ÐËÒåÊÐ| ТÒåÊÐ| Îå³£ÊÐ| ãëÉÏÏØ| ÁúÃÅÏØ| ²©°®ÏØ| ²ý¶¼ÏØ| ³ÎÂõÏØ| ½¨Ë®ÏØ| éŽ­ÏØ| °ÍÄÏÇø| äðºÓÊÐ| ³üÖÝÊÐ| Í©Â®ÏØ| ÉîÔóÏØ| Æ¤É½ÏØ| ÄϽ­ÏØ| ºþ¿ÚÏØ| Êè¸½ÏØ| ³çÒåÏØ| Ä«ÍÑÏØ| ÄÏͨÊÐ| À¶ÌïÏØ| ÏåÔ«ÏØ| ËçÄþÏØ| ÈøåÈÏØ| ¾ÅÁú³ÇÇø| ÅîÀ³ÊÐ| ÕѾõÏØ| ÓñÆÁ| ²ý½­| ¹±É½| ¹ÅÀËÏØ|