PHP+MySQL+Dreamweaver整合教學(PHPMaker運用設計網站教學):快速設計網站與網頁
總教頭特別企畫【專業整合課程】比傳統的學習的還要快速與實用!


感謝您造訪 PHP程式設計+MySQL資料庫+Dreamweaver整合教學(PHPMaker運用設計網站教學)密訓基地。 你可進入教學詳細內容介紹頁面,詳細瞭解PHP程式設計+MySQL資料庫(PHPMaker運用設計網站教學)及相關技術維護影片教學(完整配套措施),馬上可以設計架站程式與PHP網頁,快速建立MySQL資料庫、自動生成PHP網頁。可對資料庫進行瀏覽、修改、查詢、加入和刪除(整合成我們需要的網站)。

要在網路上經營網站賺大錢,不能只會下載現有的程式來架站(自己設計才能完全符合專業的特殊需求),你不用死背PHP語法,更可以完全不用花錢用購買資料庫(PHPMySQL完全免費!)你可以透過技術學習,讓PHP程式網頁+網路資料庫+Dreamweaver整合教學→讓你快速成為:【動態網站程式設計專家→你能因此賺大錢】!

 PHP程式設計+MySQL資料庫+Dreamweaver整合教學(PHPMaker運用設計網站教學):

http://por.tw/php/new-E_learning/index.php


PHP程式設計+MySQL資料庫+Dreamweaver整合教學(PHPMaker運用教學)密訓基地  總教頭  敬上

瀏覽模式: 普通 | 列表

PHP程式設計時日期錯誤,PHPDate()出現錯誤的具體解決辦法

PHPDate()出現錯誤的具體解決辦法

PHPDate()出現錯誤對於新手來說是比較頭疼的一件事情。
我們給出了具體的解決方法,希望對大家有所說明。

我們在運用PHPDate()這個函數取得時間資料的時候,經常會遇到不準確等一系列問題。
下面我們將為大家具體講解PHPDate()出現錯誤的關聯解決辦法。


取得系統時間時,發現取得的時間與系統的時間不符。
今天用echo date("Y-m-dH:i:s")取得系統時間時,發現取得的時間與系統的時間不符。

PHP是外國人開發的,所以經常有很多東西不太好用。
研究了一番發現,PHP預設設定的時間是以格林威治時區為標準的,表現是和北京時間差8個小時,因此我們需要將其+8個小時,原理是我們正好位於時區的東8區,所以我們必須把PHP的時區設定改為台北時間。

PHPDate()出現錯誤的具體解決方法:

開啟PHP.ini檔案,一般在PHP的安裝根目錄下
找到其中的:date.timezone
刪掉date.timezone前面的分號,並改成:date.timezone=Asia/Taipei
存檔,並重新啟動Apahce服務(有時用Apache的restart功能會有問題,建議先stop然後再start)
重新檢驗一下echodate("Y-m-dH:i:s")。
是不是時間還原標準了
--------------------------------------------------------------------------------------
如果無法改動PHP.ini檔案,也可以在輸出時間之前使用date_default_timezone_set()設定時區

date_default_timezone_set('Asia/Shanghai');

函數date_default_timezone_set(timezone)與date_default_timezone_get()

以上就是PHPDate()出現錯誤的關聯解決方法。

--------------------------------------------------------------------------------------
調整時區

<?echo date("Y-m-d H:i:s",mktime (date(H)+15, date(i), date(s), date(m), date(d), date(Y)))?>
--------------------------------------------------------------------------------------

網站經營一陣子後,內容越來越多(MySql資料庫就會變成很大)
有些架站程式後台可以備份與還原(會自動分割)
所以網站的備份與還原當然沒有問題!
但是萬一你的網站或架站程式並沒有此功能時
您使用phpMyAdmin將MySQL資料庫匯出時當然沒有問題
但是當你要還原(匯入)時,可能就匯出現:MySql檔案過大無法匯入的窘境!
那該怎麼辦呢?


