介紹 PHP 常見魔術方法
PHP 常見魔術方法簡介
這裡針對一些比較常見的魔術方法進行說明:
__construct
首先,提到兩個魔術大家都會常用到: __construct
CVT2HUGO: 與 __destruct
CVT2HUGO: 會在物件被實例化時觸發,__destruct
PHP 常見魔術方法簡介
這裡針對一些比較常見的魔術方法進行說明:
__construct
首先,提到兩個魔術大家都會常用到: __construct
CVT2HUGO: 與 __destruct
CVT2HUGO: 會在物件被實例化時觸發,__destruct
Laravel 取得最後查詢SQL方式如下:
<?php
//啟用Query Log
DB::enableQueryLog();
//取得所有Query Log
$queries = DB::getQueryLog();
//取得最後一筆Query
$last_query = end($queries);
return $last_query;
這裡,分別會用OAuth Server,以及 OAuth Client 兩個角度來說明 OAuth2 運作機制
composer create-project --prefer-dist laravel/laravel laravel_oauth
cd laravel_oauth
建立資料庫 ex. laravel_oauth 複製 .env.example 並命名為 .env
加入資料庫連線設定
產生 APP_KEY
php artisan key:generate
.evn
SESSION_DRIVER=database
建立 session migrate
php artisan session:table
重新 dump
composer dump-autoload
建立 migrate
php artisan migrate
php artisan make:auth
composer require laravel/passport
如果安裝的MySql版本較舊,可能會發生錯誤,因此需加入下方修改設定
app/Providers/AppServiceProvider.php
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
將 auth 及 passport 相關 migration 來自動建立資料表
Continue Reading前往 nginx 官網,下載nginx/windows 的檔案
這裡下載的版本是 Stable version - nginx/Windows-1.12.2
在 C 槽新增一個 nginx_php/ 資料夾
將下載的nginx 壓縮檔解壓縮後放入
Continue Reading在 Laravel 執行測試,主要會以 phpunit.xml 設定檔案來定義環境變數。
預設的內容為
<php>
<server name="APP_ENV" value="testing"/>
<server name="BCRYPT_ROUNDS" value="4"/>
<server name="CACHE_DRIVER" value="array"/>
<server name="MAIL_DRIVER" value="array"/>
<server name="QUEUE_CONNECTION" value="sync"/>
<server name="SESSION_DRIVER" value="array"/>
</php>
預設的 session 及 cache 都是以 Array driver 方式處理,表示在測試過程不會真的產生 session 或 cache 資料。
其中, APP_ENV 預設為 testing
直接複製 .env 命名為 .env.testing ,並且將 .env.testing 的 APP_ENV 設定為 testing
在執行 phpunit 時, .env.testing 會覆寫掉 .env 的設定值
此外,針對一些需要透過 migration 等相關 artisan指令操作,可以透過 –env=testing 來讀取.evn.testing 檔案
例如:
php artisan migrate --env=testing
//or
php artisan migrate:refresh --env=testing
這裡紀錄如何透過PHP來取得目前網址的相關方式
假設目前有一個網址: http(s)://www .example.com/site/contact.php?uid=123456&class=3
在 PHP 取得網址相關的方式有以下幾個:
<?php
$_SERVER['HTTP_HOST']; // www.exampe.com
$_SERVER['REQUEST_URI']; // /site/contact.php?uid=123456&class=3
$_SERVER['PHP_SELF'];// site/contact.php
$_SERVER['QUERY_STRING'];// uid=123456&class=3
Md5 已經公認為危險的加密方式, 而SHA-512也能以每秒4600萬次計算進行破解, 儘管被破解的速度較慢,但是仍有安全上的疑慮。
通常駭客如果取得了大量的加密字串,需要先猜測出你使用的是哪一種SALT, 如果所有的密碼都採用相同的SALT,那麼一但破解第一組,代表其他密碼也就能順而進行破解
現在,PHP提供的 password_hash 可以達到隨機生成處理 SALT, 因此就連開發者也不會知道每次加密會使用甚麼SALT, 這樣當駭客想要進行破解,成本就當然會更高
Continue Reading早期,常使用 md5, sha1 雜湊(hash)來進行加密,
但是md5已經能成功破解,及sha1 (, sha0) 都有理論的破解方式,因此還是推薦使用其他可替換的加密演算法。
Continue Reading這裡簡單介紹如何直接透過PHP 內建 web server,預覽網站的方式
但是還是建議透過 apache, nginx…等 web server 比較好
PHP 啟用內建 web server 使用方式:
> php -S localhost:8000
PHP 7.2.3 Development Server started at Sat Mar 31 08:39:18 2018
Listening on http://localhost:8010
Document root is C:\site
Press Ctrl-C to quit.
透過PHP的 substr 可以取得字串中的部分字元,並且可以指定長度
語法格式如下:
<?php
//string substr( string $string , int $start [, int $length ] )
substr('原始字串' , 開始位置 ,要取得的長度 );
下方紀錄一些用法
<?php
echo substr('abcdef', 1); // bcdef
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 4); // abcd
echo substr('abcdef', 0, 8); // abcdef
從最後方開始取得字串的方式,可以把 start 的參數設定為負值即可
<?php
$rest = substr("abcdef", -1); // returns "f"
$rest = substr("abcdef", -2); // returns "ef"
$rest = substr("abcdef", -3, 1); // returns "d"
length 設定為負數,會從後面開始算終結點 例如 start 0, length -1 - 從第一次元開始,至倒數一字元
<?php
$rest = substr("abcdef", 0, -1); // returns "abcde" 從第1次元開始,至倒數2字元
$rest = substr("abcdef", 2, -1); // returns "cde" 從第3次元開始,至倒數2字元
$rest = substr("abcdef", 4, -4); // returns false 從第5次元開始,至倒數5字元 ---> 區間不對會發生錯誤
$rest = substr("abcdef", -3, -1); // returns "de"
First, make sure php.ini php_socket extension is opened remove ; and restart http server php.ini
...
extension=php_sockets.dll
...
Writing your servier side code as fellowing: php_socket_server.php
Continue ReadingPHP Mailer是其中一個最受歡迎的郵件程式庫,普遍被應用在各種流行框架 WordPress,Drupal,1CRM,SugarCRM,Yii,Joomla!…等。 卻在日前,由 Dawid Golunski 發現在 v 5.2.18 版本存在一個高度危險漏洞,能允許攻擊者在遠端執行程式代碼。漏洞編號為 CVE-2016-10033
Continue Reading通常在租用主機環境,都會處理好mail server所需的相關設定,
如果在開發過程中,可以在local端就能測試寄發email效果,對開發者而言,一定會更加方便
因此,本文主要說明在 windows 本地 localhost( 127.0.0.1)
如何使用 phpmailer 來透過 GMAIL SMTP server 寄信
Slim : 適合前後端分家,後端只用來寫 RESTful API 的 framework。
http://www.9lessons.info/2012/05/create-restful-services-api-in-php.html http://www.9lessons.info/2014/12/create-restful-services-using-slim-php.html http://asika.windspeaker.co/post/3495-php-slim-framework-twig
##其他API參考 http://www.html5rocks.com/en/tutorials/cors/ 現在越來越多人認可這種“一次開發,處處運行”的非原生APP開發了,我們在平時開發中常用的兩套技術棧:1、CoreThink + dcloud + framework7 + cors;2、Ionic+Cordova +CoreThink,全都是開源技術,上手無壓力,之前我們也在OSC上分享過: 非原生App開發的基本步驟(移動端:ionic、cordova,後端:CoreThink)歡迎交流,非原生APP上架蘋果APP store http://www.dcloud.io/index.html
可以事情況決定安裝哪個版本 3.0 http://www.slimframework.com/docs/ Slim 3 requires PHP 5.5+ 2.0 http://docs.slimframework.com/ Requires PHP 5.3.0 or newer.
建立資料夾以及composer.json檔案
//composer.json
{
"require": {
"slim/slim": "~2.0"
}
}
執行composer
composer install
//如果安裝一直沒有動靜,請留意是否要更新composer版本
//如果有,請按照指示更新
composer require slim/slim "^3.0"
從這裡複製資料夾 composer/vendor/slim/slim/Slim 這個資料就是Slim的程式包 將他單獨複製到新的資料夾即可單獨安裝Slim
事情況以及習慣,首先下面是composer中引用slim的方法
<?php
//引用 vendor/autoload.php
require('vendor/autoload.php');
?>
底下則是直接引用Slim
<?php
require('Slim/Slim.php');
\Slim\Slim::registerAutoloader();
?>
後續範例都會以composer引用的為主。
Continue Reading