国产精品久久综合亚洲AV,刺激的乱亲小说43部分阅读 ,WWW夜插内射视频网站,护士做爰乱高潮全过程

中山php|最優(yōu)網(wǎng)絡(luò)中山做網(wǎng)站 中山php建站

最優(yōu)良人

2011/08/25 at 12:18

asyncbox異步彈出窗口,jq彈出層插件,可異步加載頁面

AsyncBox(異步盒子)是一款基于 jQuery 的彈窗插件。能夠?qū)崿F(xiàn)網(wǎng)站的整體風(fēng)格效果,給用戶一個(gè)新的視覺享受。主要模擬常用的 alert、confirm、prompt、open 和擴(kuò)展了一些對(duì)話框。它通過回調(diào)函數(shù)觸發(fā)事件動(dòng)作并執(zhí)行,使操作區(qū)域更加明了、統(tǒng)一。而且能夠在主流瀏覽器中靈活運(yùn)用。

介紹及下載地址 http://www.nnhuashi.com/asyncbox/index.html

實(shí)例:
$('#select-furns').click(function() {
asyncbox.open({
id: 'select-form',
title: $(this).val(),
url: 'index.php',
width: 700,
height: 400,
tipsbar: {
title: '操作提示',
content: '請(qǐng)先通過下方 <strong>篩選操作</strong>,篩選出你需要的家具。'
},
data: {
module: 'House_Furniture',
load: 'AjaxFurniture',
col_key: '<?php echo $_GET['col_key']; ?>',
lang: '<?php echo getLanguage(); ?>'
}
});
});
注意:如果通過a標(biāo)簽點(diǎn)擊彈出,如果a標(biāo)簽的href為javascript:;或javascript:void(0);在ie6下可能會(huì)產(chǎn)生阻斷,導(dǎo)致頁面無法打開
解決的方法是用href=#或者不用a標(biāo)簽
為了防止瀏覽器跳到頂部,可以加上onclick="return false;" ,或者可以用href=#click這樣的形式,這樣點(diǎn)擊的話如果有id=click的元素瀏覽器會(huì)定位到那里,如果沒有,則原地不動(dòng)

標(biāo)簽:,
comments Comments (20)    -
2011/08/25 at 11:58

解決jquery和prototype沖突,jquery和prototype共存的方法

今天遇到一個(gè)項(xiàng)目的修改,由于該項(xiàng)目之前是使用prototype框架,而我拿手的是使用jquery框架,但是又不想全部重寫原來的頁面效果,所以在頁面引入了jquery文件,但是發(fā)現(xiàn)原來的js效果消失了,這是因?yàn)樗麄児餐褂昧?這個(gè)對(duì)象,造成了重寫覆蓋,解決方法是重定義jquery的這個(gè)對(duì)象

首先在頁面最開頭引入jquery文件,一定要在prototype文件引入之前,然后緊接著重寫$

<script type="text/javascript" src="data/jquery.min.js"></script>
<script type="text/javascript">
var jQuery=$;
</script>

然后在后面運(yùn)用jquery時(shí)把原來使用$的地方全部換成jQuery就可以了

標(biāo)簽:,
comments Comments (251)    -
2011/08/24 at 23:53

php在windows主機(jī)或虛擬空間利用socket在線發(fā)送郵件

在linux虛擬主機(jī)下一般可以利用php的mail函數(shù)直接發(fā)郵件
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

但是在windows虛擬主機(jī)下則不能直接使用mail函數(shù),可以通過socket了,采用郵箱的smtp服務(wù)在線發(fā)送郵件(現(xiàn)在的163免費(fèi)郵箱一注冊(cè)就可以免費(fèi)使用這個(gè)服務(wù),并且默認(rèn)開通的),比較成熟的在線發(fā)送郵件類有php_mailer,功能很強(qiáng)大,不過下面介紹的是一個(gè)比較簡(jiǎn)單的socket郵件發(fā)送類,應(yīng)付一般的需求足夠了。

使用方法是:

require_once (dirname(__FILE__).'/email.class.php');//該類的代碼附在文章后面
//##########################################
$smtpserver = "smtp.163.com";//SMTP服務(wù)器
$smtpserverport =25;//SMTP服務(wù)器端口
$smtpusermail = "XXX@163.com";//SMTP服務(wù)器的用戶郵箱
$smtpemailto = "XXXXX@qq.com";//發(fā)送給誰
$smtpuser = "s_XXX";//SMTP服務(wù)器的用戶帳號(hào)
$smtppass = "aaa123456";//SMTP服務(wù)器的用戶密碼
$mailsubject = "收到用戶的產(chǎn)品詢價(jià)";//郵件主題
$mailbody = "用戶提交了產(chǎn)品詢價(jià),請(qǐng)登錄網(wǎng)站后臺(tái)查看!";//郵件內(nèi)容
$mailtype = "HTML";//郵件格式(HTML/TXT),TXT為文本郵件
//##########################################
$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//這里面的一個(gè)true是表示使用身份驗(yàn)證,否則不使用身份驗(yàn)證.
$smtp->debug = false;//是否顯示發(fā)送的調(diào)試信息
$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);

附簡(jiǎn)單的郵件發(fā)送類代碼

<?
class smtp
{
/* Public Variables */
var $smtp_port;
var $time_out;
var $host_name;
var $log_file;
var $relay_host;
var $debug;
var $auth;
var $user;
var $pass;

/* Private Variables */
var $sock;

/* Constractor */
function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass)
{
$this->debug = FALSE;
$this->smtp_port = $smtp_port;
$this->relay_host = $relay_host;
$this->time_out = 30; //is used in fsockopen()
#
$this->auth = $auth;//auth
$this->user = $user;
$this->pass = $pass;
#
$this->host_name = "localhost"; //is used in HELO command
$this->log_file ="";

$this->sock = FALSE;
}