使用phpmyadmin匯出與匯入方式更換MySql Server時
若在匯入時遇到"你正嘗試上載大容量檔案,請查看此文件如何略過此限制"的訊息.這是因為匯入的檔超過限制。

-----------------------------------------------------------
總教頭教你解決的辦法如下:

下載BigDump這個軟體,下載網址:

http://www.ozerov.de/bigdump.zip

官方網址:http://www.ozerov.de/bigdump/

-----------------------------------------------------------

接下來自動將SQL檔案分割上傳:

1. 下載 BigDump
2. 在轉檔Server的Web根目錄下建立暫存目錄(例如:temp),解壓縮bigdump.php與將要匯入的sql檔放於該暫存目錄下
3. 修改bigdump.php檔案

$db_server = ""; //server位址,一般為 "localhost"
$db_name = "AAA"; //MySql資料庫名稱
$db_username = "BBB"; //MySql帳號
$db_password = "CCC"; //MySql密碼

4.匯入mysql檔案:  http://你的網站網址/temp(暫存檔目錄)/bigdump.php
-----------------------------------------------------------
若使用BigDump 後仍然發生 max_allowed_packet 問題

解決方法:

vi /etc/my.ini
在[mysqld]項下增加如下敘述
max_allowed_packet=64M

重新啟動 MySQL 即可大功告成!
-----------------------------------------------------------
標籤: mysql phpMyAdmin

如何避免使用php程式中的require_once語法?

如何避免使用php程式中的require_once語法?


我們知道,在php中使用require_once/include_once雖然方便,但是代價昂貴,據測試資料來看,require_once比require慢3-4倍,所以在php開發中,我們應該盡量使用require/include。

以下是筆者常用的避免require/include的方法。


使用__autoload

php5可以使用__autoload來避免require,用的好的話,代碼裡頭甚至看不到幾個require,實在是安逸啊。測試結果顯示,使用__autoload之後的new Foo; 比require_once 『foo.php』; new Foo; 大概要快3倍左右。

補充:為了避免autoload衝突,可以考慮使用spl_autoload_register(PHP 5 >= 5.1.2)來改變魔術函數__autoload的行為。

使用defined檢驗是否載入過

在代碼開頭使用defined檢驗是否定義過對應的常量,如果有的話,直接return。

<?php

if(!defined('_MYCLASS_'))

return;

define('_MYCLASS_', 1);

class MyClass { ... }

?>

測試了一下,defined的效能也不是太好…

require前檢查

用class_exists或是function_exists檢查一下,確認沒有載入過再出手,至少比require_once能快上3倍。php4也可以用上。

class_exists('myClass') or require('/path/to/myClass.class.php');

解決MySQL server has gone away的問題

解決MySQL server has gone away的問題

 
你是否曾遇見過 「MySql serverhas gone away」,一句讓人其實非常琢磨不透的錯誤訊息。

對這個問題請先別懷疑自己的代碼是否有問題,其實可能只不過是一個小小的設定問題。

我所碰到的情況就是,當你有大資料(資料大小大於1M)儲存到longblob欄位時,會出現這個問題。

起初也查了很久,是不是自己的代碼出錯,但使用的是PHP,不會向哪類編譯型語系有資料越界的可能,百思不得其解。

最終看了下mysql.ini,發現max_allowed_packet=1M,是不是這個預設設定值造成了此問題,把此設定值修改成max_allowed_packet=16M,問題真的解決了。

因此碰到此問題請先檢查自己的設定值是否有問題。

補充一句,不同版本的Mysql,此問題的錯誤訊息可能會不同。

Google PageRank PR值線上查詢php代碼

 在搜尋引擎排名SEO教學中,總教頭常提到Google PageRank PR值
那如何達成Google PageRank PR值線上查詢?其php代碼又該如何撰寫?


PR值全稱為PageRank.PageRank(網頁層級)是Google用於評測一個網頁重要性的一種方法。
在揉合了諸如Title標識和Keywords標識等所有其它因素之後

