小箩莉末发育娇小性色xxxx,精品无码久久久久久久久水蜜桃,精品国产污污免费网站入口,中文在线а天堂中文在线新版

中山php|最優網絡中山做網站 中山php建站

最優良人

2011/08/13 at 18:04

php字符串首字母轉換大小寫

首字母變大寫:ucwords()

<?php
$foo = 'hello world!';
$foo = ucwords($foo); // Hello World!

$bar = 'HELLO WORLD!';
$bar = ucwords($bar); // HELLO WORLD!
$bar = ucwords(strtolower($bar)); // Hello World!
?>

第一個詞首字母變大寫:ucfirst()

<?php
$foo = 'hello world!';
$foo = ucfirst($foo); // Hello world!

$bar = 'HELLO WORLD!';
$bar = ucfirst($bar); // HELLO WORLD!
$bar = ucfirst(strtolower($bar)); // Hello world!
?>

第一個詞首字母小寫lcfirst()

<?php
$foo = 'HelloWorld';
$foo = lcfirst($foo); // helloWorld

$bar = 'HELLO WORLD!';
$bar = lcfirst($bar); // hELLO WORLD!
$bar = lcfirst(strtoupper($bar)); // hELLO WORLD!
?>

字母變大寫:strtoupper()

字母變小寫:strtolower()

標簽:,
comments Comments (19)    -
2011/08/13 at 12:44

Fleaphp 關閉日志服務

fleaphp框架日志服務開啟的時候回產生大量的日志文件,對于大部分寸土寸金的虛擬空間來說是個不小的壓力,只要重新定義一下'logEnabled'這個配置參數,改為false就可以關閉了

標簽:,
comments Comments (406)    -
2011/08/08 at 09:08

模仿蜘蛛抓取網站內容

function baiduSpider($url){
$ch = curl_init();
$user_agent = "Baiduspider+(+http://www.baidu.com/search/spider.htm)";//這里模擬的是百度蜘蛛
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $url);//這里寫一個來源地址,可以寫要抓的頁面的首頁
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
$temp=curl_exec($ch);
return $temp;
}
php必須開啟curl擴展,把$url換成可以寫要抓的頁面就可以了

comments Comments (6)    -
2011/08/07 at 16:29

Fleaphp訪問出錯返回404頁面的方法

配置文件里有項 : 'dispatcherFailedCallback' , 他用來設置當調度器失敗時調用的方法。
應用很靈活, 舉個例子, 當控制器或控制器動作不存在就跳到定制的404頁面。

FLEA::setAppInf('dispatcherFailedCallback', 'onDispatcherFailed');

function onDispatcherFailed

{

redirect('404.html');

}

 

dispatcherFailedCallback的配置分2種情況,如果當前訪問的控制器、動作不存:'dispatcherFailedCallback' => 'onDispatcherFailedCallback',
如果用戶設置了RABC訪問控制,訪問無法訪問的動作時:'dispatcherAuthFailedCallback' => 'onAuthFailedCallback',
上面onDispatcherFailedCallback、onAuthFailedCallback是出錯的時候調用的函數,你可以在index.php種定義這2個函數就OK了。
例如:
function onAuthFailedCallback($controller,$action)
{

redirect(url('Login','Index')); // 這里是驗證失敗時,讓用戶去登錄
}

標簽:,
comments Comments (414)    -
2011/08/07 at 02:10

PHP顯示客戶端IP與服務器IP

打印客戶端IP:echo $_SERVER['REMOTE_ADDR']; 或者: getenv('REMOTE_ADDR');

當時當客戶端使用代理訪問,那取到的是代理服務器的 IP 地址,而不是真正的客戶端 IP 地址。所以比較準確的獲取客戶ip的方法是:

