PHP curl 使用

基本使用

使用 CURLOPT_URL 設定連結網址,然後執行即可。順利的話就可以取得回傳網頁原始碼

 

不直接顯示取得內容

將 CURLOPT_RETURNTRANSFER 設定為 true 即可

 

加上 POST 資料

增加 CURLOPT_POSTFIELDS 參數,傳遞 array() 陣列

Google+ 在 OAuth 內的資訊必須使用 POST 傳遞,使用方法大致如下

 

取得處理狀態

curl_getinfo() 可以得知執行後結果

 

設定或增加其他功能、參數

設定 REFERER 參照來源網址

如何得知送出的 Head ?

步驟

  1. 設定 CURLINFO_HEADER_OUT 為 true
  2. 使用 curl_getinfo() 取得輸出結果, 送出 Head 也在結果內

 

增加自定義 Head

 

增加自定義 – 傳遞連線 IP

HEAD 名稱前面強制加上 HTTP_ 開頭,因此取得 IP 時必須相互搭配

 

目的端 PHP 取得 IP 程式方法

首先請先看以下參考連結

這裡討論到一段網路普遍「謠傳」的取得 IP 代碼

大部分抄這段程式碼的人都不知道為什麼要先取 HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR 這兩個值,等學會 curl 之後就會知道大大說這是唬爛是正確的。

想要知道接收端資訊必須另外儲存,文字檔、資料庫等都可以,為了方便這裡使用文字檔

隱藏 _SERVER[‘REMOTE_ADDR’]

設定使用 Proxy Server 代理連線,對方取得的 REMOTE_ADDR 就是 Proxy Server 的 IP

 

送出 HTTP Auth

如果有一個網頁使用 HTTP Auth 使用者認證,該如何使用 PHP curl 登錄取得資料?

以下是 zopim 的取得聊天紀錄範例,本來是使用 Linux curl 指令操作的,例如:

PHP 可以這樣實現

Timeout 以及取得 Timeout 錯誤

上傳檔案 PHP 5.4 以下

將檔案存放路徑的檔案名稱前加上 @ 即可

上傳檔案 PHP 5.5 以上

如要沿用 5.4 舊方法則設定 curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); 即可

HTTP 417 – Expectation Failed

3,712 total views, 5 views today

PHP command line 傳遞參數

  • $argc 回傳傳遞參數數量
  • $argv 以 array 型態回傳傳遞參數的值

cli.php

執行 php cli.php

看起來 cli.php 這個檔案也被 php 當成了一個傳遞參數

執行 php cli.php v1 v2 v3

152 total views, no views today

imagesLoaded

網頁載入圖片完成後…

這個功能需求是為了相簿使用了瀑布流計算圖片高度,因為等寬不等高所以必須等圖片實際載入完成才知道確切高度。

 

AngularJS

$timeout 的延遲時間必須足夠讓圖片載入完成,得到的高度才會是正確的

 

 

106 total views, no views today

DSLR 檔案放置計畫

數位單眼檔案整理計畫 (照片整理計畫)

目的:將數位相機拍攝照片、影片放置在網站上,方便平板、手機觀看存取

規格:

  • 可分類
  • 根據分類或自定義讀取權限
  • 照片、影片必須可在 Android, IOS 上正常觀看
  • 可直接上傳 RAW 格式照片
  • 上傳時可選擇資料夾 (搭配 Chrome 瀏覽器)

技術:

  • PHP, MySQL
  • HTML5, Javascript
  • Jpeg, PNG 圖檔格式轉檔
  • RAW 格式圖檔轉檔
  • Exif 格式存取
  • 影片轉檔

 

  1. 把檔案放上去
  2. 處理成可以在 HTML5 可以接受的格式
  3. 顯示及播放

數位單眼有什麼檔案?

大致上分為三類

  1. RAW 格式圖檔
  2. Jpeg 圖檔
  3. 影片檔 (MOV, MTS…)

觀看、分享方法

放置在網站,主要使用 HTML5 技術

使用該方法限制及前置作業

圖檔和硬片都需要縮小尺寸、重新取樣、轉換格式後才上傳至網站上

 

1多檔案及資料夾檔案上傳

 

2. 讀取相片 Exif

PHP exif_read_data()

因為使用 PHP 官方也有 exif 的功能,所以

補上 exif 後

就吐出錯誤訊息了

而且尺寸也是錯的,再次 Google 之後找到了 Exiv2 – Image metadata library and tools

FreeBSD 9.1 安裝 exiv2

CentOS 6 安裝 exiv2

 

就可以得到正確的資訊了

使用 PHP 分析字串取得 Exif

參考: php-exiv2/Exiv2ImageExplorer.php at master · joelalejandro/php-exiv2 · GitHub

 

拍攝方向

取得影片格式資訊

 

舊數位相機 MOV 格式影片轉檔

 

2018-06-18 以下作廢

RAW 格式轉檔

使用 dcraw 來進行處理

FreeBSD

CentOS

 

 

 

 

將 RAW 格式轉成 JPEG

 

GUI

 

IOS 的自動旋轉問題

 

 

取消 fancybox 的 click

  • http://jsfiddle.net/DigitalBiscuits/DBvt7/211/

 

 

上傳即時更新

 

瀑布流布局

 

多圖處理技巧:延遲顯示、分次載入

延遲顯示 – 延遲顯示是將未出現的圖片就不載入的 Javascript 技術,一般使用 Lazy Load 來完成

分批載入 – 分批載入則是類似分頁模式,將同一頁圖檔分成數次載入。可以有顯示同頁或是分頁顯示等不同處理方式。

一般來說,對於一個相簿高達上千張圖檔需要顯示時,使用分批載入會較為恰當,因為必須考慮行動裝置硬體效能問題。

 

影片

 

Error: Unsupported sample rate 7875

早期相機影片的錄影通常使用很奇怪的格式 (相較現在的 MPEG4 來說),不是奇怪的組合就是奇怪的數值設定。如果不設定預設處理數值 ffmpeg 可能會無法支援而報錯。

例如以下範例,2004 年的 NIKON Coolpix 3200 ,影像使用 mjpeg ,聲音使用 pcm ,問題出在聲音的取樣頻率,因為早期硬體效能、儲存空間問題,所以設定為 7875Hz,而此數值 ffmpeg 是不支援轉換的,必須指定支援數值。

 

 

上傳佇列、背景轉檔

/etc/crontab

 

 

 

http://avirtum.com/preview/?item=pinto

204 total views, no views today

使用 PHP 取得影音檔案資訊

如何使用 PHP 即可取得影音檔案資訊,不須借助播放程式?

參考

官網 getID3()

對象是 MP3 也不會有另外格式的檔案,不需要搞到 ffmpeg 這麼複雜。

169 total views, no views today

Smarty 3

 

Smarty 官網沒說的祕密

多層 foreach 需要一次跳出迴圈,可以使用 break 加上 需要離開的層數

 

取得檔案類型名稱 (檔案副檔名)

Is there a way in Smarty to get the file extension of a string

 

更多相關資料

[PHP]Smarty - 變數處理

75 total views, no views today