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

2019年4月8日 星期一

[Laravel]使用migrate時發生錯誤Specified key was too long解決方式

由於Laravel使用的預設資料庫字集是utf8mb4,如果你使用的MySQL版本為 v5.7.7 以上,就不會有這個錯誤。
錯誤訊息類似:
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique (email))
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

2017年1月20日 星期五

[PHP]Laravel 5.4新特性

Laravel 5.3才剛更新到產品上沒多久就出5.4了Orz...要逼死誰啊XD 但是許多的新特性的確不錯,來紀錄一下新特性的內容吧!


1. Includes Two New Middleware

新增兩個Middleware分別是TrimStrings與ConvertEmptyStringsToNull,TrimStrings的功能是把進來的Request裡面的內容自動做trim的動作,避免使用者多塞空格進來,ConvertEmptyStringsToNull則是當Request裡面的內容是""空字串的話,會自動轉成NULL方便內容判斷,例如:
<input type="text" name="vat" value="">
套用前
dd(request('vat')); // ''
套用後
dd(request('vat')); // null

2015年11月16日 星期一

[Laravel] Laravel 5.2 更新內容

隱晦模型綁定(Implicit model binding)

隱晦模型綁定是一個新的特性,他將會自動綁訂一個模型到路由,以下是範例程式碼:

Route::get('/api/posts/{post}', function(Post $post) {
    return $post;
});




上述程式碼將會在背後直接呼叫 Post::findOrFail($post) 並且將它注入到 $post 這個變數。對於有經驗的Laravel開發者,這個功能就很像是已經存在的 路由模型綁定 ,但現在移除了手動綁定它。

2015年1月22日 星期四

[PHP]PHPstorm快捷键小記

最近在試試看eclipse以外的IDE編輯器,他實在是太容易當掉了= = 今天看到這個PHPstorm,以下是到處蒐集來的一些,做個小記錄

2014年5月14日 星期三

[PHP]self和$this的差異

(1).self是參照到目前的class,$this是參照到目前的object ( 已經被宣告的實體上 )

(2).self 可使用在static上,$this不行

static method 因為沒有物件的實體,所以需要注意不可以使用 $this ,要用self::
可以直接存取 static method ( 如self::method() ),但是無法直接存取 static property 中的預先宣告的值

2014年5月9日 星期五

PHP性能測試工具XHProf使用詳解

一,什麼是XHProfXHProf是一個分層PHP性能分析工具。它報告函數級別的請求次數和各種指標,包括阻塞時間,CPU時間和內存使用情況。一個函數的開銷,可細分成調用者和被調用者的開銷,XHProf數據收集階段,它記錄調用次數的追踪和包容性的指標弧在動態callgraph的一個程序。它獨有的數據計算的報告/後處理階段。在數據收集時,XHProfd通過檢測循環來處理遞歸的函數調用,並通過給遞歸調用中每個深度的調用一個有用的命名來避開死循環。 XHProf分析報告有助於理解被執行的代碼的結構,它有一個簡單的HTML的用戶界面( PHP寫成的)。基於瀏覽器的性能分析用戶界面能更容易查看,或是與同行們分享成果。也能繪製調用關係圖。

2014年1月14日 星期二

[PHP] PHP Profiling 效能分析追蹤工具 (APD)

當程式寫完後, 發現整頁跑起來速度有點慢, 要追蹤分析是哪邊是造成速度慢的主因, 通常最簡單的方法, 是用 microtime() (可見此文: PHP 測量程式執行時間)來把每個 Function 包起來, 分別看執行時間.
如果太多要追蹤, 懶得這樣子包來包去, 另外一種就是用 PHP Profiling 的工具(APD)來做, 詳可見下述:
不過, 太久沒用這工具, 沒想到 APD 從 2008年到現在(2011), 都沒有新版, 使用 Pecl 安裝, 也無法直接安裝完成, 在此順便把解法紀錄於此.

2013年10月30日 星期三

[php]符合 RFC 規範的 Email 驗證程式

要驗證 Email 是否符合規格, 大部分是使用下面的簡單 Regular expression 來作驗證 (下面兩者 regex 是一樣的, 只是 php / rails 版的寫法而已)
  • preg_match('/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/', $email) // 正確: true, 錯誤: false
  • validates_format_of :email, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :message => '格式錯誤'
使用上述的檢查後, 再加上 PHP 驗證 Email -檢查 DNS 的 MX 是否有通, 再來就該直接寄信去驗證了.

2013年10月22日 星期二

[php]命名空間(namespace)