function getip(){
if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')){
$ip = getenv('HTTP_CLIENT_IP');
}else if (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')){
$ip = getenv('HTTP_X_FORWARDED_FOR');
}else if (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')){
$ip = getenv('REMOTE_ADDR');
}else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')){
$ip = $_SERVER['REMOTE_ADDR'];
}
preg_match("/[\d\.]{7,15}/", $ip, $temp);
$ip = $temp[0] ? $temp[0] : 'unknown';
unset($temp);
return $ip;
}

打印服務器IP:echo gethostbyname(www.baidu.com);

打印服務器IP列表:echo gethostbynamel(www.baidu.com);

通過ip地址獲取主機名:$hostname = gethostbyaddr('58.62.246.55');

標簽:, ,
comments Comments (433)    -
2011/08/07 at 02:08

關于域名的一些常用設置的說明

建站名詞解釋:DNS A記錄 NS記錄 MX記錄 CNAME記錄 TXT記錄 TTL值 PTR值 泛域名 泛解析 域名綁定 域名轉向

1. DNS
DNS:Domain Name System 域名管理系統 域名是由圓點分開一串單詞或縮寫組成的,每一個域名都對應一個惟一的IP地址,這一命名的方法或這樣管理域名的系統叫做域名管理系統。
DNS:Domain Name Server 域名服務器 域名雖然便于人們記憶,但網絡中的計算機之間只能互相認識IP地址,它們之間的轉換工作稱為域名解析,域名解析需要由專門的域名解析服務器來完成,DNS 就是進行域名解析的服務器。
查看DNS更詳細的解釋

2. A記錄
A (Address)記錄是用來指定主機名(或域名)對應的IP地址記錄。用戶可以將該域名下的網站服務器指向到自己的web server上。同時也可以設置域名的子域名。通俗來說A記錄就是服務器的IP,域名綁定A記錄就是告訴DNS,當你輸入域名的時候給你引導向設置在DNS的A記錄所對應的服務器。
簡單的說,A記錄是指定域名對應的IP地址。

3. NS記錄
NS(Name Server)記錄是域名服務器記錄,用來指定該域名由哪個DNS服務器來進行解析。
您注冊域名時,總有默認的DNS服務器,每個注冊的域名都是由一個DNS域名服務器來進行解析的,DNS服務器NS記錄地址一般以以下的形式出現:
ns1.domain.com、ns2.domain.com等。
簡單的說,NS記錄是指定由哪個DNS服務器解析你的域名。

4. MX記錄
MX(Mail Exchanger)記錄是郵件交換記錄,它指向一個郵件服務器,用于電子郵件系統發郵件時根據收信人的地址后綴來定位郵件服務器。例如,當Internet上的某用戶要發一封信給 user@mydomain.com 時,該用戶的郵件系統通過DNS查找mydomain.com這個域名的MX記錄,如果MX記錄存在, 用戶計算機就將郵件發送到MX記錄所指定的郵件服務器上。

5. CNAME記錄
CNAME(Canonical Name )別名記錄,允許您將多個名字映射到同一臺計算機。通常用于同時提供WWW和MAIL服務的計算機。例如,有一臺計算機名為"host.mydomain.com"(A記錄),它同時提供WWW和MAIL服務,為了便于用戶訪問服務。可以為該計算機設置兩個別名(CNAME):WWW和MAIL, 這兩個別名的全稱就"www.mydomain.com"和"mail.mydomain.com",實際上他們都指向 "host.mydomain.com"。

6. TXT記錄
TXT記錄,一般指某個主機名或域名的說明,如:admin IN TXT "管理員, 電話:XXXXXXXXXXX",mail IN TXT "郵件主機,存放在xxx , 管理人:AAA",Jim IN TXT "contact: abc@mailserver.com",也就是您可以設置 TXT 內容以便使別人聯系到您。