Google通過PageRank來調整結果.使那些更具重要性的網頁在搜尋結果中另網站排名獲得提升
從而提高搜尋結果的關聯性和質量.PR值最高為10.一般PR值達到4.就算是一個不錯的網站了

PageRank是google搜尋排名算法中的一個組成部分,層級從1到10級
10級為滿分PR值越高說明該網頁在搜尋排名中的地位越重要

也就是說,在其他條件相同的情況下,PR值高的網站在google搜尋結果的排名中有優先權。
---------------------------------------------
< ?php

// Edit this to your website url:
$myWebSite = http://www.mycodes.net;

define('GMAG', 0xE6359A60);

//unsigned shift right
function zeroFill($a, $b) {
$z = hexdec(80000000);

if ($z & $a) {
$a = ($a>>1);
$a &= (~$z);
$a |= 0x40000000;
$a = ($a>>($b-1));
} else {
$a = ($a>>$b);
}

return $a;
}


function mix($a,$b,$c) {

$a -= $b; $a -= $c; $a ^= (zeroFill($c,13));
$b -= $c; $b -= $a; $b ^= ($a< &lt;8);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,13));
$a -= $b; $a -= $c; $a ^= (zeroFill($c,12));
$b -= $c; $b -= $a; $b ^= ($a<&lt;16);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,5));
$a -= $b; $a -= $c; $a ^= (zeroFill($c,3));
$b -= $c; $b -= $a; $b ^= ($a<&lt;10);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,15));

return array($a,$b,$c);
}

function GCH($url, $length=null, $init=GMAG) {

if(is_null($length)) {
$length = sizeof($url);
}

$a = $b = 0x9E3779B9;
$c = $init;
$k = 0;
$len = $length;

while($len >= 12) {
$a += ($url[$k+0] +($url[$k+1]< &lt;8) +($url[$k+2]<&lt;16) +($url[$k+3]<&lt;24));
$b += ($url[$k+4] +($url[$k+5]<&lt;8) +($url[$k+6]<&lt;16) +($url[$k+7]<&lt;24));
$c += ($url[$k+8] +($url[$k+9]<&lt;8) +($url[$k+10]<&lt;16)+($url[$k+11]<&lt;24));
$mix = mix($a,$b,$c);
$a = $mix[0]; $b = $mix[1]; $c = $mix[2];
$k += 12;
$len -= 12;
}

$c += $length;

switch($len) {/* all the case statements fall through */
case 11: $c+=($url[$k+10]<&lt;24);
case 10: $c+=($url[$k+9]<&lt;16);
case 9 : $c+=($url[$k+8]<&lt;8);
/* the first byte of c is reserved for the length */
case 8 : $b+=($url[$k+7]<&lt;24);
case 7 : $b+=($url[$k+6]<&lt;16);
case 6 : $b+=($url[$k+5]<&lt;8);
case 5 : $b+=($url[$k+4]);
case 4 : $a+=($url[$k+3]<&lt;24);
case 3 : $a+=($url[$k+2]<&lt;16);
case 2 : $a+=($url[$k+1]<&lt;8);
case 1 : $a+=($url[$k+0]);
/* case 0: nothing left to add */
}

$mix = mix($a,$b,$c);
/*-------------------------------------------- report the result */
return $mix[2];
}

//converts a string into an array of integers containing the numeric value of the char
function strord($string) {

for($i=0;$i<strlen($string);$i++) {
$result[$i] = ord($string{$i});
}

return $result;
}

function getPR($_url) {

$url = 'info:'.$_url;
$ch = GCH(strord($url));
$url='info:'.urlencode($_url);
$pr = file("http://www.google.com/search?client=navclient-auto&ch=6$ch&ie=UTF-8&oe=UTF-8&features=Rank&q=$url");
$pr_str = implode("", $pr);

return substr($pr_str,strrpos($pr_str, ":")+1);
}

echo "<br>The PR of $myWebsite is: ".getPR($myWebSite);
?>
 
-----------------------------------------------------------