/* Main Function */
function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "")
{
$mail_from = $this->get_address($this->strip_comment($from));
$body = ereg_replace("(^|(\r\n))(\\.)", "\\1.\\3", $body);
$header .= "MIME-Version:1.0\r\n";
if($mailtype=="HTML"){
$header .= "Content-Type:text/html\r\n";
}
$header .= "To: ".$to."\r\n";
if ($cc != "") {
$header .= "Cc: ".$cc."\r\n";
}
$header .= "From: $from<".$from.">\r\n";
$header .= "Subject: ".$subject."\r\n";
$header .= $additional_headers;
$header .= "Date: ".date("r")."\r\n";
$header .= "X-Mailer:By Redhat (PHP/".phpversion().")\r\n";
list($msec, $sec) = explode(" ", microtime());
$header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">\r\n";
$TO = explode(",", $this->strip_comment($to));

if ($cc != "") {
$TO = array_merge($TO, explode(",", $this->strip_comment($cc)));
}

if ($bcc != "") {
$TO = array_merge($TO, explode(",", $this->strip_comment($bcc)));
}

$sent = TRUE;
foreach ($TO as $rcpt_to) {
$rcpt_to = $this->get_address($rcpt_to);
if (!$this->smtp_sockopen($rcpt_to)) {
$this->log_write("Error: Cannot send email to ".$rcpt_to."\n");
$sent = FALSE;
continue;
}
if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) {
$this->log_write("E-mail has been sent to <".$rcpt_to.">\n");
} else {
$this->log_write("Error: Cannot send email to <".$rcpt_to.">\n");
$sent = FALSE;
}
fclose($this->sock);
$this->log_write("Disconnected from remote host\n");
}
//echo "<br>";
//echo $header;
return $sent;
}

/* Private Functions */

function smtp_send($helo, $from, $to, $header, $body = "")
{
if (!$this->smtp_putcmd("HELO", $helo)) {
return $this->smtp_error("sending HELO command");
}
#auth
if($this->auth){
if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) {
return $this->smtp_error("sending HELO command");
}

if (!$this->smtp_putcmd("", base64_encode($this->pass))) {
return $this->smtp_error("sending HELO command");
}
}
#
if (!$this->smtp_putcmd("MAIL", "FROM:<".$from.">")) {
return $this->smtp_error("sending MAIL FROM command");
}

if (!$this->smtp_putcmd("RCPT", "TO:<".$to.">")) {
return $this->smtp_error("sending RCPT TO command");
}

if (!$this->smtp_putcmd("DATA")) {
return $this->smtp_error("sending DATA command");
}

if (!$this->smtp_message($header, $body)) {
return $this->smtp_error("sending message");
}

if (!$this->smtp_eom()) {
return $this->smtp_error("sending <CR><LF>.<CR><LF> [EOM]");
}

if (!$this->smtp_putcmd("QUIT")) {
return $this->smtp_error("sending QUIT command");
}

return TRUE;
}

function smtp_sockopen($address)
{
if ($this->relay_host == "") {
return $this->smtp_sockopen_mx($address);
} else {
return $this->smtp_sockopen_relay();
}
}

function smtp_sockopen_relay()
{
$this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."\n");
$this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);
if (!($this->sock && $this->smtp_ok())) {
$this->log_write("Error: Cannot connenct to relay host ".$this->relay_host."\n");
$this->log_write("Error: ".$errstr." (".$errno.")\n");
return FALSE;
}
$this->log_write("Connected to relay host ".$this->relay_host."\n");
return TRUE;;
}

function smtp_sockopen_mx($address)
{
$domain = ereg_replace("^.+@([^@]+)$", "\\1", $address);
if (!@getmxrr($domain, $MXHOSTS)) {
$this->log_write("Error: Cannot resolve MX \"".$domain."\"\n");
return FALSE;
}
foreach ($MXHOSTS as $host) {
$this->log_write("Trying to ".$host.":".$this->smtp_port."\n");
$this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out);
if (!($this->sock && $this->smtp_ok())) {
$this->log_write("Warning: Cannot connect to mx host ".$host."\n");
$this->log_write("Error: ".$errstr." (".$errno.")\n");
continue;
}
$this->log_write("Connected to mx host ".$host."\n");
return TRUE;
}
$this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")\n");
return FALSE;
}

function smtp_message($header, $body)
{
fputs($this->sock, $header."\r\n".$body);
$this->smtp_debug("> ".str_replace("\r\n", "\n"."> ", $header."\n> ".$body."\n> "));

return TRUE;
}

function smtp_eom()
{
fputs($this->sock, "\r\n.\r\n");
$this->smtp_debug(". [EOM]\n");

return $this->smtp_ok();
}

function smtp_ok()
{
$response = str_replace("\r\n", "", fgets($this->sock, 512));
$this->smtp_debug($response."\n");

if (!ereg("^[23]", $response)) {
fputs($this->sock, "QUIT\r\n");
fgets($this->sock, 512);
$this->log_write("Error: Remote host returned \"".$response."\"\n");
return FALSE;
}
return TRUE;
}

function smtp_putcmd($cmd, $arg = "")
{
if ($arg != "") {
if($cmd=="") $cmd = $arg;
else $cmd = $cmd." ".$arg;
}

fputs($this->sock, $cmd."\r\n");
$this->smtp_debug("> ".$cmd."\n");

return $this->smtp_ok();
}

function smtp_error($string)
{
$this->log_write("Error: Error occurred while ".$string.".\n");
return FALSE;
}

function log_write($message)
{
$this->smtp_debug($message);

if ($this->log_file == "") {
return TRUE;
}

$message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message;
if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))) {
$this->smtp_debug("Warning: Cannot open log file \"".$this->log_file."\"\n");
return FALSE;
}
flock($fp, LOCK_EX);
fputs($fp, $message);
fclose($fp);

return TRUE;
}

function strip_comment($address)
{
$comment = "\\([^()]*\\)";
while (ereg($comment, $address)) {
$address = ereg_replace($comment, "", $address);
}

return $address;
}

function get_address($address)
{
$address = ereg_replace("([ \t\r\n])+", "", $address);
$address = ereg_replace("^.*<(.+)>.*$", "\\1", $address);

return $address;
}

function smtp_debug($message)
{
if ($this->debug) {
echo $message."<br>";
}
}

