[轉貼]PHP include_path設置技巧分享

get_include_path取得当前已有的环境变量

 

include_path的设置
第一种方法:

修改php.ini文件中的include_path项。
include_path = .:/usr/local/lib/php:./include
第二个方法:

使用ini_set方法。
ini_set(“include_path”, “.:../:./include:../include”);

 

來源 : http://www.jb51.net/article/27572.htm

[轉貼]用Google excel 監控你的主機是否正常運作

[轉貼]用Google試算表監控你的主機是否正常運作

也就是去下載一份人家寫好的 Google 雲端硬碟的「試算表」為副本,透過這份文件(使用 Google Script),來監控你的主機是否正常運作中。

這功能每5 分鐘偵測一次,若是你的主機運作不正常,系統會發出電子郵件或簡訊通知你。

閱讀全文〈[轉貼]用Google excel 監控你的主機是否正常運作〉

[轉貼]apache log 紀錄檔 有效分割紀錄方式

[轉貼]apache log 紀錄檔 有效分割紀錄方式

以下說明針對xampp環境所講解,其他的請參考下列參考文章自行修改。
原本的紀錄檔為
CustomLog logs/access.log common
將其改成
CustomLog “| bin/rotatelogs.exe logs/datelogs/%Y%m%d%H_access_log 86400” common
閱讀全文〈[轉貼]apache log 紀錄檔 有效分割紀錄方式〉

PHP range

PHP 要快速產生 1~10 的 Array 可以用 range(), 使用範例如下:

// 產生數字序列, array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
foreach (range(1, 10) as $n) {
echo $n;
}

// 產生英文字序列, array(‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’);
foreach (range(‘a’, ‘i’) as $n) {
echo $n;
}

// 產生0~100 的數字, 且數字間差距為 10 的數字序列, array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
foreach (range(0, 100, 10) as $n) {
echo $n;
}

[轉貼]PHP 擷取即時匯率

執行結果如下圖:


<?

//即時匯率
$from = ‘USD’;  // 美元  HKD:港幣  JPY:日元  GBP:英鎊    
$to = ‘TWD’; // 新台幣  
//匯率擷取的位址
$uri = ‘http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=’. $from . $to .’=X’;  
$getRate = file_get_contents($uri);  
$getRate = explode(‘,’, $getRate);  
echo “今日 1美元=”.$getRate[1].”台幣”;
echo “<br>”;
echo “匯率擷取時間: “.$getRate[2].$getRate[3];
?>

BTC SHOP 比特幣商店

自行用 開源 OpenCart 下去改寫的 比特幣拍賣購物網站 目前處理的狀況尚算理想
http://98goto.com/btcshop/

另外有其他人推薦我去參考看看 bitmit (網站已停) 的做法
確實 bitmit的功能實在強悍的不可思議 在OpenCart的架構下要改到 bitmit 近乎不可能的任務 實在過於龐大 幾乎整個都要敲掉的程度了

bitmit 參考資料 http://p2pbucks.com/?p=8024

可如果整個打掉重寫 那又是一筆不得了的開支 實在是無奈至極. 不過做為改變的方向 似乎可以說是一個不錯的方向 慢慢的改版上去 應該是可行的

我的網站的前後台狀況一覽:

  • 前台畫面因為風格可改的關係 其實沒有太大的參考價值就是

  • 後台方面 又區分為 管理者 跟 賣家 的不同的權限 此圖為 賣家權限的後台

  • 比較特別的是 系統連接 bitcoin-qt 自動生成地址來支付 即可判斷訂單是否正常入款

  • 另外 採用多賣家的概念 並非已往商城的模式只有由公司方面上架商品 會類似於 露天商店 或者是 掏寶網 等 使用者可以自行上架商品販賣的概念

  • 賣家的出貨狀態管控
  • 其中較為特別的是 採用 類似 8591網站 的 買家回報機制 保障買賣雙方

OpenCart cURL mcrypt 找不到的解決方案

在 WINDOWS 的目錄下
找到 php.ini 這個檔
用文字編輯程式(UltraEdit or EmEdit)編輯
找到其中的 extension=php_curl.dll 這一行
去除前面的分號 “;” 
然後儲存,
若仍然無法啟動 cURL 可以按照下面步驟修正。

