顯示具有 php 標籤的文章。 顯示所有文章
顯示具有 php 標籤的文章。 顯示所有文章

2011年10月31日 星期一

在 ubuntu 上的 php 中 exec python 腳本

ubuntu 裡的權限管理非常的嚴格,常常造成子程序沒有權限執行,而 exec 指令中雖然可以加上 sudo,但 ubuntu 的 sudo 仍有「互動式輸入密碼」的問題。
比較好的解法,便是讓 sudo 不需要輸入密碼,而詳細的解法可以參考底下的連結

 

2012/10/15 更新

若要完全取消 sudo 的密碼,可以試試

sudo visudo

# %sudo ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) NOPASSWD: ALL

2011年10月10日 星期一

Facebook 非讚不可 php 語法

image

試了一下網路上「非讚不可」的 fbml 語法,是利用

 
<fb:visible-to-connection>

來達成的,但卻可以從原始碼中看到隱藏的內容。

 

看了一下 facebook-php-sdk,其實也可以用這樣的方式達成

 
require_once "lib/facebook.php";
 
$app_id = "";
$app_secret = "";
 
$facebook = new Facebook(array(
    'appId' => $app_id,
    'secret' => $app_secret,
    'cookie' => true
));
 
$user = $facebook->getUser();
$signed_request = $facebook->getSignedRequest();
 
$is_fan = false;
 
if ($signed_request) {
    if($signed_request['page']['liked']) {
        $is_fan = true;
    }
}
 
if ($is_fan) {
    include('fan.php');
} else {
    include('guest.php');
}

 

 

在這邊看到一樣的方法,他寫的比較詳細!

http://nocturnsoft.com/devblog/?p=526

2011年9月16日 星期五

Google+ API 與 php

image

如果你沒有用過 Facebook API,那建議你可以先閱讀底下的文章釐清一些觀念

透過 Facebook API,讓你的 Facebook Application 發佈動態消息

 

Google+ API 已經可以使用囉!但目前只開放讀取部分資訊。

image

 

其實照著 Google+ 的文件進行就可以了,大概分幾個步驟:

 

這裡註冊你的 Google Application,註冊方式可以參考這裡

 

特別要注意的是,如果你用的是 php 的 Library,這個步驟結束之後…

 

要記得把 Redirect URI 改成這樣(實際上還是得以你放置的路徑為主,這個例子,我是將 index.php 放置在 www root 底下)

image

 

這裡可以看到等會需要輸入的資訊(黃色框住的部分)

image

 

這裡打開你的 Google+ API。

image 

 

這裡下載你使用的語言的 Library,這個範例是用 php 完成的(但 Ruby 的部分,我也測試過)

image

 

接著把 google-plus-php-client.zip 跟 google-plus-php-starter.zip 解壓縮到 Apache Web 的根目錄下。

SNAGHTML1efe26c

 

打開 index.php 填寫剛剛申請獲得的資訊。

image

 

打開 localhost 就完成囉!

SNAGHTML1fb85bc

 

如果操作過程中,出現了

CURL Error 60: SSL certificate problem, verify that the CA cert is OK.
Details: error:14090086:SSL routines
SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

的錯誤,可以參考底下這個網站解決!

http://richardwarrender.com/2007/05/the-secret-to-curl-in-php-on-windows/

2011年9月10日 星期六

Ruby on Rails multipart(上傳檔案) 讓 remote(ajax) 失效!

在 RoR 要 AJAX 來傳遞表單(form)非常的簡單,只需要把 form 的 remote 屬性設定成 true 就好。

<%= form_tag('/posts', :remote => true) %>
  # field here ...
<% end %>

 

而關於 AJAX event 的 handle,可以參考這篇

Rails 3 Remote Links and Forms: A Definitive Guide

 

 

但若要傳遞的是檔案就沒這麼簡單了,因為 form 的 multipart 屬性會讓 remote 失效!

<%= form_tag('/posts', :remote => true, :multipart => true) %>
  # field here ...
<% end %>

 

這並不是  RoR 的問題,而是 Javascript 本來就無法存取本機得資源,若要達成還是得利用 iframe 來讓瀏覽器幫忙將檔案送到 server 端而不重新讀取頁面,以 php 為例,你必須這樣做。

