[PHP] cURL 進入需要 Basic Authentication 的網址取回資料

Standard

今天幫一位朋友去撈某線上資料庫的資料,該線上資料庫有 Basic Authentication 的帳號密碼驗證(就是會跳一個 dialog 要輸入帳號密碼那種),因此在 cURL 連過去撈資料時,必須加送帳密,以及 Cookies 的部份(少送 Cookies 就被認為未登入了)。

簡單記錄一下程式碼:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $target_url);                     // 連接目標網址
    curl_setopt($ch, CURLOPT_COOKIEJAR,  $cookie_file);             // 儲存 Cookies
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);             // 再傳送一開始獲得的 Cookies
    curl_setopt($ch, CURLOPT_HEADER, 0);                            // 不要返回 header 資訊
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                 // 返回字串,不要直接输出
    curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password); // Basic Authentication 帳號跟密碼
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_POST, true);                           // 啟用POST
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query( array( "foo" => $foo ) )); // 這邊就塞 POST 的東西囉
    $result = curl_exec($ch); 
    curl_close($ch);

    // 以下就是解析字串了,不是本篇重點,參考就好
    $html = str_get_html($result);
    $tr = $html->find('tr');
    $max = count($html->find('tr'));

    for ( $i = 1 ; $i < $max ; $i++ ) {
        echo $tr[$i]->find('td', 0)->plaintext;
    }

PS. 至於取回輸出結果並解析這塊,我是用 PHP Simple HTML DOM Parser 做的,跟 jQuery 用法相似,簡單上手。

[Facebook] 取得粉絲專頁資訊與最新一筆主題的方法 (PHP/jQuery/ASP.NET(C#))

Standard

想要取得粉絲專頁(粉絲團頁面)的公開資訊,以及該粉絲團最新一筆主題該怎麼做呢?
這邊分成三種版本來講:PHP、jQuery 與 C#.NET。

※由於粉絲專頁幾乎是公開資訊,從 Graph API 就可取得。因此其實也可以不用做 app,直接就可以透過 Graph API 撈取。這邊只有 PHP 是用老作法。

Continue reading

[AS3] 擷取 Flash 畫面上的某一區塊為圖檔 (C#/PHP)

Standard

這次來幫一個常用的功能需求做一下作法筆記,就是「擷取 Flash 畫面上的某一區塊為圖檔」。

使用 ActionScript 3.0,後端程式本例做了兩種版本 PHP 與 C#.Net。

  1. 如範例檔,在畫面上安排兩個元件,用來放置欲擷取區塊的 previewMC,以及擷取鈕 capture_btn。

Continue reading

[Facebook] 計算粉絲團內特定文章的按讚數

Standard

最近新案的需求:計算數個粉絲團中的特定文章按讚數,需要判斷加總達某個數字便可做其他事情。

去開發者討論區問之後得到方向了,詳細說明在這:
http://developers.facebook.com/docs/reference/api/page?ref=mf

實際做法如下:

註:PHP 5.2 之後似乎就有支援 json_decode 了,由於此案用的主機只有 5.1.6,所以我是另外去抓 PEARJSON.php 去解。HttpRequest 也是另外抓的。

Continue reading

[PHP] 發送 E-mail 遇到的小問題

Standard

最近的案子需要用到發送 EDM 的功能,是以 PHP 開發,因此就採用了 phpMailer 此套發信套件。另外, mail 內容採用表格切版。

遇到幾個小問題,做一下相關的記錄與解法。

  1. Gmail 讀信時,表格間會出現間隔,但 Outlook 或直接看原始 html 是沒有的。

    解法:
    找到了此篇有相關的問題與說明。

    加入 inline CSS display:block 即可解決這個問題:

    <img src="123.jpg" style="display:block" width="445" height="40" />
    
  2. 信件內容出現了莫名其妙的驚嘆號 (!),去檢查 html code 卻沒有發現任何誤打的 !

    解法:

    設定 Encoding 為 base64

    $mail = new PHPMailer();
    $mail->Encoding = "base64";
    

[Facebook App] 應用程式開發筆記

Standard

隨手記一下幾個要點,有些是從開發者論壇中找到的,有空會再確認是否是正確的做法。

  1. 以 iframe canvas 模式開發時,要傳遞 POST 變數,form 的 action 可以寫成 action=”save.php?“。這樣在 save.php 就能取得變數。
  2. iframe 頁面自適大小:FB_RequireFeatures 中加入 FB.CanvasClient.startTimerToSizeToContent();,且在 IFrame 大小選擇 Resizable。
  3. FBML 模式中,圖片、CSS 的位置都要寫真實的位置 .. 此外,圖片若會出現一條線的破圖狀況,需加 img { display:block; } 的 CSS。
  4. Facebook API (PHP) 判斷是否為粉絲:
    [code language=”PHP”]
    $facebook->api_client->pages_isFan(‘粉絲團ID值’, ‘使用者FB ID’);
    會返回 Boolean 值。
    [/code]
  5. 非粉絲的畫面要加一個讓使用者點擊就能加入粉絲團的按鈕:
    [code language=”HTML”]
    <iframe scrolling="no" frameborder="0" src="http://www.facebook.com/connect/connect.php?id=粉絲團ID&connections=0&stream=0&locale=zh_TW" allowtransparency="true" style="border: none; width: 280px; height: 65px;"></iframe>
    [/code]

    好吧,我還是習慣叫它加入粉絲團。加入粉絲團現在改成「讚」了喔。

先醬子,有空再做整理囉。