function get_attach_type($image_tag) { //

$filedata = array();

$img_file_con=fopen($image_tag,"r");
unset($image_data);
while ($tem_buffer=AddSlashes(fread($img_file_con,filesize($image_tag))))
$image_data.=$tem_buffer;
fclose($img_file_con);

$filedata['context'] = $image_data;
$filedata['filename']= basename($image_tag);
$extension=substr($image_tag,strrpos($image_tag,"."),strlen($image_tag)-strrpos($image_tag,"."));
switch($extension){
case ".gif":
$filedata['type'] = "image/gif";
break;
case ".gz":
$filedata['type'] = "application/x-gzip";
break;
case ".htm":
$filedata['type'] = "text/html";
break;
case ".html":
$filedata['type'] = "text/html";
break;
case ".jpg":
$filedata['type'] = "image/jpeg";
break;
case ".tar":
$filedata['type'] = "application/x-tar";
break;
case ".txt":
$filedata['type'] = "text/plain";
break;
case ".zip":
$filedata['type'] = "application/zip";
break;
default:
$filedata['type'] = "application/octet-stream";
break;
}
return $filedata;
}

}
?>

標(biāo)簽:,
2011/08/24 at 22:09

記錄一下網(wǎng)站百度谷歌的收錄情況,對(duì)比兩大搜索引擎的差別

網(wǎng)站上線19天,今天百度終于收錄了首頁,總算度過了這個(gè)漫長(zhǎng)的考核期,雖然網(wǎng)上一般說法是百度對(duì)新站會(huì)有一個(gè)月左右的考核期,現(xiàn)在這個(gè)時(shí)候收錄應(yīng)該算正常吧,接下來會(huì)不會(huì)像某些新站一樣很長(zhǎng)一段時(shí)間只收錄首頁就要繼續(xù)觀察了。

網(wǎng)站上線第二天,谷歌百度的蜘蛛就造訪了,谷歌很快就收錄并放出了抓到的頁面,百度就先抓取不顯示,剛開始兩條蜘蛛都非常勤快,百度蜘蛛最多一天爬300多次,谷歌蜘蛛3000多次,現(xiàn)在每天一般是前者100次,后者2000次這樣的頻率。

谷歌收錄頁面數(shù)量一直都是穩(wěn)定地增長(zhǎng),到昨天達(dá)到將近6000個(gè)頁面,并且谷歌給這個(gè)博客的權(quán)重還算比較高的,關(guān)鍵詞都能獲得比較好的排名,每天都會(huì)有不少ip是通過谷歌搜索技術(shù)問題過來的,并且谷歌對(duì)新文章的反應(yīng)速度極快,基本上發(fā)一篇新博文在兩三分鐘內(nèi)會(huì)被收錄并且放出來。

百度雖然也會(huì)比較快抓取新文章,但是就是不放出,在8月10號(hào)也就是10天前放出了通過ip抓取的首頁,然后就一直沒更新快照,前天我把ip都301到域名下來,那個(gè)應(yīng)該不會(huì)再更新了。

這期間沒有去做什么外鏈,只是在博客里面對(duì)百度做了一點(diǎn)小小的優(yōu)化,不知道對(duì)今天的收錄有沒有一點(diǎn)影響。

說實(shí)話我還是比較看重網(wǎng)站在百度的表現(xiàn),谷歌退出大陸之后,在市場(chǎng)份額方面已經(jīng)很難跟百度抗衡了,百度現(xiàn)在擁有中國(guó)大陸絕大部分的搜索流量,對(duì)網(wǎng)站的收錄情況直接影響到網(wǎng)站的訪問量。

標(biāo)簽:, , ,
comments Comments (294)    -
2011/08/23 at 14:13

htaccess在根目錄和子目錄下的執(zhí)行順序

如果在根目錄和子目錄下都存在htaccess文件,默認(rèn)根目錄下htaccess的規(guī)則是不會(huì)被繼承的,如果這些配置需要影響到子目錄,需要手動(dòng)寫上"RewriteOptions inherit"才能繼承父配置,參考上一篇 htaccess的用法 。

所以如果子目錄也要用到根目錄的配置規(guī)則,最好是重新定義,因?yàn)槿绻麊渭兊睦^承的話,根目錄htaccess里面的某些規(guī)則的路徑可能已經(jīng)不適用子目錄。

標(biāo)簽:
comments Comments (81)    -
2011/08/23 at 14:06

htaccess,apache下分布式配置文件的配置選項(xiàng)和flag標(biāo)簽

以下指命令的作用域都是.htaccess
RewriteEngine On|Off

RewriteEngine 可用On 或者 Off 打開或關(guān)閉rewrite功能。
rewrite configurations 不會(huì)繼承,所以你得給每個(gè)你想用 rewrite功能的virtual host加上這個(gè)指令。
RewriteBase URL-path

RewriteBase指令顯式地設(shè)置了目錄級(jí)重寫的基準(zhǔn)URL。在下文中,你可以看見RewriteRule可以用于目錄級(jí)的配置文件中 (.htaccess)并在局部范圍內(nèi)起作用,即規(guī)則實(shí)際處理的只是剝離了本地路徑前綴的一部分。處理結(jié)束后,這個(gè)路徑會(huì)被自動(dòng)地附著回去。默認(rèn)值是"RewriteBase physical-directory-path"。
在對(duì)一個(gè)新的URL進(jìn)行替換時(shí),此模塊必須把這個(gè)URL重新注入到服務(wù)器處理中。為此,它必須知道其對(duì)應(yīng)的URL前綴或者說URL基準(zhǔn)。通常,此前綴就是對(duì)應(yīng)的文件路徑。但是,大多數(shù)網(wǎng)站URL不是直接對(duì)應(yīng)于其物理文件路徑的,因而一般不能做這樣的假定! 所以在這種情況下,就必須用RewriteBase指令來指定正確的URL前綴。
如果你的網(wǎng)站服務(wù)器URL不是與物理文件路徑直接對(duì)應(yīng)的,而又需要使用RewriteBase指令,則必須在每個(gè)對(duì)應(yīng)的.htaccess文件中指定RewriteRule 。
RewriteCond TestString CondPattern