TXT的應用之一,SPF(Sender Policy Framework)反垃圾郵件。SPF是跟DNS相關的一項技術,它的內容寫在DNS的TXT類型的記錄里面。MX記錄的作用是給寄信者指明某個域名的郵件服務器有哪些。SPF的作用跟MX相反,它向收信者表明,哪些郵件服務器是經過某個域名認可會發送郵件的。SPF的作用主要是反垃圾郵件,主要針對那些發信人偽造域名的垃圾郵件。例如:當郵件服務器收到自稱發件人是spam@gmail.com的郵件,那么到底它是不是真的gmail.com的郵件服務器發過來的呢,我們可以查詢gmail.com的SPF記錄,以此防止別人偽造你來發郵件。

7. TTL值
TTL(Time-To-Live)原理:TTL是IP協議包中的一個值,它告訴網絡路由器包在網絡中的時間是否太長而應被丟棄。有很多原因使包在一定時間內不能被傳遞到目的地。例如,不正確的路由表可能導致包的無限循環。一個解決方法就是在一段時間后丟棄這個包,然后給發送者一個報文,由發送者決定是否要重發。TTL的初值通常是系統缺省值,是包頭中的8位的域。TTL的最初設想是確定一個時間范圍,超過此時間就把包丟棄。由于每個路由器都至少要把TTL域減一,TTL通常表示包在被丟棄前最多能經過的路由器個數。當記數到0時,路由器決定丟棄該包,并發送一個ICMP報文給最初的發送者。

簡單的說,TTL就是一條域名解析記錄在DNS服務器中的存留時間。當各地的DNS服務器接受到解析請求時,就會向域名指定的NS服務器發出解析請求從而獲得解析記錄;在獲得這個記錄之后,記錄會在DNS服務器中保存一段時間,這段時間內如果再接到這個域名的解析請求,DNS服務器將不再向NS服務器發出請求,而是直接返回剛才獲得的記錄,而這個記錄在DNS服務器上保留的時間,就是TTL值。

TTL值設置的應用:
一是增大TTL值,以節約域名解析時間,給網站訪問加速。
一般情況下,域名的各種記錄是極少更改的,很可能幾個月、幾年內都不會有什么變化。我們完全可以增大域名記錄的TTL值讓記錄在各地DNS服務器中緩存的時間加長,這樣在更長的一段時間內,我們訪問這個網站時,本地ISP的DNS服務器就不需要向域名的NS服務器發出解析請求,而直接從緩存中返回域名解析記錄。
二是減小TTL值,減少更換空間時的不可訪問時間。
更換空間99.9%會有DNS記錄更改的問題,因為緩存的問題,新的域名記錄在有的地方可能生效了,但在有的地方可能等上一兩天甚至更久才生效。結果就是有的人可能訪問到了新服務器,有的人訪問到了舊服務器。僅僅是訪問的話,這也不是什么大問題,但如果涉及到了郵件發送,這個就有點麻煩了,說不定哪封重要信件就被發送到了那已經停掉的舊服務器上。
為了盡可能的減小這個各地的解析時間差,合理的做法是:
第一步,先查看域名當前的TTL值,我們假定是1天。
第二步,修改TTL值為可設定的最小值,可能的話,建議為1分鐘,就是60。
第三步,等待一天,保證各地的DNS服務器緩存都過期并更新了記錄。
第四步,設置修改新記錄,這個時候各地的DNS就能以最快的速度更新到新的記錄。
第五步,確認各地的DNS已經更新完成后,把TTL值設置成您想要的值。

一般操作系統的默認TTL值如下:
TTL=32 Windows 9x/Me
TTL=64 LINUX
TTL=128 Windows 200x/XP
TTL=255 Unix

8. PTR值
PTR是pointer的簡寫,用于將一個IP地址映射到對應的域名,也可以看成是A記錄的反向,IP地址的反向解析。
PTR主要用于郵件服務器,比如郵箱AAA@XXX.com給郵箱BBB@yahoo.com發了一封郵件,yahoo郵件服務器接到郵件時會查看這封郵件的頭文件,并分析是由哪個IP地址發出來的,然后根據這個IP地址進行反向解析,如果解析結果對應XXX.com的IP地址就接受這封郵件,反之則拒絕接收這封郵件。