PHP下載CSS檔案中的圖片的代碼

您想要使用PHP程式語法下載CSS檔案中的圖片嗎?
我相信每個做web的程式員也都會有類似的需求與想法。

在PHP下載CSS檔案中的圖片過程中,必不可少的需要下載樣式檔案中的圖片。
碰到比較龐大的樣式檔案,其中可能會有上百個需要下載的圖片,那麼使用下面這段小代碼是最為合適的了。

--------------------------------------------------------------------
< ?php
/*
More & Original PHP Framwork
Copyright (c) 2007 - 2008 IsMole Inc.

Author: kimi
Documentation: 下載樣式檔案中的圖片,PHP下載CSS檔案中的圖片工具
*/

//note 設定PHP逾時時間
set_time_limit(0);

//note 取得樣式檔案內容
$styleFileContent = file_get_contents('images/style.css');

//note 符合出需要下載的URL位址
preg_match_all("/url((.*))/", $styleFileContent, $imagesURLArray);

//note 迴圈需要下載的位址,逐個下載
$imagesURLArray = array_unique($imagesURLArray[1]);
foreach($imagesURLArray as $imagesURL) {
file_put_contents(basename($imagesURL), file_get_contents($imagesURL));
}
-----------------------------------------------------

PHP網站如何防止CC攻擊呢?

PHP網站如何防止CC攻擊呢?

所謂的CC攻擊就是對方利用程式或一些代理對您的網站進行不間斷的訪問,造成您的網站處理不了而處於當機狀態。
這種時候您的統計系統(可能是量子、百度等)當然也是統計不到的。
不過我們可以借助於一些防攻擊的軟體來實現,不過效果有時並不明顯。
下面我提供一段PHP的代碼,可以起到一定的防CC效果。

主要功能:在3秒內連續重整頁面5次以上將指向本機 http://127.0.0.1

 attachments/201112/2027852462.png

使用PHP執行linux系統指令

如何使用PHP執行linux系統指令呢?
相信這是很多學員想知道答案!

首先先要給大家介紹PHP執行linux系統指令的幾個基本函數。

system函數

說明:執行外部程式並顯示輸出資料。
語法:string system(string command, int [return_var]);
返回值: 字串

詳細介紹:
本函數就像是 C 語中的函數 system(),用來執行指令,並輸出結果。若是 return_var 參數存在,則執行 command 之後的狀態會填入 return_var 中。同樣值得注意的是若需要處理使用者輸入的資料,而又要防止使用者耍花招破解系統,則可以使用 EscapeShellCmd()。若 PHP 以模組式的執行,本函數會在每一行輸出後自動更新 Web 伺服器的輸出緩衝暫存區。若需要完整的返回字串,且不想經由不必要的其它中間的輸出介面,可以使用 PassThru()。

案例代碼:
< ?php
$last_line = system('ls', $retval);
echo 'Last line of the output: ' . $last_line;
echo '<hr />Return value: ' . $retval;
?>

exec函數
說明:執行外部程式。
語法:string exec(string command, string [array], int [return_var]);
返回值: 字串

詳細介紹:
本函數執行輸入 command 的外部程式或外部指令。
它的返回字串只是外部程式執行後返回的最後一行;若需要完整的返回字串,可以使用 PassThru() 這個函數。

要是參數 array 存在,command 會將 array 加到參數中執行,若不欲 array 被處理,可以在執行 exec() 之前呼叫 unset()。
若是 return_var 跟 array 二個參數都存在,則執行 command 之後的狀態會填入 return_var 中。

值得注意的是若需要處理使用者輸入的資料,而又要防止使用者耍花招破解系統,則可以使用 EscapeShellCmd()。

案例代碼:
<?php
echo exec('whoami');
?>  

popen函數
說明:開啟檔案。
語法:int popen(string command, string mode);
返回值: 整數

