PHP PDO Prepare Debug 印出 SQL 語法

PHP 都建議使用 Prepare 來避免 SQL injection 等等的,但是在 Debug 的時候,最困擾的就是如何把當下 SQL 語法印出來。

此套件支援 Debug 主要是可以將 SQL 語法印出。

閱讀全文〈PHP PDO Prepare Debug 印出 SQL 語法〉

抓 Guzzle Http Exception error

PHP 對 API 發 Request 常用 CURL,然後 Guzzle 是把 CURL 再包一層來做更多的進階操作。

Guzzle 底層使用 CURL,主要拿來呼叫 API、POST、GET 發送 HTTP Request。

不過 Guzzle 的版本也很多,各個版本抓取 Exception 的方式可能也不一樣,此篇使用 Guzzle 7 的版本。

閱讀全文〈抓 Guzzle Http Exception error〉

PHP 抓取沒有名字的 POST 值的方法

現在很流行使用 JSON 的傳資料,更懶惰的是連名字都沒有指定,直接將值 json_ecode() 後,直接整個 POST 過來,但是這樣子 $POST 沒有名字就無法抓取值,要怎麼做呢?

閱讀全文〈PHP 抓取沒有名字的 POST 值的方法〉

PHP CURL 遇到 tls12_check_peer_sigalg wrong signature type 解法

PHP 使用 CURL 要爬某個頁面,或者某個網站的 API,怎麼爬都是空白頁面,又沒有被擋,把 CURL 的 Error Info 印出來後,看到下述錯誤:

curl: (35) error:1414D172:SSL routines:tls12_check_peer_sigalg:wrong signature type

閱讀全文〈PHP CURL 遇到 tls12_check_peer_sigalg wrong signature type 解法〉

PHP 於 Header 送 noindex 給 Crawler bot

某些頁面不想要讓 Search engine (Google、Bing) 的 crawler bot 爬,有幾種方法可以使用:

  1. HTML Meta Tag
  2. 使用 robots.txt
  3. 於 HTTP Header 送 X-Robots-Tag

此篇主要紀錄 HTTP Header 的作法

閱讀全文〈PHP 於 Header 送 noindex 給 Crawler bot〉

PHP 強制使用「強型態」的模式

PHP 7 之後,function、Class 等等都可以指定型態、回傳的型態,但是雖然寫 int,傳進來還是可以傳 float,要怎麼強制型態不對就直接出錯誤呢?

function 指定型態完整寫法

<?php
function sum(int $a, int $b): int
{
    return $a + $b;
}

function avg(int $a, int $b): float
{
    return ($a + $b) / 2;
}

// Class
class C {}
class D extends C {}
function f(C $c)
{
    echo get_class($c)."\n";
}
f(new C); // C
f(new D); // D
?>

PHP 的型態:PHP: Type declarations

閱讀全文〈PHP 強制使用「強型態」的模式〉