RewriteCond指令定義了一個(gè)規(guī)則的條件,即在一個(gè)RewriteRule指令之前有一個(gè)或多個(gè)RewriteCond指令。條件之后的重寫規(guī)則僅在當(dāng)前URI與pattern匹配并且符合這些條件的時(shí)候才會(huì)起作用。
Notice:All of these tests can also be prefixed by an exclamation mark ('!') to negate their meaning. 在正則表達(dá)式中,如果取反的話要用^,在這里需要用!號(hào)取反
RewriteOptions Options

Sets some special options for the rewrite engine.
設(shè)定一些特殊的選項(xiàng)給rewrite.
The Option string can be currently only one:inherit
inherit
此值強(qiáng)制當(dāng)前配置可以繼承其父配置。 在虛擬主機(jī)級(jí)配置中,它意味著主服務(wù)器的映射表、條件和規(guī)則可以被繼承。 在目錄級(jí)配置中,它意味著其父目錄的.htaccess中的條件和規(guī)則可以被繼承。
MaxRedirects=number
為了避免目錄級(jí)RewriteRule的無休止的內(nèi)部重定向, 在此類重定向和500內(nèi)部服務(wù)器錯(cuò)誤次數(shù)達(dá)到一個(gè)最大值的時(shí)候, mod_rewrite會(huì)停止對(duì)此請(qǐng)求的處理。 如果你確實(shí)需要對(duì)每個(gè)請(qǐng)求允許大于10次的內(nèi)部重定向,可以增大這個(gè)值。
This forces the current configuration to inherit the configuration of the parent.
強(qiáng)制當(dāng)前的配置繼承它parent的配置。
在per-virtual-server環(huán)境下,意味著maps, conditions , rules會(huì)被繼承!
在per-directory 環(huán)境下 意味著它父目錄的.htaccess配置中的conditions , rules 會(huì)被繼承!
RewriteRule Pattern Substitution [flags]

Text:
. 任何單字符
[chars] Character class: One of chars
[^chars] Character class: None of chars
text1|text2 兩者選一個(gè): text1 or text2

Quantifiers:量詞
? 0 or 1 of the 前面的 text
* 0 or N of the 前面的 text (N > 0)
+ 1 or N of the 前面的 text (N > 1)

Grouping:
(text) Grouping of text

可用$N來得到()中的內(nèi)容:
( (a|b) | (c|d))
$1 $2 $3

Anchors:
^ Start of line anchor
$ End of line anchor

Escaping:
\char escape that particular char
(for instance to specify the chars ".[]()" etc.)

注意:沒有并且&

=========================================================================================
flags