詳細介紹:
本函數執行指令開檔,而該檔案是用管道模式處理的檔案。
用本函數開啟的檔案只能是單向的 (只能讀或只能寫),而且一定要用 pclose() 關閉。
在檔案操作上可使用 fgets()、fgetss() 與 fputs()。若是開檔發生錯誤,返回 false 值。

案例代碼:
<?
$fp = popen( "/bin/ls", "r" );
?>  

使用php程式的五個小技巧

使用php程式的五個小技巧
 
php程式的一些小技巧,這些比較基礎,總結一下(
如果你是老鳥那就當成複習吧)。

1. str_replace

str_replace是非常常常常常用的php函數,用於字串置換,經常看到某些php新人為了置換一批字串,寫了好多行str_replace,實在是慘不忍睹。

比如這個例子:

$str = '某人的棲息地 --- www.abc.net';

$str = str_replace('某人', '壞人', $str);

$str = str_replace('的', 'di', $str);

$str = str_replace('棲息地', '豬窩窩', $str);

$str = str_replace('www.abc.net', 'abc.net', $str);

以上,置換了4次字串,實際只要換個寫法,一行就搞定了:

$str = '某人的棲息地 --- www.abc.net';

$str = str_replace(array('某人', '的', '棲息地', 'www.abc.net'), array('壞人', 'di', '豬窩窩', 'abc.net'), $str);

 

2. array

經常看到有人拿陣列這樣寫:

echo $arr[some_key];

上面這行代碼能跑,看上去也沒什麼大問題,但是如果你把php.ini的error notice開啟的話,會收到一大批error。
php解析器首先是拿「some_key」當作一個常量來解釋的,但如果沒有定義some_key這樣一個常量,解析器還是很寬容的把它當作了一個字串來看待。
因此新人同學們最好寫完整一點:

echo $arr['some_key'];

這樣就沒有問題了,如果你要把它放在雙引號中連用,也不能省掉引號,可以這樣寫:

echo "這是混在雙引號中的字串{$arr['some_key']}";

 

3. 類型戲法

類型戲法相當好用,比如有一個表單送出過來的變量,標準情況下它應該是整型的,有時候偷懶省去校驗的寫法可以是這樣的:

$intVar = (int)$_POST['post_var'];

再比如陣列,有時候寫鍵值要打引號是不是很不爽啊,我們可以把它轉換成object,比如:

$arr = array('name' => 'volcano', 'sex' => 'male');

$arr = (object)$arr;

echo $arr->name;

echo $arr->sex;

是不是很省事?

 

4. lambda函數

lamda函數和array_*系列函數使用有奇效,拿php手冊上的一個例子來說:

<?php

$av = array("the ", "a ", "that ", "this ");

array_walk($av, create_function('&$v,$k', '$v = $v . "mango";'));

print_r($av);

?>

至少省了一個for迴圈

 

5. 嵌套迴圈顯示表格的單元格

嵌套迴圈顯示表格的單元格,這是一個很老的話題哦,往往會要在某個單元格後邊加個條件判斷什麼的,考慮是不是要輸出tr抑或是td標籤。

俺這裡介紹一個辦法,利用array_chunk函數能夠比較工整的輸出html,見下例,這個例子要輸出一個4行6列的表格:

<?php

$arr = range(1, 24); //這個會生成一個陣列array(1,2,3,4....24)

$arr = array_chunk($arr, 6);

// output table

?>

<table> <?php foreach($arr as $row): ?> <tr> <?php foreach($row as $col):?> <td><?php echo $col?></td> <?php endforeach;?> </tr> <?php endforeach;?> </table>

從 PHP 4 移植到 PHP 5需要注意的事項

從 PHP 4 移植到 PHP 5需要注意的事項

向後不相容的改變

