最近需要用到OAuth的Client套件
所以就使用目前最多人使用的Laravel
不過需要的部份只有Laravel Socialite
看了一下composer.json的相依性
```json
"require": {
"php": ">=5.4.0",
"illuminate/contracts": "~5.0",
"illuminate/http": "~5.0",
"illuminate/support": "~5.0",
"guzzlehttp/guzzle": "~5.0|~6.0",
"league/oauth1-client": "~1.0"
},
```
只需要這些package並不需要整個Laravel
所以就開始使用它
不過在使用的過程遇到了不少問題
它所需要的package其實不止這些
所以程式在撰寫的過程中確實遇到不少問題
再在上在本機端上開發會遇到cURL error 60: SSL certificate problem
於是決定以[PHPoAuthLib](https://github.com/Lusitanian/PHPoAuthLib.git)進行開發
所以就寫了[Recca0120 Socialite](https://github.com/recca0120/Socialite)
並使它可以獨立使用
[Demo](https://github.com/recca0120/Socialite/tree/master/demo)
目前只先實作Laravel Socialite原本的功能,之後會視情形再加功能
OAuth1
BitBucket
Twitter
OAuth2
Facebook
GitHub
Google
Instagram
LinkedIn
2015年9月20日 星期日
2015年9月19日 星期六
cURL error 60: SSL certificate problem: unable to get local issuer certificate
![Alt text](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinE8PbXmRzH1srPLp3BbrAwyuMCcC4FeDkwFxq14m3nRX540JhHTWveaBg3QBUrn3vl4Zrzs20koBH7t8gEGyZDKWczCyzzFfXOJFhOXHIHT5dljDaiUfk2CmIyZNMWOdxQYd09QMWrwaR/s1600/Image+2.png)
在使用Guzzle時,遇到cURL error 60: SSL certificate problem: unable to get local issuer certificate
只要下載[ca-bundle.crt](https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt)並放到相對應的路徑
```php
[
// Red Hat, CentOS, Fedora (provided by the ca-certificates package)
'/etc/pki/tls/certs/ca-bundle.crt',
// Ubuntu, Debian (provided by the ca-certificates package)
'/etc/ssl/certs/ca-certificates.crt',
// FreeBSD (provided by the ca_root_nss package)
'/usr/local/share/certs/ca-root-nss.crt',
// OS X provided by homebrew (using the default path)
'/usr/local/etc/openssl/cert.pem',
// Google app engine
'/etc/ca-certificates.crt',
// Windows?
'C:\\windows\\system32\\curl-ca-bundle.crt',
'C:\\windows\\curl-ca-bundle.crt',
];
```
如果再無法正常運作的話就得去修改php.ini
再加入
```ini
[curl]
curl.cainfo=C:\Windows\curl-ca-bundle.crt
[openssl]
openssl.cafile=C:\Windows\curl-ca-bundle.crt
```
就可以正常運作了
2015年9月14日 星期一
發撲克牌
在奇摩知識+看到有人發問發撲克牌,依花色及數字大小做排序,所以我就寫了這個程式囉
```php function Poker($member = 4, $POSTCARDS = 52) { /*撲克花色*/ $Poker = [ 'Spades', 'Hearts', 'Diamonds', 'Clubs', ]; /*人頭牌*/ $CARD = [ 11 => 'J', 12 => 'Q', 13 => 'K', ]; /*發牌順序*/ $P = range(0, $POSTCARDS - 1); shuffle($P); /*存放結果陣列*/ $result = []; $total = count($P); for ($i = 0; $i < $total; $i++) { /*發給玩家*/ $t = $i % $member + 1; /*發牌編號 0-51*/ $v = $P[$i]; /*發牌花色 Spades,Hearts,Diamonds,Clubs*/ $c = $Poker[$v % count($Poker)]; /*花色大小 1-13*/ $k = ($v % 13) + 1; $result[$t][$c][$k] = (in_array($k, array_keys($CARD))) ? $CARD[$k] : $k; /*依牌大小排序*/ krsort($result[$t][$c]); /*依花色排序*/ krsort($result[$t]); } return $result; } /*印出結果*/ print_r(Poker(1, 13)); /*如果要發4個人52張牌*/ print_r(Poker(4, 52)); ```
```php function Poker($member = 4, $POSTCARDS = 52) { /*撲克花色*/ $Poker = [ 'Spades', 'Hearts', 'Diamonds', 'Clubs', ]; /*人頭牌*/ $CARD = [ 11 => 'J', 12 => 'Q', 13 => 'K', ]; /*發牌順序*/ $P = range(0, $POSTCARDS - 1); shuffle($P); /*存放結果陣列*/ $result = []; $total = count($P); for ($i = 0; $i < $total; $i++) { /*發給玩家*/ $t = $i % $member + 1; /*發牌編號 0-51*/ $v = $P[$i]; /*發牌花色 Spades,Hearts,Diamonds,Clubs*/ $c = $Poker[$v % count($Poker)]; /*花色大小 1-13*/ $k = ($v % 13) + 1; $result[$t][$c][$k] = (in_array($k, array_keys($CARD))) ? $CARD[$k] : $k; /*依牌大小排序*/ krsort($result[$t][$c]); /*依花色排序*/ krsort($result[$t]); } return $result; } /*印出結果*/ print_r(Poker(1, 13)); /*如果要發4個人52張牌*/ print_r(Poker(4, 52)); ```
php 下載限速
```php
function getlocalfile($filename, $readmod = 1, $range = 0)
{
if ($fp = @fopen($filename, 'rb')) {
@fseek($fp, $range);
$download_rate = 10;//限制网速10kb/s
while (! feof($fp)) {
print fread($fp, round($download_rate * 1024));
flush();
ob_flush();
sleep(1);
}
}
@fclose($fp);
@flush();
@ob_flush();
}
```
訂閱:
文章 (Atom)