9. 泛域名與泛解析
泛域名是指在一個域名根下,以 *.Domain.com的形式表示這個域名根所有未建立的子域名。
泛解析是把*.Domain.com的A記錄解析到某個IP 地址上,通過訪問任意的前綴.domain.com都能訪問到你解析的站點上。

10. 域名綁定
域名綁定是指將域名指向服務器IP的操作。

11. 域名轉向
域名轉向又稱為域名指向或域名轉發,當用戶地址欄中輸入您的域名時,將會自動跳轉到您所指定的另一個域名。一般是使用短的好記的域名轉向復雜難記的域名。

標簽:
comments Comments (108)    -
2011/08/07 at 02:07

PHP static靜態變量

什么是static靜態變量?

靜態變量 類型說明符是static。

靜態變量屬于靜態存儲方式,其存儲空間為內存中的靜態數據區(在靜態存儲區內分配存儲單元),該區域中的數據在整個程序的運行期間一直占用這些存儲空間(在程序整個運行期間都不釋放),也可以認為是其內存地址不變,直到整個程序運行結束(相反,而auto自動變量,即動態局部變量,屬于動態存儲類別,占動態存儲空間,函數調用結束后即釋放)。靜態變量雖在程序的整個執行過程中始終存在,但是在它作用域之外不能使用。

另外,屬于靜態存儲方式的量不一定就是靜態變量。 例如:外部變量(在PHP中指全局變量)雖屬于靜態存儲方式,但不一定是靜態變量,必須由 static加以定義后才能成為靜態外部變量,或稱靜態全局變量。

所有的全局變量都是靜態變量,而局部變量只有定義時加上類型修飾符static,才為局部靜態變量。

靜態變量可以在任何可以申請的地方申請,一旦申請成功后,它將不再接受其他的同樣申請。

靜態變量并不是說其就不能改變值,不能改變值的量叫常量。 其擁有的值是可變的 ,而且它會保持最新的值。說其靜態,是因為它不會隨著函數的調用和退出而發生變化。即上次調用函數的時候,如果我們給靜態變量賦予某個值的話,下次函數調用時,這個值保持不變。

一、靜態局部變量:

1、Static類內部變量同auto自動變量(即未加 Static 聲明的局部變量)一樣,是某個特定函數的局部變量,即只能在定義該變量的函數內使用該變量,2者作用域相同;兩者的不同在于:auto自動變量會隨著函數被調用和退出而存在和消失,而static類局部變量不會,它不管其所在的函數是否被調用,都將一直存在;不過,盡管該變量還繼續存在,但不能使用它。倘若再次調用定義它的函數時,它又可繼續使用,而且保存了前次被調用后留下的值。換言之,Static類型的內部變量是一種只能在某個特定函數中使用,但一直占據存儲空間的變量。

2、函數體內如果在定義靜態變量的同時進行了初始化,則以后程序不再進行初始化操作(出現在函數內部的基本類型的的靜態變量初始化語句只有在第一次調用才執行)。而對自動變量賦初值是在函數調用時進行,每調用一次函數重新給一次初值,相當于執行一次賦值語句。

3、靜態局部變量的初始化表達式必須是一個常量或者常量表達式。即使局部靜態變量定義時沒有賦初值,系統會自動賦初值0(對數值型變量)或空字符(對字符變量);靜態變量的初始值為0。而對自動變量auto來說,如果不賦初值則它的值將是個不確定的值。

4、當多次調用一個函數且要求在調用之間保留某些變量的值時,可考慮采用靜態局部變量。雖然用全局變量也可以達到上述目的,但全局變量有時會造成意外的副作用,因此仍以采用局部靜態變量為宜。