index.php

<form id="upload_form" method="post" enctype="multipart/form-data" action="upload.php">
    <input name="file" id="file" type="file"/>
    <input type="submit" name="action" value="Upload"/>
    <iframe id="upload_iframe" name="upload_iframe" style="width: 500px; height: 500px; border: 1px solid #000;"></iframe>
</form>
 
<script>
function init() {
    document.getElementById('upload_form').onsubmit=function() {
        document.getElementById('upload_form').target = 'upload_iframe';
    }
}
window.onload=init;
</script>

 

upload.php

<pre>
<?
    // 處理一般 upload 的程式碼放這,這邊只印出 $_FILES 的內容
    print_r($_FILES);
?>
</pre>
 
<script>
// 還是可以呼叫到前一個頁面的元素進行互動
alert(parent.document.getElementById('upload_form'));
</script>

 

在 RoR 世界裡,已經有人把他寫成套件了,或許安裝有點繁瑣,使用起來也不是那麼的順手,但基本上還是維持了 RoR 的一致性,可以參考看看底下這個 solution。(裡面已有安裝教學以及使用範例)

https://github.com/leppert/remotipart

2011年4月21日 星期四

透過 Facebook API,讓你的 Facebook Application 發佈動態消息

目的

是讓發佈動態消息可程式化,可依自己撰寫的應用邏輯,來決定何時發佈消息。

 

建議可以先閱讀

 

假設已經準備好了...

  1. 已經在 http://www.facebook.com/developers/ 建立了新的應用程式。 (在這例子上,我的應用程式叫 bmfriend_testapp)
  2. 準備了可執行 php 的 Web Server 環境。(在這例子上,我的 Web Server Domain Name 是 bmcool.no-ip.org)

 

 

開始進行

取得 fb_ca_chain_bundle.crt 以及 facebook.php

下載 facebook-php-sdk
image

 

下載最新版本(我抓到的是 facebook-php-sdk-v2.1.2-6-g04168d5.zip)
image

 

解壓縮至此
image
 

 

在src資料夾找到 fb_ca_chain_bundle.crt 以及 facebook.php
image

 

下載 demo 檔案與建置

下載 index.php ,在 Web Server 上建個資料夾(在這例子上,我的資料夾名稱是 facebook),將 fb_ca_chain_bundle.crtfacebook.php 以及 index.php 置入此資料夾
image

 

在 Facebook 上,編輯 Facebook Application 的設定

打開 Facebook Application Setting 頁面(我的 Application ID 是 204672162899646)

http://www.facebook.com/developers/apps.php?app_id=204672162899646

按下編輯設定(正常情況下,請保護好應用程式密鑰,不要讓自己以外的人知道)
image

 

點擊 Web Site
image

 

記下黃色螢光標示的部分,一個是你的 Application ID,一個是 Application Secret(正常情況下,請保護好應用程式密鑰,不要讓自己以外的人知道);而 Site URL 填入放置 fb_ca_chain_bundle.crtfacebook.php 以及 index.php 的位址並按下儲存
image

 

編輯 index.php 檔案,讓它與 Facebook Application 連結起來

打開 index.php,將底下紅框部分,改為應用程式的 Application ID 與 Application Secret
image

 

將底下紅框部分,改為應用程式的 Application ID 以及 Site URL
image 
image

 

開始使用建置好的 Facebook Application

來到 http://bmcool.no-ip.org/facebook/ 按下其中一個按鈕(我選了上面的)
image

 

登入
SNAGHTML3918ab4

 

按下同意
SNAGHTML3925294

 

跳轉回 http://bmcool.no-ip.org/facebook/ 此時已是登入狀態,此時輸入想發送的訊息以及按下送出
image

 

回到登入帳號的 facebook 主頁,便會發現發送成功!下方會標示是由申請的 Application 所發送的
image

 

 

還可以試試

  1. 將所有發送的訊息,依日期集中在同一個主題之下。(comments)
  2. 將訊息廣播給所有的朋友。(read_stream)
  3. 每天定時發送訊息給所有登入過 Facebook Application 的網友。

 

參考連結