1.
'redirect|R [=code]' (強(qiáng)制重定向 redirect)
以http://thishost[:thisport]/(使新的URL成為一個(gè)URI) 為前綴的Substitution可以強(qiáng)制性執(zhí)行一個(gè)外部重定向。 如果code沒有指定,則產(chǎn)生一個(gè)HTTP響應(yīng)代碼302(臨時(shí)性移動(dòng))。 如果需要使用在300-400范圍內(nèi)的其他響應(yīng)代碼,只需在此指定這個(gè)數(shù)值即可, 另外,還可以使用下列符號(hào)名稱之一: temp (默認(rèn)的), permanent, seeother. 用它可以把規(guī)范化的URL反饋給客戶端,如, 重寫``/~''為 ``/u/'',或?qū)?u/user加上斜杠,等等。 注意: 在使用這個(gè)標(biāo)記時(shí),必須確保該替換字段是一個(gè)有效的URL! 否則,它會(huì)指向一個(gè)無效的位置! 并且要記住,此標(biāo)記本身只是對(duì)URL加上 http://thishost[:thisport]/的前綴,重寫操作仍然會(huì)繼續(xù)。 通常,你會(huì)希望停止重寫操作而立即重定向,則還需要使用'L'標(biāo)記.
2.
'forbidden|F' (強(qiáng)制URL為被禁止的 forbidden)
強(qiáng)制當(dāng)前URL為被禁止的,即,立即反饋一個(gè)HTTP響應(yīng)代碼403(被禁止的)。 使用這個(gè)標(biāo)記,可以鏈接若干RewriteConds以有條件地阻塞某些URL。
3.
'gone|G' (強(qiáng)制URL為已廢棄的 gone)
強(qiáng)制當(dāng)前URL為已廢棄的,即,立即反饋一個(gè)HTTP響應(yīng)代碼410(已廢棄的)。 使用這個(gè)標(biāo)記,可以標(biāo)明頁面已經(jīng)被廢棄而不存在了.
4.
'proxy|P' (強(qiáng)制為代理 proxy)
此標(biāo)記使替換成分被內(nèi)部地強(qiáng)制為代理請(qǐng)求,并立即(即, 重寫規(guī)則處理立即中斷)把處理移交給代理模塊。 你必須確保此替換串是一個(gè)有效的(比如常見的以 http://hostname開頭的)能夠?yàn)锳pache代理模塊所處理的URI。 使用這個(gè)標(biāo)記,可以把某些遠(yuǎn)程成分映射到本地服務(wù)器名稱空間, 從而增強(qiáng)了ProxyPass指令的功能。 注意: 要使用這個(gè)功能,代理模塊必須編譯在Apache服務(wù)器中。 如果你不能確定,可以檢查``httpd -l''的輸出中是否有mod_proxy.c。 如果有,則mod_rewrite可以使用這個(gè)功能; 如果沒有,則必須啟用mod_proxy并重新編譯``httpd''程序。
5.
'last|L' (最后一個(gè)規(guī)則 last)
立即停止重寫操作,并不再應(yīng)用其他重寫規(guī)則。 它對(duì)應(yīng)于Perl中的last命令或C語言中的break命令。 這個(gè)標(biāo)記可以阻止當(dāng)前已被重寫的URL為其后繼的規(guī)則所重寫。 舉例,使用它可以重寫根路徑的URL('/')為實(shí)際存在的URL, 比如, '/e/www/'.
6.
'next|N' (重新執(zhí)行 next round)
重新執(zhí)行重寫操作(從第一個(gè)規(guī)則重新開始). 這時(shí)再次進(jìn)行處理的URL已經(jīng)不是原始的URL了,而是經(jīng)最后一個(gè)重寫規(guī)則處理的URL。 它對(duì)應(yīng)于Perl中的next命令或C語言中的continue命令。 此標(biāo)記可以重新開始重寫操作,即, 立即回到循環(huán)的頭部。但是要小心,不要制造死循環(huán)!
7.
'chain|C' (與下一個(gè)規(guī)則相鏈接 chained)
此標(biāo)記使當(dāng)前規(guī)則與下一個(gè)(其本身又可以與其后繼規(guī)則相鏈接的, 并可以如此反復(fù)的)規(guī)則相鏈接。 它產(chǎn)生這樣一個(gè)效果: 如果一個(gè)規(guī)則被匹配,通常會(huì)繼續(xù)處理其后繼規(guī)則, 即,這個(gè)標(biāo)記不起作用;如果規(guī)則不能被匹配, 則其后繼的鏈接的規(guī)則會(huì)被忽略。比如,在執(zhí)行一個(gè)外部重定向時(shí), 對(duì)一個(gè)目錄級(jí)規(guī)則集,你可能需要?jiǎng)h除``.www'' (此處不應(yīng)該出現(xiàn)``.www''的)。
8.
'type|T=MIME-type' (強(qiáng)制MIME類型 type)
強(qiáng)制目標(biāo)文件的MIME類型為MIME-type。 比如,它可以用于模擬mod_alias中的ScriptAlias指令, 以內(nèi)部地強(qiáng)制被映射目錄中的所有文件的MIME類型為``application/x-httpd-cgi''.
9.
'nosubreq|NS' (僅用于不對(duì)內(nèi)部子請(qǐng)求進(jìn)行處理 no internal sub-request)
在當(dāng)前請(qǐng)求是一個(gè)內(nèi)部子請(qǐng)求時(shí),此標(biāo)記強(qiáng)制重寫引擎跳過該重寫規(guī)則。 比如,在mod_include試圖搜索可能的目錄默認(rèn)文件(index.xxx)時(shí), Apache會(huì)內(nèi)部地產(chǎn)生子請(qǐng)求。對(duì)子請(qǐng)求,它不一定有用的,而且如果整個(gè)規(guī)則集都起作用, 它甚至可能會(huì)引發(fā)錯(cuò)誤。所以,可以用這個(gè)標(biāo)記來排除某些規(guī)則。 根據(jù)你的需要遵循以下原則: 如果你使用了有CGI腳本的URL前綴,以強(qiáng)制它們由CGI腳本處理, 而對(duì)子請(qǐng)求處理的出錯(cuò)率(或者開銷)很高,在這種情況下,可以使用這個(gè)標(biāo)記。
10.
'nocase|NC' (忽略大小寫 no case)
它使Pattern忽略大小寫,即, 在Pattern與當(dāng)前URL匹配時(shí),'A-Z' 和'a-z'沒有區(qū)別。
11.
'qsappend|QSA' (追加請(qǐng)求串 query string append)
此標(biāo)記強(qiáng)制重寫引擎在已有的替換串中追加一個(gè)請(qǐng)求串,而不是簡(jiǎn)單的替換。 如果需要通過重寫規(guī)則在請(qǐng)求串中增加信息,就可以使用這個(gè)標(biāo)記。
12.
'noescape|NE' (在輸出中不對(duì)URI作轉(zhuǎn)義 no URI escaping)
此標(biāo)記阻止mod_rewrite對(duì)重寫結(jié)果應(yīng)用常規(guī)的URI轉(zhuǎn)義規(guī)則。 一般情況下,特殊字符(如'%', '$', ';'等)會(huì)被轉(zhuǎn)義為等值的十六進(jìn)制編碼。 此標(biāo)記可以阻止這樣的轉(zhuǎn)義,以允許百分號(hào)等符號(hào)出現(xiàn)在輸出中,如: RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]
可以使'/foo/zed'轉(zhuǎn)向到一個(gè)安全的請(qǐng)求'/bar?arg=P1=zed'.
13.
'passthrough|PT' (移交給下一個(gè)處理器 pass through)
此標(biāo)記強(qiáng)制重寫引擎將內(nèi)部結(jié)構(gòu)request_rec中的uri字段設(shè)置為 filename字段的值,它只是一個(gè)小修改,使之能對(duì)來自其他URI到文件名翻譯器的 Alias,ScriptAlias, Redirect 等指令的輸出進(jìn)行后續(xù)處理。舉一個(gè)能說明其含義的例子: 如果要通過mod_rewrite的重寫引擎重寫/abc為/def, 然后通過mod_alias使/def轉(zhuǎn)變?yōu)?ghi,可以這樣: RewriteRule ^/abc(.*) /def$1 [PT]
Alias /def /ghi
如果省略了PT標(biāo)記,雖然mod_rewrite運(yùn)作正常, 即, 作為一個(gè)使用API的URI到文件名翻譯器, 它可以重寫uri=/abc/...為filename=/def/..., 但是,后續(xù)的mod_alias在試圖作URI到文件名的翻譯時(shí),則會(huì)失效。
注意: 如果需要混合使用不同的包含URI到文件名翻譯器的模塊時(shí), 就必須使用這個(gè)標(biāo)記。混合使用mod_alias和mod_rewrite就是個(gè)典型的例子。