注:局部靜態變量占用內存時間較長,并且可讀性差,因此,除非必要,盡量避免使用局部靜態變量。

二、靜態全局變量

全局變量(外部變量)的說明之前再冠以static 就構成了靜態的全局變量。
全局變量本身就是靜態存儲方式,靜態全局變量當然也是靜態存儲方式。
這兩者在存儲方式上并無不同。

這兩者的區別雖在于:
1、非靜態全局變量的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。
2、靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效,在同一源程序的其它源文件中不能使用它。

從以上分析可以看出————
把局部變量改變為靜態變量后是改變了它的存儲方式,即改變了它的生存期。
把全局變量改變為靜態變量后是改變了它的作用域,限制了它的使用范圍。static靜態變量會被放在程序的全局存儲區中(即在程序的全局數據區,而不是在堆棧中分配,所以不會導致堆棧溢出),這樣可以在下一次調用的時候還可以保持原來的賦值。這一點是它與堆棧變量和堆變量的區別。

三應用于PHP中

//--------------如何理解static靜態變量-----------。
//普通局部變量
function local(){
$loc = 0; //這樣,如果直接不給初值0是錯誤的。
++$loc;
echo $loc.'<br>';
}
local(); //1
local(); //1
local(); //1
echo '===================================<br/>';
//static靜態局部變量
function static_local(){
static $local = 0 ; //此處可以不賦0值
$local++;
echo $local.'<br>';
}
static_local(); //1
static_local(); //2
static_local(); //3
//echo $local; 注意雖然靜態變量,但是它仍然是局部的,在外不能直接訪問的。
echo '=======================================<br>';
//static靜態全局變量(實際上:全局變量本身就是靜態存儲方式,所有的全局變量都是靜態變量)
function static_global(){
global $glo; //此處,可以不賦值0,當然賦值0,后每次調用時其值都為0,每次調用函數得到的值都會是1,但是不能想當然的寫上"static"加以修飾,那樣是錯誤的.
$glo++;
echo $glo.'<br>';
}
static_global(); //1
static_global(); //2
static_global(); //3

標簽:
comments Comments (330)    -
2011/08/07 at 02:01

php過濾敏感字符的一些相關函數--魔法函數應用

一,首先,先來看一下php.ini的兩個配置參數

magic_quotes_gpc "1" PHP_INI_PERDIR PHP_INI_ALL in PHP <= 4.2.3. Removed in PHP 6.0.0.

作用范圍是:WEB客戶服務端;
作用時間:請求開始是,例如當腳本運行時

magic_quotes_runtime "0" PHP_INI_ALL Removed in PHP 6.0.0.

作用范圍是:影響從文件中讀取的數據或從數據庫查詢得到的數據。

以下是一些常用到的方法:

get_magic_quotes_gpc(void)

本函數取得 PHP 環境配置的變量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。

  返回 0 表示關閉本功能;

  返回 1 表示本功能打開。

  當 magic_quotes_gpc 打開時,所有的 ' (單引號), " (雙引號), \ (反斜線) and 空字符會自動轉為含有反斜線的溢出字符。

應用:

由于該參數不支持在php文件進行設置,如果通過本函數取得的變量magic_quotes_gpc 的值為false,我們可以
利用addslashes()人工使用反斜線引用字符串

$var = get_magic_quotes_gpc()?$var:addslashes($var);

相反,如果通過本函數取得的變量magic_quotes_gpc 的值為true,我們希望字符串不被轉義,那么可以利用stripslashes()去除自動添加的反斜杠

get_magic_quotes_runtime()

一般情況下,應當將其關閉,否則從數據庫讀取出來的數據單引號、雙引號和反斜杠都會被加上\,導致顯示不正常。像Discuz,PHPWind都在公共文件的頭部加上一句

set_magic_quotes_runtime(0)

// Check if magic_quotes_runtime is active
if(get_magic_quotes_runtime())
{
// Deactive
set_magic_quotes_runtime(false);
}