儘管大部分 PHP 4 的代碼應該不用修改就能運行,還是應該留意以下向後不相容的改變:

    *

      有了一些新關鍵字。
    *

      strrpos() 和 strripos() 如今使用整個字串作為 needle。
    *

      非法使用字串偏移量會導致 E_ERROR 而不是 E_WARNING。一個非法使用的例子:$str = 'abc'; unset($str[0]);.
    *

      array_merge() 被改成只接受陣列。若果傳遞入非陣列變量,對每個此類參數都會發出一條 E_WARNING 訊息。要小心因為你的代碼有可能瘋狂發出 E_WARNING。
    *

      PATH_TRANSLATED 伺服器變量在 Apache2 SAPI 中不再暗中設定,這和 PHP 4 中的情形相反,若果 Apache 沒產生此值則其被設為和 SCRIPT_FILENAME 伺服器變量一樣的值。此修改是為了遵守 CGI 規範。更多訊息見 bug #23610,並參考手冊中 $_SERVER['PATH_TRANSLATED'] 的說明。此問題也影響到 PHP >= 4.3.2 的版本。
    *

      Tokenizer 增加不再定義 T_ML_COMMENT 常量。若果把 error_reporting 設為 E_ALL,PHP 將產生一條訊息。儘管 T_ML_COMMENT 從來都沒用到過,還是在 PHP 4 中定義了。在 PHP 4 和 PHP 5 中 // 和 /* */ 都被解析為 T_COMMENT 常量。但是 PHPDoc 風格的注解 /** */,自 PHP 5 開始被 PHP 解析,被識別為 T_DOC_COMMENT。
    *

      若果 variables_order 內含「S」,$_SERVER 應該帶有 argc 和 argv 被產生。若果會員特別配製系統不建立 $_SERVER,那此變量當然就不存在了。改變的地方是不管 variables_order 怎麼設定,在 CLI 版本中 argc 和 argv 總是可用的。本來 CLI 版不是總會產生全局變量 $argc 和 $argv 的。
    *

      沒有屬性的對象不再被當成「empty」。
    *

      有些情況下類必須在使用前被定義。這僅在使用了一些 PHP 5 的新特性的時候發生。其它情況下行為都沒變。
    *

      get_class(),get_parent_class() 和 get_class_methods() 如今返回的類/方法名和定義時的名字一致(區分大小寫),對於依賴以前行為(類/方法名總是返回小寫的)的老腳本可能產生問題。一個可能的解決方法是在腳本中搜尋所有這些函數並使用 strtolower()。

      區分大小寫的改變也適用於魔術常量 __CLASS__,__METHOD__ 和 __FUNCTION__。其值都會嚴格按照定義時的名字返回(區分大小寫)。
    *

      ip2long() 在傳遞入一個非法 IP 作為參數時返回 FALSE,不再是 -1。
    *

      若果在包括檔案中定義有函數,則不管在 return() 之前還是之後都可以在主檔案中呼叫。若果檔案被包括兩次,PHP 5 會發出致命錯誤,因為函數已經被定義,而 PHP 4 不管這個。因此推薦使用 include_once() 而不要去檢查檔案是否已被包括以及在包括檔案中有條件返回。
    *

      include_once() 和 require_once() 在 Windows 下先將路徑規格化,因此包括 A.php 和 a.php 只會把檔案包括一次。

例子 B-1. strrpos() 和 strripos() 如今用整個字串作為 needle
<?php
var_dump(strrpos('ABCDEF','DEF')); //int(3)

var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>

例子 B-2. 沒有屬性的對象不再被當成「empty」
<?php
class test { }
$t = new test();

var_dump(empty($t)); // echo bool(false)

if ($t) {
    // Will be executed
}
?>

例子 B-3. 有些情況下類必須在使用之前定義
<?php

//works with no errors:
$a = new a();
class a {
}


//throws an error:
$a = new b();

interface c{
}
class b implements c {
}

?>
本PHP程式設計+MySQL資料庫+Dreamweaver整合教學(PHPMaker運用設計網站教學)密訓基地立志於收集各類PHP程式設計、MySQL資料庫及網頁設計技術教學資訊,便於本人和廣大網友及網友查詢檢索,無論公司或個人認為本站存在侵權內容均可與本站聯繫,任何此類反饋資訊一經查明屬實後,將立即移除!