For Apache hackers
如果當(dāng)前Apache API除了URI到文件名hook之外,還有一個(gè)文件名到文件名的hook, 就不需要這個(gè)標(biāo)記了! 但是,如果沒有這樣一個(gè)hook,則此標(biāo)記是唯一的解決方案。 Apache Group討論過這個(gè)問題,并在Apache 2.0 版本中會(huì)增加這樣一個(gè)hook。
14.
'skip|S=num' (跳過后繼的規(guī)則 skip)
此標(biāo)記強(qiáng)制重寫引擎跳過當(dāng)前匹配規(guī)則后繼的num個(gè)規(guī)則。 它可以實(shí)現(xiàn)一個(gè)偽if-then-else的構(gòu)造: 最后一個(gè)規(guī)則是then從句,而被跳過的skip=N個(gè)規(guī)則是else從句. (它和'chain|C'標(biāo)記是不同的!)
15.
'env|E=VAR:VAL' (設(shè)置環(huán)境變量 environment variable)
此標(biāo)記使環(huán)境變量VAR的值為VAL, VAL可以包含可擴(kuò)展的反向引用的正則表達(dá)式$N和%N。 此標(biāo)記可以多次使用以設(shè)置多個(gè)變量。 這些變量可以在其后許多情況下被間接引用,但通常是在XSSI (via or CGI (如 $ENV{'VAR'})中, 也可以在后繼的RewriteCond指令的pattern中通過%{ENV:VAR}作引用。 使用它可以從URL中剝離并記住一些信息。
16.
'cookie|CO=NAME:VAL:domain[:lifetime[:path]]' (設(shè)置cookie)
它在客戶端瀏覽器上設(shè)置一個(gè)cookie。 cookie的名稱是NAME,其值是VAL。 domain字段是該cookie的域,比如'.apache.org', 可選的lifetime是cookie生命期的分鐘數(shù), 可選的path是cookie的路徑。

標(biāo)簽:,
comments Comments (100)    -
2011/08/20 at 14:54

PHP定界符EOT的用法

定界符:
另一種給字符串定界的方法使用定界符語法("<<<")。應(yīng)該在 <<< 之后提供一個(gè)標(biāo)識(shí)符,然后是字符串,然后是同樣的標(biāo)識(shí)符結(jié)束字符串。
結(jié)束標(biāo)識(shí)符必須從行的第一列開始。同樣,標(biāo)識(shí)符也必須遵循 PHP 中其它任何標(biāo)簽的命名規(guī)則:只能包含字母數(shù)字下劃線,而且必須以下劃線或非數(shù)字字符開始。

php 中(<<<eot)的用法

有時(shí)候我們需要在php輸出比較復(fù)雜的html文本,如果使用雙引號(hào)的話,文本里面有雙引號(hào)的

 

例:

<?php

while($rs=$db->fetch_array($news)){

echo <<<EOT

<li>

<a href="?{$rs[id]}">{$rs[title]}</a><img src="images/new.gif" alt=""><span>[{$rs[date]}]</span></li>

EOT; //注意,此處的EOT;必須在當(dāng)前行的最前,其前面不允許有任何字符

?>

從上面的例子可以看出<<<eot為開始標(biāo)識(shí),結(jié)束為eot; 中間引用變量則就為{變量} 這種方法通常用在生成靜態(tài)度頁面時(shí),可以把此代碼寫在靜態(tài)文件中,然后然后用來調(diào)用即可

定界符

給字符串定界的方法使用定界符語法("<<<")。應(yīng)該在 <<< 之后提供一個(gè)標(biāo)識(shí)符,然后是字符串,然后是同樣的標(biāo)識(shí)符結(jié)束字符串。

結(jié)束標(biāo)識(shí)符必須從行的第一列開始。同樣,標(biāo)識(shí)符也必須遵循 PHP 中其它任何標(biāo)簽的命名規(guī)則:只能包含字母數(shù)字下劃線,而且必須以下劃線或非數(shù)字字符開始。

舉個(gè)例子:

<?php

$str = <<<EOD

Example of string

spanning multiple lines

using heredoc syntax.

EOD;

?>

但要注意的是:

結(jié)束標(biāo)識(shí)符所在的行不能包含任何其它字符,可能除了一個(gè)分號(hào)(;)之外。這尤其意味著該標(biāo)識(shí)符不能被縮進(jìn),而且在分號(hào)之前和之后都不能有任何空格或制表符。同樣重要的是要意識(shí)到在結(jié)束標(biāo)識(shí)符之前的第一個(gè)字符必須是你的操作系統(tǒng)中定義的換行符。例如在 Macintosh 系統(tǒng)中是 \r。 如果破壞了這條規(guī)則使得結(jié)束標(biāo)識(shí)符不"干凈",則它不會(huì)被視為結(jié)束標(biāo)識(shí)符,PHP 將繼續(xù)尋找下去。如果在這種情況下找不到合適的結(jié)束標(biāo)識(shí)符,將會(huì)導(dǎo)致一個(gè)在腳本最后一行出現(xiàn)的語法錯(cuò)誤。

如下:

print <<<eot

eot;

中間可以放置變量的,如果是數(shù)組變量也是可以的。

假如數(shù)組

$arrTest=array("abc","123");

在eot之間可以用以下方式置入變量

"{$arrTest[0]}"

標(biāo)簽:,
comments Comments (120)    -
2011/08/19 at 23:37

wordpress防止百度收錄動(dòng)態(tài)鏈接,針對(duì)百度做SEO優(yōu)化

通過網(wǎng)站的服務(wù)器日志分析,百度經(jīng)常會(huì)先訪問博客文章的動(dòng)態(tài)頁,再被301重定向到固定鏈接,可能由于wordpress是國(guó)外的產(chǎn)物,沒有專門針對(duì)百度做seo,甚至連robots文件都沒有,今天主要做了以下優(yōu)化工作,過幾天看效果如何:

一,安裝wp的百度地圖插件:Baidu Sitemap Generator,生成網(wǎng)站地圖

插件使用方法:

1.在 http://www.tianchuangseo.com/wp-content/uploads/2010/09/baidu-sitemap-generator.zip 下載插件,安裝并激活。

2.點(diǎn)擊設(shè)置里面的 Baidu-Sitemap 選項(xiàng),即可看到設(shè)置界面,第一次使用你需要先激活配置。

3.然后點(diǎn)擊"更新 XML 文件"按鈕即可生成上述的 XML 文件和 Html 靜態(tài)頁面。

4.在你網(wǎng)站的合適位置加入這兩個(gè)鏈接即可。

二,添加robots.txt文件,文件內(nèi)容為:

User-agent: *
Disallow: /wp-
Allow: /wp-content/uploads/
Disallow: /?
Disallow: /feed
Disallow: /*/*/feed
Disallow: /trackback
Disallow: /*/*/trackback
Disallow: /index.php?
Disallow: /index.php/
Disallow: /*.php$
Disallow: /*.css$
Disallow: /date/
Sitemap: http://www.86956464.com/blog/sitemap_baidu.xml
Sitemap: http://www.86956464.com/blog/sitemap.html

三,在百度博客提交頁面提交了博客feed地址 http://ping.baidu.com/ping.html

四,設(shè)置wordrpess的自動(dòng)ping服務(wù)。登陸博客后臺(tái),選擇"設(shè)置"->"撰寫"功能模塊,在更新服務(wù)ping service那一欄填寫各個(gè)Ping中心地址保存即可。
百度博客的ping中心地址是:http://ping.baidu.com/ping/RPC2

我這邊添加的ping地址是:

http://rpc.pingomatic.com/

http://ping.baidu.com/ping/RPC2

http://blogsearch.google.com/ping/RPC2

http://api.my.yahoo.com/RPC2

http://api.my.yahoo.com/rss/ping

http://ping.feedburner.com

http://www.zhuaxia.com/rpc/server.php

http://www.xianguo.com/xmlrpc/ping.php

http://www.feedsky.com/api/RPC2

http://blog.iask.com/RPC2

http://ping.blog.qikoo.com/rpc2.php

http://rpc.technorati.com/rpc/ping

http://www.blogsdominicanos.com/ping/

標(biāo)簽:, ,
comments Comments (504)    -
2011/08/19 at 18:04

smarty使用date函數(shù)

smarty在模板上可以直接使用php自帶的函數(shù),甚至可以使用自定義的函數(shù),使用的方法是:

模板中調(diào)用變量時(shí),當(dāng)只有一個(gè)參數(shù)是,就直接{$str1|函數(shù)名},當(dāng)有函數(shù)有兩個(gè)參數(shù)時(shí),{第一個(gè)參數(shù)|函數(shù)名:第二個(gè)參數(shù)},當(dāng)有三個(gè)參數(shù)時(shí),{第一個(gè)參數(shù)|函數(shù)名:第二個(gè)參數(shù):第三個(gè)參數(shù)},,當(dāng)有4,5,,,參數(shù)時(shí),以此類推。

smarty使用date函數(shù)的用法是{{'Y-m-d'|date:$var}}

標(biāo)簽:
comments Comments (5)    -
2011/08/19 at 16:56

php時(shí)間日期函數(shù)date,getdate,strtotime,strftime,strptime,time,mktime,microtime匯總對(duì)比

date — 格式化一個(gè)本地時(shí)間/日期(把時(shí)間戳變成文本格式)
string date ( string $format [, int $timestamp ] )
timestamp 是可選的,默認(rèn)值為 time()。
$today = date("H:i:s"); // 17:16:17

getdate — 取得日期/時(shí)間信息(把時(shí)間戳的信息存到數(shù)組)
array getdate ([ int $timestamp ] )
<?php
$today = getdate();
print_r($today);
?>
返回
Array
(
[seconds] => 40
[minutes] => 58
[hours] => 21
[mday] => 17
[wday] => 2
[mon] => 6
[year] => 2003
[yday] => 167
[weekday] => Tuesday
[month] => June
[0] => 1055901520
)

strtotime — 將任何英文文本的日期時(shí)間描述解析為 Unix 時(shí)間戳 (把文本格式變成時(shí)間戳)
int strtotime ( string $time [, int $now ] )
函數(shù)預(yù)期接受一個(gè)包含美國(guó)英語日期格式的字符串并嘗試將其解析為 Unix 時(shí)間戳(自 January 1 1970 00:00:00 GMT 起的秒數(shù)),其值相對(duì)于 now 參數(shù)給出的時(shí)間,如果沒有提供此參數(shù)則用系統(tǒng)當(dāng)前時(shí)間。
<?php
echo strtotime("2011-9-9"), "\n";
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
strtotime的第一個(gè)參數(shù)可以是我們常見的英文時(shí)間格式,比如"2008-8-20"或"10 September 2000"等等。也可以是以參數(shù)now為基準(zhǔn)的時(shí)間描述,比如"+1 day"等等。

下面是后一種方式的可使用參數(shù)清單,其中"當(dāng)前時(shí)間"是指strtotime第二個(gè)參數(shù)now的值,默認(rèn)為當(dāng)前時(shí)間。

1. 月,日英文名及其常用縮寫清單:
january,february,march,april,may,june,july,august,september,sept,october,november,december,
sunday,monday,tuesday,tues,wednesday,wednes,thursday,thur,thurs,friday,saturday

2. 時(shí)間參數(shù)和祥細(xì)描述:
am: the time is before noon 上午
pm: the time is noon or later 下午
year: one year; for example, "next year" 年,比如"next year"代表明年
month: one month; for example, "last month" 月,比如"last month"代表上一月
fortnight: two weeks; for example, "a fortnight ago" 兩周,比如"a fortnight ago"代表兩周前
week: one week 周
day: a day 天
hour: an hour 小時(shí)
minute: a minute 分鐘
min: same as minute 同"minute"
second: a second 秒
sec: same as second 同"second"

3.相關(guān)和順序說明:
+n/-n:以當(dāng)前時(shí)間算,加個(gè)減指定的時(shí)間,比如"+1 hour"是指當(dāng)前時(shí)間加一小時(shí)
ago:time relative to now; such as "24 hours ago"  以當(dāng)前時(shí)間往前算,比如"24 hours ago"代表"24小時(shí)前"
tomorrow: 24 hours later than the current date and time 以當(dāng)前時(shí)間(包括日期和時(shí)間)為標(biāo)準(zhǔn),明天同一時(shí)間
yesterday: 24 hours earlier than the current date and time 以當(dāng)前時(shí)間(包括日期和時(shí)間)為標(biāo)準(zhǔn),昨天同一時(shí)間
today: the current date and time 當(dāng)前時(shí)間(包括日期和時(shí)間)
now: the current date and time 當(dāng)前時(shí)間(包括日期和時(shí)間)
last: modifier meaning "the preceding"; for example, "last tuesday" 代表"上一個(gè)",比如"last tuesday"代表"上周二同一時(shí)間"
this: the given time during the current day or the next occurrence of the given time; for example, "this 7am" gives the timestamp for 07:00 on the current day, while "this week" gives the timestamp for one week from the current time 當(dāng)天的指定時(shí)間或下面一個(gè)時(shí)間段的時(shí)間戳,比如"this 7am"給出當(dāng)天7:00的時(shí)間戳,而"this week"給出的是從當(dāng)前時(shí)間開始的一整周的時(shí)間戳,也就是當(dāng)前時(shí)間(經(jīng)本人測(cè)試:strtotime('this week')=strtotime('now'));
next: modifier meaning the current time value of the subject plus one; for example, "next hour" 當(dāng)前時(shí)間加上指定的時(shí)間,比如"next hour"是指當(dāng)前時(shí)間加上一小時(shí),即加3600

first: ordinal modifier, esp. for months; for example, "May first" (actually, it's just the same as next)
third: see first (note that there is no "second" for ordinality, since that would conflict with the second time value)
fourth: see first
fifth: see first
sixth: see first
seventh: see first
eighth: see first
ninth: see first
tenth: see first
eleventh: see first
twelfth: see first

4. 時(shí)區(qū)描述:
gmt: Greenwich Mean Time
ut: Coordinated Universal Time
utc: same as ut
wet: Western European Time
bst: British Summer Time
wat: West Africa Time
at: Azores Time
ast: Atlantic Standard Time
adt: Atlantic Daylight Time
est: Eastern Standard Time
edt: Eastern Daylight Time
cst: Central Standard Time
cdt: Central Daylight Time
mst: Mountain Standard Time
mdt: Mountain Daylight Time
pst: Pacific Standard Time
pdt: Pacific Daylight Time
yst: Yukon Standard Time
ydt: Yukon Daylight Time
hst: Hawaii Standard Time
hdt: Hawaii Daylight Time
cat: Central Alaska Time
akst: Alaska Standard Time
akdt: Alaska Daylight Time
ahst: Alaska-Hawaii Standard Time
nt: Nome Time
idlw: International Date Line West
cet: Central European Time
met: Middle European Time
mewt: Middle European Winter Time
mest: Middle European Summer Time
mesz: Middle European Summer Time
swt: Swedish Winter Time
sst: Swedish Summer Time
fwt: French Winter Time
fst: French Summer Time
eet: Eastern Europe Time, USSR Zone 1
bt: Baghdad Time, USSR Zone 2
zp4: USSR Zone 3
zp5: USSR Zone 4
zp6: USSR Zone 5
wast: West Australian Standard Time
wadt: West Australian Daylight Time
cct: China Coast Time, USSR Zone 7
jst: Japan Standard Time, USSR Zone 8
east: Eastern Australian Standard Time
eadt: Eastern Australian Daylight Time
gst: Guam Standard Time, USSR Zone 9
nzt: New Zealand Time
nzst: New Zealand Standard Time
nzdt: New Zealand Daylight Time
idle: International Date Line East

strftime — 根據(jù)區(qū)域設(shè)置格式化本地時(shí)間/日期 (把時(shí)間戳變成文本格式)
string strftime ( string $format [, int $timestamp ] )
strftime()工作的方式和date()沒有什么不同,除了特殊格式化字符的前面必須添加一個(gè)百分號(hào)%。
strftime()有兩個(gè)好處。第一個(gè)好處是如果你使用setlocale()函數(shù),你可以通過strftime得到相應(yīng)語言的月份的名稱。另外的一個(gè)好處是你可以將特別的日期和時(shí)間的格式化字符包含在你的字符串中。這同時(shí)也意味著無論你是否要學(xué)習(xí)date()函數(shù)的所有特殊格式化字符,你都必須學(xué)習(xí)一整套完全不同的格式化字符。
一般phper用date會(huì)比較順手吧。

strptime — 解析由 strftime() 生成的日期/時(shí)間 (把文本格式的日期信息存到數(shù)組)
array strptime ( string $date , string $format )
類似于date函數(shù)的getdate
<?php
$format = '%d/%m/%Y %H:%M:%S';
$strf = strftime($format);

echo "$strf\n";

print_r(strptime($strf, $format));
?>
輸出
03/10/2004 15:54:19

Array
(
[tm_sec] => 19
[tm_min] => 54
[tm_hour] => 15
[tm_mday] => 3
[tm_mon] => 9
[tm_year] => 104
[tm_wday] => 0
[tm_yday] => 276
[unparsed] =>
)

time — 返回當(dāng)前的 Unix 時(shí)間戳
int time ( void )

mktime — 取得一個(gè)日期的 Unix 時(shí)間戳
int mktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )
參數(shù)可以從右向左省略,任何省略的參數(shù)會(huì)被設(shè)置成本地日期和時(shí)間的當(dāng)前值,參數(shù)全部為空則與time()相同

microtime — 返回當(dāng)前 Unix 時(shí)間戳和微秒數(shù)
microtime() 當(dāng)前 Unix 時(shí)間戳以及微秒數(shù)。本函數(shù)僅在支持 gettimeofday() 系統(tǒng)調(diào)用的操作系統(tǒng)下可用。
如果調(diào)用時(shí)不帶可選參數(shù),本函數(shù)以 "msec sec" 的格式返回一個(gè)字符串,其中 sec 是自 Unix 紀(jì)元(0:00:00 January 1, 1970 GMT)起到現(xiàn)在的秒數(shù),msec 是微秒部分。字符串的兩部分都是以秒為單位返回的。
如果給出了 get_as_float 參數(shù)并且其值等價(jià)于 TRUE,microtime() 將返回一個(gè)浮點(diǎn)數(shù)。默認(rèn)為false
<?php
echo microtime(true);//1313743963.77
echo microtime(false);//0.10190200 1313744036
?>

標(biāo)簽:,
comments Comments (379)    -
东乌珠穆沁旗| 新干县| 南阳市| 泰州市| 延川县| 玉屏| 尚志市| 九台市| 建德市| 明光市| 方城县| 长葛市| 黑龙江省| 长宁区| 舞钢市| 无为县| 晋中市| 奎屯市| 米易县| 江西省| 肥乡县| 广南县| 永修县| 自贡市| 新平| 霍山县| 岑巩县| 东港市| 雅江县| 鄂尔多斯市| 甘泉县| 汪清县| 新密市| 揭西县| 丹巴县| 加查县| 礼泉县| 佛坪县| 永胜县| 洪雅县| 壤塘县|