二、對于magic_quotes_runtime,我們統一關閉它,即set_magic_quotes_runtime(0);不讓從數據庫讀取出來的數據的單引號、雙引號和反斜杠都自動被加上\。這樣,對數據庫的操作如下:添加數據到數據庫之前,我們手動對數據進行addslashes(),而從數據庫取出數據時,則作相反操作,即stripslashes()。

三、對于要序列化的內容,要保持裸數據,即要去掉轉義,stripslashes(),然后在把序列化過的內容保存到數據庫當中(注意,序列化過的內容是不帶單引號(')、雙引號(")、反斜線(\)的),示例如下:

$feedarr['body_data'] = serialize(stripslashes($body_data));

標簽:,
comments Comments (345)    -
2011/08/07 at 01:42

Apache 配置虛擬服務器

1,修改本機的hosts文件,如下:  
示例:
127.0.0.1 localhost
127.0.0.1 www.test.com
127.0.0.1 test.com

2,打開Apache的安裝目錄,找到httpd.conf文件,分別去掉下面兩行文字前面的#號。  
#LoadModule vhost_alias_module modules/mod_vhost_alias.so   
去掉#意思是啟用apache的虛擬主機功能。  
#Include conf/extra/httpd-vhosts.conf  
去掉這一行的#意思是從conf/extra/httpd-vhosts.conf這個文件導入虛擬主機配置。

3,打開extra目錄內的httpd-vhosts.conf文件,把默認的配置


ServerAdmin webmaster@dummy-host.localhost
DocumentRoot "/www/docs/dummy-host.localhost"
ServerName dummy-host.localhost
ServerAlias www.dummy-host.localhost
ErrorLog "logs/dummy-host.localhost-error_log"
CustomLog "logs/dummy-host.localhost-access_log common"


ServerAdmin webmaster@dummy-host2.localhost
DocumentRoot "/www/docs/dummy-host2.localhost"
ServerName dummy-host2.localhost
ErrorLog "logs/dummy-host2.localhost-error_log"
CustomLog "logs/dummy-host2.localhost-access_log common"

改成自己想要的目錄和域名


ServerAdmin webmaster@dummy-host.localhost
DocumentRoot "D:/wamp/www/"
ServerName localhost
ServerAlias localhost
ErrorLog "logs/localhost-error_log"


ServerAdmin webmaster@dummy-host.localhost
DocumentRoot "D:/wamp/www/web/"
ServerName test.com (填主域名)
ServerAlias *.test.com (這里的服務器別名可以支持泛解析)
ErrorLog "logs/localhost-error_log"

如果 弄完之后 出現403錯誤 那 在httpd.conf里找到:

Options FollowSymLinks ExecCGI Indexes
AllowOverride None
Order deny,allow
Deny from all
Satisfy all

更改為

Options FollowSymLinks ExecCGI Indexes
AllowOverride None
# Order deny,allow
# Deny from all
# Satisfy all

標簽:,
comments Comments (20)    -
2011/08/06 at 12:04

使用wordpress文章快速發布功能

wordpress后臺自帶文章快速發布功能這一功能,點控制板-工具-快速發布,將快速發布加入瀏覽器書簽或是收藏夾即可。

如果使用的是Firefox,直接加入了書簽即可,IE瀏覽器用戶需要注意的是,加入收藏以后,點擊會被攔截,需設置兩個地方:

打開internet選項-》隱私

1設置允許彈出窗口

2將你的網站加入信任列表或者將安全級別調到最低(很容易中毒哦)

如果安裝google工具條或是百度工具條的話也需要設置一下,允許你網站的彈出窗口。

這樣設置好以后,在其他網頁看到有用的信息,只有復制,然后點擊收藏夾快速發布的鏈接,輸入用戶名密碼,所復制的內容就已經在編輯器里面了,直接點擊發布即可。

標簽:,
comments Comments (491)    -