為什麼我們需要命名空間?隨著你的PHP代碼庫的增長,對之前定義的函數和類名進行修改時風險也更高了,當你試圖增加第三方組件或插件時問題更嚴重,如果存在兩個或兩個以上的代碼集實現了一個“Database”和“User”類會怎麼樣?直到目前,唯一的解決辦法是使用長的類/函數名,例如Wordpress在每個類和函數名前都使用了前綴“WP_”, Zend Framework使用了極具描述性的命名約定,導致類名非常冗長,如:Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive命名衝突問題可以使用命名空間來解決,PHP常量、類和函數可以被組合到命名空間庫中。如何定義命名空間?

2013年10月7日 星期一

[php]mysqli函式簡介

 mysqli 分為以下三個類別
   mysqli:負責控制與mysql的連線,執行SQL查詢,執行select後會得到查詢結果
          之mysql_result物件
   mysqli_result:內含select的查詢結果
   mysqli_stmt:用來定義執行參數化的SQL指令,需透過$mysqli->perpare建立mysql_stmt

2013年9月25日 星期三

[PHP] VC9/VC6 TS/NTS差異



PHPVC9 x86 Non Thread SafeVC9 x86 Thread SafeVC6 x86 Non Thread SafeVC6 x86 Thread Safe等等。

  VC9是用legacy VS 2008編譯的,VC6是用legacy VS6編譯的。

  如果你是在windows下使用IIS+PHP的話,你需要下載VC9的版本。
 
如果你是在windows下使用Apache+PHP的話,你需要下載VC6的版本。

  Non Thread Safe是指非線程安全,Thread Safe則是指線程安全。

2013年9月10日 星期二

[PHP]儲存html原始碼進Mysql

在需要將html原始碼存進資料庫時,會因為許多的標籤或是其他符號而發生錯誤
這時需要用到mysql_real_escape_string($string)這個函數,
http://tw2.php.net/manual/en/function.mysql-real-escape-string.php
即可以順利存入。

但是這個函數最常被使用的情況是防止網站被SQL injection,基於會幫你檢查分號之類的功用可以做很好的防範。
 

2013年8月29日 星期四

[PHP]讀取資料夾檔案內容glob,scandir,readdir


PHP讀取資料夾相關的函數有三個glob,scandir,readdir,方便性的排序個人認為是glob > scandir > readdir,以下為介紹:

glob() 函數返回匹配指定模式的檔案名或目錄。


2013年8月28日 星期三

[PHP]判斷檔案或路徑是否存在 file_exists()

有時寫好的程式會因為使用者輸入錯誤的檔案或路徑而無法順利執行,這時就會需要先進行檢查,file_exists()可以檢查目錄或檔案是否存在,並回傳ture or false


2013年8月27日 星期二

[PHP] CLI的使用

php可以達到在UNIX系統中那樣使用命令行來達成script的功能嗎?
答案是可以的!

這是官網的詳細說明 http://www.php.net/manual/en/features.commandline.php

簡單來說,需要用到這三個指令
STDIN(標準輸入)、STDOUT(標準輸出)及STDERR(標準錯誤輸出)

2011年5月26日 星期四

利用header做檔案下載控制

通常在做檔案下載功能的時候,都是做個link連結到檔案,之後跳出視窗讓使用者選擇要下載或者開啟檔案,這種方法雖然簡單方便,但是有的時候會出現其他使用者將你的連結盜連到自己的網站,消耗你的資源增加他的人氣,想要防止這種方法有許多方法,例如先將檔案丟到SQL再去SQL做存取,或是利用權限設定之類的,今天要講的方法是先將檔案交給PHP處理再丟給使用者下載的方式,來規避他人直接取得你的檔案儲存位置,使用底下這隻函數即可做到:

上傳excel檔案並變更格式範例(使用PHPExcel)-1

把最近寫好的code丟上來分享XD~
裡面用到一些fputs與PHPExcel以及時間格式的觀念

2011年4月26日 星期二

PHP獲取日期和時間格式化

使用函式 date()
echo $showtime=date("Y-m-d H:i:s")
顯示的格式: 年-月-日 小時:分鐘:妙
相關時間參數:

2011年4月21日 星期四

STRING FUNCTION OF PHP

Table of Contents

addcslashes — Quote string with slashes in a C style
addslashes — Quote string with slashes
bin2hex — Convert binary data into hexadecimal representation
chop — Alias of rtrim
chr — Return a specific character

PHPExcel 抓取excel時間格式的轉換

PHPExcel 在抓取excel格式的時間日期時,出现了23546之類的數字字串,是因為excel的日期跟時間不是用我們常見的1911-01-01之類的格式,而是從1900-01-01開始往後多一天就從25569往上加1產生,因此靠以下的自製函數來轉換時間格式就搞定了!!

Google Analytics初學者入門簡介