一、在 ..AppServphp5 下找到 libeay32.dll 及 ssleay32.dll。
二、在 ..AppServphp5ext 下找到 php_curl.dll。
三、將上述三個檔案複製到 %windir%/system32 下。
四、重新啟動伺服器即可。


可是有的電腦 curl 跟 mcrypt 要丟Apachebin 底下才能解開 (記得重啟)

OpenCart 再戰心得

這次有了PHP的底子

SQL底子 CSS底子

.Net(C#,VB)的磨練

幾乎可以挑戰MVC+L的結構 不過嘛 還真的是很複雜呢
尤其在撰寫php時 要跳來跳去 是一個很麻煩的事情

這時後真的會很想問 難道沒有好一點的php的開發工具嗎?
(有點被微軟.net寵壞了)

目前就只能用Notepad++下去修
嘛~ 雖然比起當初都用記事本弄PHP是好很多了說…^^

範例站:
http://98goto.com/btcshop/

Bitcoin交易網站草稿

Bitcoin交易平台

募資初步估計約需100萬 
其中設計這個網站的花費大概是50萬左右 
伺服器跟網路的租用大概是 10-15萬左右 
人力的需求大概是2-5個人 大概是 20萬
(初期會看人力增減) (預抓網站啟用後的2-3個月)
禮品跟活動的開銷大概5萬 
剩下就做為營運所需的其他雜支概略10萬 

初期開支規劃


開發階段 (開發時間2個月)
-網站設計50萬

正式營運 第一個月
-網路租用10-15萬(一年或半年計)
-活動開銷 5萬
-人事一個月(暫定2人) 4-5萬
雜支概略7萬

第二個月
-人事一個月(暫定2人) 4-5萬
雜支概略3萬

第三個月
-人事一個月(暫定2人) 4-5萬

第四個月
-人事一個月(暫定2人) 4-5萬

暫時財務規劃 (單位:月) 
(這邊是給非募資人的投資人所看 不過募資投資人我會算進來)

用18萬~27萬來看 營利50%投資人 ≒ 9萬 ~ 13.5萬 (按比例分配

營利20%發起人≒ 3.6萬 ~ 5.4萬 
營利20%公司營運準備金(人事薪資.網站開支.廣告費) ≒ 3.6萬~ 5.4萬 
營利10%員工分紅/補貼薪資≒ 1.8萬 ~2.7萬 (如比例過高 會降低調整 此部分含部分人事薪資)

以上財務規劃相當並不太完善 細部調整會在有正式收入後做調整
可以肯定的是 投資人的百分比會落在30~50%之間

如用一個月總手續費收入18萬來看(3%的情況下)
股東分得 9萬
發起人 3.6萬
營運金 3.6萬
分紅補貼 1.8萬
(營運金 3.6萬 + 分紅補貼 1.8萬 = 5.4萬 為人事開支 約可聘請2-3人)
以某A股東 投資10萬 (目前暫定總金100萬 一個月收益18萬)
可得收益 9萬/100*10 = 9,000 (月) (派發時間可能為 1月~半年~1年 看情況而定)
如實際調整手續費在3%以下會降低收益增加流量 這方面還要評估

 風險評估

  此專案短期營運不善,可能短時間內燒光營運資金,會造成血本無歸,所以以網站開啟(網站開發時程需要二個月)的三個月內暫時不分配利益下去,但如營運順利即亦可能一個月就發放下去。另外資金在投資網站開發就已經花下去,中途要退出恐有困難必須諒解。

網站經營規劃

  畢竟這網站起來流量問題會造成隱憂,我估計用漸進的方法去加強,在有營運的資金下,下去累積加強這網站留下一部分的營收來加強穩固網站的各方面

獲利為手續費收入,如以一天交易10BTC的量來看
單筆單次手續費3%來說 市價估2~3萬算2萬*3% = 600元~900元 
一天交易 10 BTC 來算 = 6000~9000 
一個月30天 = 18萬~27萬
(3% 10BTC ; 1% 30BTC 兩邊達標 因無困難)

以上是假定的手續費收入,當然一天10BTC我覺得並不會太困難
(比特幣中國一天交易量有6-10萬BTC , MtGox一天交易量有2-5萬BTC),不過台灣畢竟沒有一個很完備的交易所,交易量會有多少,實在難以假定,用以上方式去計算預期收益概略需要3-4個月以上的回本時間,但是採用以下方法來在初期的財務規劃

大方向基本上是交易量越多   手續費收得越低  直到0.6%(舉例)
比如說1月整個網站總交易量達到50btc
那麼下個月總網站手續費就變成2% (這邊出資人需要一起探討)
多語言包 支援 簡繁.英文


暫定系統架構

Appserv + PHP + MySQL (採用PHP可大幅提升網站效能)
平台: 考量中
伺服器: 考量中
網路: 考量中
租用網路平台:考量中
安全防護:考量中

網站內容


會員系統
會員後台 (交易買賣 資金管理等)
管理員後台 (使用者分群.管理者分群)

手機驗證 (註冊認證.提款簡訊認證)
身分驗證(需提供 可證明文件.可證明地址 人工審核)
比特幣掛價買賣 (含自動換算)
比特幣市價買賣 (含自動換算)
現金充值 (超商.ATM 人工處理入帳) (可能會有關閉的可能)
比特幣充值 (自動處理入帳 4個認證)
提現 (BTC.NTD 人工處理出帳)
即時行情(線圖)
供外部使用API
其他相關網站報價

二期規劃 (網站後續的子網站)

商家使用: 比特幣入帳 立刻 市價賣出
比特幣網路 購物車.拍賣 商店
網站AD
私下交易留言板
周邊商品舘

目前規劃狀態 (Logo DNS 尚未決定)















禮品設計圖


三方支付相關新聞

相關法律

其他暫存

公司登記:
應備文件 ■ 選取公司名稱2~3個。 ■ 選取公司營業項目。 ■ 負責人及股東身分證明文件影本。 ■ 公司資本決定及資金到位證明文件(存摺影本及銀行餘額證明正本)。 ■ 房屋租賃契約及房屋稅單影本。 ■ 登記大小章及發票章。

域名: onebtc.org onebtc.com.tw onebtc.tw onebit.com.tw onebit.tw wanbit.com.tw wanbit.tw wanbtc.org wanbtc.com.tw wanbtc.tw

[轉貼]ASP.NET(VB) 參數傳遞

ViewState、Session、Cookies、Application State比較
http://www.dotblogs.com.tw/hatelove/archive/2009/06/28/viewstate-session-cache-cookies-application-of-user-state.aspx

ASP.NET application、session、cookie、Viewstate、Postback
http://blog.xuite.net/tolarku/blog/27528606-ASP.NET+application%E3%80%81session%E3%80%81cookie%E3%80%81Viewstate%E3%80%81Postback


簡單整理一下重點:

  • Get
    • 單純傳遞 可能被修改
    • 在網址列可以查看
    • String格式存放
    • 常製作於分頁切換
  • Post
    • 單純傳遞 可能被修改
    • 原始碼內會被查看
  • Cookies
    • 使用方式:Response.Cookies(“變數名稱”).Value=變數值
    • 設定 Cookie 有效期限 Response.Cookies(“變數名稱”).Expires=Now.AddDays(180) ‘180天後到期
    • 單一使用者,存在client端,讀的到就活著。
    • 需注意安全性考量,通常用在個人化portal或profile。
    • 有些single sign on會透過cookie(加密)來存放帳號資訊。
    • String格式存放
    • 將資料存在使用者的電腦中,大多瀏覽器限制檔案大小不得超過 4096 Bytes,每個網站最多存放20個 Cookie。

以下ASP.Net特有

  • ViewState
    • 只存在於正在執行那一頁,通常用於postback記值(因為http無狀態)。
    • 原理是HTML上的hidden field,會透過Base-64編碼
    • webconfig裡可以透過設定來加密:<pages viewStateEncryptionMode=”Always” />
    • 通常server control會透過viewstate來保存其屬性值,也是傳統ASP.NET web form重整頁面最容易碰到的效率問題。可透過EnableViewState屬性開關。
    • 可存放可序列化的Object (一般程式用到普遍最大的應該也只是hash table吧 )
  • Session
    • 使用方式:session(“變數名稱”)=變數值
    • 可存在於該連線,不同頁面,通常用來跨多頁傳些比較重要、需要安全的值。如果是前後頁面關連性的值,只需要用URL parameter即可。Session的意義比較像是在什麼樣的情況下,開始或變更了某個Session的值。
    • 似跨網頁的全域變數
    • 佔用Server端記憶體,連線數量一暴增,記憶體很可能被操掛。
    • 預設存在記憶體裡,可以改存在Session State Server或DB。(如果放在Session State Server或者DB,存放的物件也必須是可序列化的)
    • 可設定存活時間,但發生錯誤或特定情況時,會導致Session遺失,請參考:[ASP.NET]Session遺失的幾種可能
    • 可存放可序列化的Object
    • Application
      • 使用方式:application(“變數名稱”)=變數值
      • 在Server上所有User存取同一份。
      • 當Web application重起或關閉時結束。
      • 吃Server記憶體。
      • 可存放可序列化的Object
      • Q:因為該變數是共用,所以會有互相搶用的問題,所以在修改該值時都應該先 Lock。Application.Lock() → Application(“count”)+=1 → Application.UnLock()
    • Cache
      • 吃Server記憶體。
      • 可設定時間、hit rate或先進先出來當作條件。
      • 通常應用在靜態網頁快取。

    [轉貼]PHP: 完美實現ASP.NET MasterPage的方法

    [轉貼]PHP: 完美實現ASP.NET MasterPage的方法

    ASP.NET中的MasterPage實在是太好用了,而在PHP裏面如果只是用傳統的方法,那麼只能夠把主要版面分段,然後個別使用include()的方式將主要版面湊出來,總覺得說不出來的彆扭。而且如果切割不好,那麼主要版面一旦改版,那麼內容頁就會改到死。使用傳統方法的程式碼大概像這樣:
    <body>
    <div><?php include('menu.php');?></div>
    <div><?php include($page_content);?></div>
    <div><?php include('footer.php');?></div>
    </body>
    如果沒有想過這個問題,也不會去找網路資源,原來早就有人找到方法了。主板頁面就是很一般的頁面,主要用了兩個變數$pagetitle和$pagemaincontent,看名字就知道是頁面標題和主要內容。
    <?php
    define('app_root',$_SERVER['DOCUMENT_ROOT']);
    require_once(app_root."/shared/opendb.inc");
    ?>
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    <title><?php echo $pagetitle ?></title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <link href="./style/globalreset.css" rel="stylesheet" media="screen" type="text/css" />
    <link href="./style/layout.css" rel="stylesheet" media="screen" type="text/css" />
    </head>
    <body>
    <div id="page">
    <div id="header">
    <div id="title">
    <h1><a href="./index.php"><img src='./images/logo_full.jpg' height='50' /></a></h1>
    </div>
    <div id="cart">
    <?php //require_once(app_root."/shared/login.inc"); ?>
    </div>
    </div>
    <div id="wrapper">
    <div id="sidebar">
    <div id="menubox">
    <?php //require_once(app_root."/shared/navigation.inc"); ?>
    </div>
    </div>
    <div id="mainbox">
    <div id="mainarea">
    <?php echo $pagemaincontent; ?>
    </div>
    </div>
    </div>
    <div id="footer">
    </div>
    </div>
    </body>
    </html>
    而內容頁面只要定義$pagetitle就好了,完整頁面的輸出就請看注解的部份。雖然這樣子做可能會小小的造成伺服器的負擔,但是跟維護比較起來,這一點點的負擔是絕對值得的。
    <?php
    define('app_root',$_SERVER['DOCUMENT_ROOT']);
    require_once(app_root."/shared/opendb.inc");
    $pagetitle = "頁面標題";
    //將整個頁面輸出放到緩衝區
    ob_start();
    ?>
    頁面內容,隨便你輸出
    <?php
    //將緩衝區的內容放到變數裏面,然後清除緩衝區
    $pagemaincontent = ob_get_contents();
    ob_end_clean();
    //套用主板頁面
    include(app_root."/shared/master.php");
    ?>

    php抓取網頁特定div區塊及圖片

    [部分轉貼]php抓取網頁特定div區塊及圖片

    //舉一反三
    <?php  
    //取得指定位址的內容,並儲存至text  
    $text=file_get_contents(‘http://www.moea.gov.tw/Mns/populace/activephoto/ActivePhoto.aspx?menu_id=3874&ap_id=1666’);   

    //取出div標籤且id為PostContent的內容,並儲存至陣列match  
    preg_match(‘/<div[^>]*style=”margin-left: 37px”[^>]*>(.*?) </div>/si’,$text,$match);  
      
    //印出match  
    //print_r($match);
    $length = count($match);
    while ($i <= $length) {
    echo($match[$i]);
    $i++;
    }
    ?>
    //
    昨天有個朋友在問我說,php怎麼抓取網頁某個div區塊的內容。像funp推推王那樣每次推文都會顯示文章內的圖片,提供縮圖撰擇,又是怎麼做到的?其實這語法出乎意料的簡短…
    php抓取網頁特定div區塊及圖片
    1. 取得指定網頁內的所有圖片測試
    1. <?php  
    2. //取得指定位址的內容,並儲存至text  
    3. $text=file_get_contents(‘http://andy.diimii.com/’);   
    4.   
    5. //取得所有img標籤,並儲存至二維陣列match  
    6. preg_match_all(‘#<img[^>]*>#i’$text$match);  
    7.   
    8. //印出match  
    9. print_r($match);  
    10. ?>  
    2. 取得指定網頁內的第一張圖片測試
    1. <?php  
    2. //取得指定位址的內容,並儲存至text  
    3. $text=file_get_contents(‘http://andy.diimii.com/’);  
    4.   
    5. //取得第一個img標籤,並儲存至陣列match(regex語法與上述同義)  
    6. preg_match(‘/<img[^>]*>/Ui’$text$match);  
    7.   
    8. //印出match  
    9. print_r($match);  
    10. ?>  
    3. 取得指定網頁內的特定div區塊(藉由id判斷)測試
    1. <?php  
    2. //取得指定位址的內容,並儲存至text  
    3. $text=file_get_contents(‘http://andy.diimii.com/2009/01/seo%e5%8c%96%e7%9a%84%e9%97%9c%e9%8d%b5%e5%ad%97%e5%bb%a3%e5%91%8a%e9%80%a3%e7%b5%90/’);   
    4.   
    5. //去除換行及空白字元(序列化內容才需使用)  
    6. //$text=str_replace(array(“r”,”n”,”t”,”s”), ”, $text);     
    7.   
    8. //取出div標籤且id為PostContent的內容,並儲存至陣列match  
    9. preg_match(‘/<div[^>]*id=”PostContent”[^>]*>(.*?) </div>/si’,$text,$match);  
    10.   
    11. //印出match[0]  
    12. print($match[0]);  
    13. ?>  
    4. 上述2及3的結合測試
    1. <?php  
    2. //取得指定位址的內容,並儲存至text  
    3. $text=file_get_contents(‘http://andy.diimii.com/2009/01/seo%e5%8c%96%e7%9a%84%e9%97%9c%e9%8d%b5%e5%ad%97%e5%bb%a3%e5%91%8a%e9%80%a3%e7%b5%90/’);      
    4.   
    5. //取出div標籤且id為PostContent的內容,並儲存至陣列match  
    6. preg_match(‘/<div[^>]*id=”PostContent”[^>]*>(.*?) </div>/si’,$text,$match);     
    7.   
    8. //取得第一個img標籤,並儲存至陣列match2  
    9. preg_match(‘/<img[^>]*>/Ui’$match[0], $match2);   
    10.   
    11. //印出match2[0]  
    12. print_r($match2[0]);  
    13. ?>  

    後記:用正規表達式Regex來做真的很方便,但老實說我規則常會忘掉,記錄一下幾篇文章好了(Regular Expression DetailsPCRE Functions | Introduction to PHP Regex | 天殺的正規表示式…